作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个相当常见的场景,用户可以从一组属性中进行选择。 UI 中的属性由复选框表示。
例如:
组件:硬盘(y/n)、CPU(y/n)、显示器(y/n)、键盘(y/n)等......
过去,我通常对这种情况进行建模:
"PCs" 1:M "PC Components" M:1 "Components"
PCs (table)
-----------
PCId(PK)
Harddrive(y/n)
CPU(y/n)
etc...
最佳答案
人们很想设计一个更“紧凑”的数据模型(每个属性不是一列),因为属性具有兼容的数据类型(它们都是 y/n)。
如果每个属性都有不同的数据类型,例如,如果它们被限制为使用不同查找表的一组值,那么您必须为每个属性使用一列是显而易见的。
见 Domain-Key Normal Form .将 y/n 属性建模为行意味着无法表示强制性属性(必须具有 Y 或 N 值)。所以你会有一些限制,即 N 个属性必须有 N 行。对最小行数的约束既不是域约束也不是键约束,因此它没有通过 DKNF 测试。
没有必要每个表都必须符合 DKNF,但是如果您问什么术语描述了每个属性的列的设计,我建议“域/键范式”适合。
关于database-design - 在数据库中建模是/否属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302904/
我是一名优秀的程序员,十分优秀!