我的问题非常类似于问题,但我不想使用EAV设计
现在,我们商店里有这些产品。
硬盘->size(GB),速度,价格
衬衫->号(M-L-S),颜色,价格
书页->编号,作者,价格
为了设计数据库,我正在尝试使用继承方法。
产品(SN,Odrer,价格,日期)
子表
硬盘->size(GB),速度
->号→衬衫(M-L-S),颜色
->→nummber of page,作者
乘积和子表具有一对一的关系
但是如果将来新产品具有不同的属性,我将创建新的表。
,这是正确的做法,还是有更好的做法?
我应该使用实体属性值模型吗?
->Even --如果我将使用EAV设计,而我仍然使用新的实体和属性更新代码?
->Design complexity===high
->readablity===low
->query cost===high
请帮助/建议我做一个更好的设计?
发布于 2017-09-26 18:12:01
有关设计数据库的决定必须根据您想要查询数据的方式作出。
如果您要同时查询所有产品(所有类型的产品),那么我建议您将所有产品放在一个表中(第二个解决方案)。如果您的大多数查询都必须返回有关单一类型产品的信息,那么只有一种关系的解决方案会更好。
但是通常,当结构发生动态变化时,NoSQL数据库是最好的选择。
您甚至可以尝试拥有一个包含两个部分的表。
在一些关系数据库管理系统中,您还可以在JSON列(例如PostgreSQL)上创建索引,以便在检索数据时具有更好的性能。
https://dba.stackexchange.com/questions/186900
复制相似问题