这是一个更理论的问题,而不是特定的场景:
假设,我们有一个这样的简化表格方案:
items
包含一些基本数据,item_data
每个项目的附加属性rel_items
设置不同项目之间的树关系。有不同类型的项目(由字段表示items.item_type
),其中存储了不同的字段item_data
,例如:狗、猫、老鼠。
如果我们有一些更大的查询,其中包含一些连接和连词(例如获取项目及其父项目与其他项目有一些条件等),与将所有不同类型的项目拆分到单独的表(dog
,cat
, mouse
) 而不是将它们合并成一个?
如果我们将它们全部保存在一个基本项目表中,创建视图(狗、猫、鼠标)会以某种方式影响性能吗?
编辑(如下评论):我认为“物种”、“家养宠物”等是 item_types。每种类型都有不同的属性。使用基本 item 表和 item_data 表的目的是拥有一个基本的“对象”并根据需要将尽可能多的属性附加到它们,而无需修改数据库方案。例如,我不知道应用程序中会有多少动物以及它们有什么属性,所以我想到了一个不需要每次用户创建新动物时都更改的数据库方案。