使用值制作数据透视表是错误的选择吗?

我对设计新的数据库表有疑问。是否可以像 ID 一样存储数据?


假设我有一张桌子:


ID   type

1    client_id

2    item_id

3    price

4    date

像这样制作表格会出什么问题:


ID   transaction   foreign_id   data

1    222           1            14

2    222           2            25

3    222           3            $255

4    222           4            5/17/2020

5    528           1            14

6    528           2            187

7    528           3            $14

8    528           4            5/16/2020 

ETC..


我要制作一个更大的数据库,其中可能超过 20 列。我在想这是否是一个(更好的)解决方案。这个结构有什么可能出错的地方吗?


PS:Postgre 数据库


ABOUTYOU
浏览 101回答 1
1回答

RISEBY

您正在描述实体-属性-值模型。我实际上不会推荐这个,因为它有很多陷阱,例如:不能强制属性名称的完整性(如果有人创建了一个名为 的新属性id_client,而该client_id属性已经存在怎么办?)所有值都存储在单个列中,因此您不能为每个属性使用正确的 sql 数据类型(如果有人设置日期怎么办2020-00-00?)不可能强制执行强制属性的概念,或任何其他类型的约束另一方面,通过创建具有相关列数、具有适当数据类型和not null约束的表,可以妥善管理上述所有要点。20 列并不多——在使用关系表时,替代解决方案是可能的,例如继承。
打开App,查看更多内容
随时随地看视频慕课网APP