我必须建立一个允许完全模块化结构的数据库结构。我们举个例子,会更容易理解。
我们有一个网站记录,如下所示:
WEBSITE A
| ----- SECTION A
| |-- SUBSECTION 1
| | | -- Data 1 : Value 1
| | | -- Data 2 : Value 2
| | | ...
| | | -- Data N : Value N
| |
| |-- SUBSECTION 2
| | | -- Data 52 : Value 1
| | | -- Data 53 : Value 2
| | | ...
| | | -- Data M : Value M
| |
| ...
|
| ----- SECTION B
| |
| ...
...
型号 1:
等等。问题是我必须实施权限系统。例如,用户 A 可以从网站 1 访问 A、B、D、Z 部分,而用户 2 可以从网站 2 访问部分 C、V、W、X。首先,我认为将其构建为树将是最有效的方法。这是我的第一个数据库表示:
TABLE website (id, id_client, name, address)
TABLE section (id, id_website, name)
TABLE sub_section (id, id_section, name)
TABLE data (id, id_sub_section, key, value)
使用这种表示,很容易为员工提供一些受限的访问权限。但是,两个网站都有共同的数据。例如,所有网站的 A、B、C、D 部分都具有相同的结构。这意味着大量的冗余。对于每个网站,我们都会有很多共同的结构,唯一的区别是 TABLE 数据中的属性值。
第二个问题是这种结构必须完全模块化。例如,管理员应该能够向网站记录添加部分、子部分或数据。这就是为什么我认为这个模型更容易管理的原因。
型号 2:
我有第二个模型,更容易存储但更难利用:
TABLE website (id, id_client, Value 1, Value 2, Value 3 ... Value N)
TABLE section (id, name, Data 1, Data 2, Data 3 .. Data N, ..., Data 52, Data 53, Data M) (it represents the name of the columns)
TABLE subsection (id, id_section, name, Data 1, Data 2, Data N)
通过这样做,我有一个存储数据的表和两个网站共有的部分和子部分的“结构表”。如果管理员想要添加一个部分/子部分,我们将返回树结构来存储附加数据,如下所示:
TABLE additional_section (id,id_website,name)
TABLE additionnal_subsection (id,id_section, id_additional_section, name)
TABLE additional_data (id, id_subsection, id_additionnal_subsection, key, value)
它避免了很多冗余并便于权限管理。
这是我的问题:
这种应用程序的最佳模型是什么?模型 1?模型 2?另一个 ?感谢您的阅读和您的回答!