具有灵活组织结构的多租户应用程序的数据库设计

时间:2019-02-14 20:31:33

标签: database-design

我们正在构建具有灵活组织结构的多租户应用

  1. 组织结构可以有无限的级别
  2. 组织结构可以随时更改

我认为主要的组织结构可以是这样的自引用表:

+-------+-------------+----------+
| OrgId | OrgName     | ParentId |
+-------+-------------+----------+
|   1   | Runners     | NULL     |
+-------+-------------+----------+
|   2   | FastRunners | 1        |
+-------+-------------+----------+

一个版本表,其中的结构可以随时更改,FiscalYear字段基本上只允许将来的开发人员轻松查询报表等。将此称为版本表是否正确?还是细节?:

+-----------+-----------+------------+------------+
| VersionId | ValidFrom | ValidTo    | FiscalYear |
+-----------+-----------+------------+------------+
|     1     | 2019-1-14 | 2019-6-31  | 2018       |
+-----------+-----------+------------+------------+
|     2     | 2019-1-14 | 2019-6-31  | 2018       |
+-----------+-----------+------------+------------+
|     3     | 2019-7-1  | 9999-12-31 | 2019       |
+-----------+-----------+------------+------------+
|     4     | 2019-7-1  | 9999-12-31 | 2019       |
+-----------+-----------+------------+------------+

还有一个映射表,以便版本/明细表和主表不会紧密地绑在一起,以便于插入和更新:

+-----------+-------+
| VersionId | OrgId |
+-----------+-------+
|     1     |   1   |
+-----------+-------+
|     2     |   2   |
+-----------+-------+
|     3     |   1   |
+-----------+-------+
|     4     |   2   |
+-----------+-------+

您是否建议对此结构进行任何更改?是否有针对这种结构的警告?考虑到灵活的组织结构,我在自引用表方面没有太多经验,因此可以提供任何帮助。谢谢!

0 个答案:

没有答案