|
|
1
1
看起来您正在尝试将实体属性值作为一种设计来复制,这会导致许多难看的表(好吧,通常情况下,它是一个用于所有内容的单一表)。 http://en.wikipedia.org/wiki/Entity-attribute-value_model http://ycmi.med.yale.edu/nadkarni/Introduction%20to%20EAV%20systems.htm 讨论EAV往往会导致“宗教战争”,因为很少有好的地方可以使用它(许多人说没有好的地方),还有一些人认为,因为它是如此的灵活,应该在任何地方使用。如果我能找到我要找的参考资料,我会把它加到这个上面。 |
|
|
2
1
在数据库模型中使用继承的最简单方法是使用ORM工具。对于python,有sqlacalchemy、django等。 现在你应该想知道,比如福特野马是一种汽车,还是汽车的一个实例。在前一种情况下,您应该创建一个定义福特野马属性的福特野马表。然后,福特野马表还应该有一个到汽车表的外键,其中指定了每个福特野马的通用属性。在后一种情况下,每种汽车只是汽车表中的一行。无论采用哪种方式,每个属性都应该表示为一列。 属性的验证通常在应用程序的业务逻辑中完成。 |
|
|
3
1
有一个学派认为,任何在RDBMS中构建EAV模型的尝试都是“糟糕的设计”,但我们不会去那里。哎呀,看来已经有人做过了。 我不知道你担心什么。 特定属性2特定项 是交叉表(线索在名称中)。它必然包含到 属性 以及 具体项目 .怎么会不呢? 你可能需要一个minval和一个maxval 特定属性2特定项 ,因为某些项目的范围比 通用项 . 例如,每个人都知道法拉利应该只有红色的。 |
|
|
4
1
两种想法: 首先,您应该考虑将“genericgroups”表设置为“attribute”,而不是将其悬停在其余数据之上。 第二,让每个属性表实际保存项目的属性可能会更容易,而不仅仅是属性的概念。如果要有一个范围,可以考虑使用枚举类型(对于项名称)或简单地使用一个设置了最大值的整数(因此颜色值列的值不能超过255)。这样你最终会得到一些更像:
|
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |