这两种表设计, 用哪种好?

2021-04-20 11:37:57 +08:00
 yuann72

有个规则表,需要判断规则适用于星期几
是采用方式 1 这种反范式的方式,还是创建一张一对多关联表的方式

方式 1

CREATE TABLE `xx_rule` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(255) DEFAULT '' COMMENT '规则内容(这个字段不是重点)',
  `week` varcahr(255) DEFAULT '' COMMENT '(重点字段)规则适用于星期几;逗号分割,如果星期一到星期天都适用则填:1,2,3,4,5,6,7',
  PRIMARY KEY (`id`)
);

方式 2

CREATE TABLE `xx_rule` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(255) DEFAULT '' COMMENT '规则内容(这个字段不是重点)',
  PRIMARY KEY (`id`)
);

CREATE TABLE `xx_rule_week` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rule_id` int(11) DEFAULT 0 COMMENT '规则表 ID',
  `week` int(11) DEFAULT 0 COMMENT '规则适用于星期几;填 1 表示星期一',
  PRIMARY KEY (`id`)
);
3589 次点击
所在节点    MySQL
22 条回复
nine
2021-04-20 19:43:20 +08:00
换 PostgreSQL 吧,array 类型解决你烦恼。
akira
2021-04-20 22:01:33 +08:00
CREATE TABLE `xx_rule_week` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`rule_id` int(11) DEFAULT 0 COMMENT '规则表 ID',
`sunday` int(11) DEFAULT 0 COMMENT '周日规则是否启用',
`monday` int(11) DEFAULT 0 COMMENT 周一'规则是否启用',
`tuesday` int(11) DEFAULT 0 COMMENT '周二规则是否启用',
...
`satday` int(11) DEFAULT 0 COMMENT '周六规则是否启用',

PRIMARY KEY (`id`)
);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/771862

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX