Cin*_*y93 7 mysql sql database database-design
我对这两种结构非常困惑.这两张表有什么优缺点?哪一个更好,为什么?
表格1
id, name, age, birthdate, address
somedata1 somedata1 somedata1 somedata1 somedata1
somedata2 somedata2 somedata2 somedata2 somedata2
somedata3 somedata3 somedata3 somedata3 somedata3
Run Code Online (Sandbox Code Playgroud)
TABLE2
id, col_name, col_value
somedata name somedata
somedata age somedata
somedata birthdate somedata
somedata address somedata
somedata2 name somedata2
somedata2 age somedata2
somedata2 birthdate somedata2
somedata2 address somedata2
somedata3 name somedata3
somedata3 age somedata3
somedata3 birthdate somedata3
somedata3 address somedata3
Run Code Online (Sandbox Code Playgroud)
Alm*_* Do 18
通常情况下,第二个表是数据库设计背景下的反模式.而且,更具体的是,它具有特定的名称:实体 - 属性 - 值(EAV).在某些情况下,使用这种设计是合理的,但这种情况很少见 - 甚至可以避免.
数据完整性支持
尽管事实上,这种结构似乎更"灵活"或"先进",但这种设计存在缺陷.
"customer_name"在第一种情况下写为属性名称 - 而另一位开发人员将忘记并使用"name_of_customer".并且......没关系,DB会通过它,你将花费数小时调试这个案例.行重建
另外,在一般情况下,行重建会很糟糕.例如,如果您有5个属性 - 那将是5个自助表JOIN.这种简单 - 乍一看 - 太糟糕了.所以我甚至不想想你将如何保持20个属性.
我的观点是 - 不.在RDBMS中总会有一种方法可以避免这种情况.这太糟糕了.如果打算使用EAV,那么最佳选择可能是非关系型数据库.
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |