PostgreSQL简单密钥vs复合密钥

时间:2014-10-22 13:38:53

标签: postgresql tree hierarchy composite-primary-key

我们将在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查询更快)以及为什么? 谢谢。

1 个答案:

答案 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