我们将在PostgreSQL中存储一些关于组织的信息(实际上这是一些实体,但我说“组织”只是为了清晰的结构)。每个组织有6个子级别。第一级 - 部门,第二级(内部部门) - 部门等。每个部门(就像部门和其他部门一样)可以具有唯一的名称。我们正在考虑像
这样的7个表表组织
id(主键) - 组织名称
表格level_1
id(主键) - organization_id(外键) - 名称
表格level_2
id(主键) - level_1_id(外键) - 名称
等
我们假设在低级别(2-6)我们可以为每个级别拥有数千个ob对象。 问题是我们应该如何构建主键 - 作为简单键(如上所述)或复合键。 F.i。
表格level_1
id(主键) - organization_id(主键) - 名称
表格level_2
id(主键) - level_1_id(主键) - 名称
等
哪种密钥类型更好(首先,SELECT查询更快)以及为什么? 谢谢。
答案 0 :(得分:1)
如果您需要添加关卡,您会怎么做?
不太可扩展......
你应该只有一张桌子。
Organizations
Id Parent_Id Name
数据样本:
1 NULL Corporation
2 1 Division_1
3 1 Division_2
4 2 Dept_1_of_Division_1
5 2 Dept_2_of_Division_1
6 3 Dept_1_of_Division_2
要查询此表,您需要使用WITH RECURSIVE