我参与了一个为项目中的人力资源创建知识库的项目。在对问题的一小部分进行 ER 模型时,一个疑问向我袭来:考虑到效率、良好的设计实践和数据库规范化,这是建模它的首选方式。该应用程序将在 .NET 中开发,但可以使用例如 php 进行查询。我们有 4 个级别的实体代表我们的知识库:
1 Supertopics
1.1 Topics
1.1.1 Subtopics
1.1.1.1 knowledge
我是两种可能的关系实现之一:
选项 1 - 如果使用弱实体,每个表将有一个组合键:一个唯一的 Id 加上之前级别的外表的键。由于复制所有先前级别的键,因此使用此模型制作复杂的报告似乎更好。
- 超级主题(IDSupertopic,...)
- 主题(IDSupertopic,IDTopic,...)
- 子主题(IDSupertopic,IDTopic,IDSubtopic,...)
- 知识(IDSupertopic、IDTopic、IDSubtopic、IDKnowledge...)
选项 2 - 如果使用强实体,每个表将有一个简单的唯一键,以及来自上一级对象(表)的外键。由于表键的简化,管理这种模型似乎更容易。
- supertopic (ConsecutiveKey,...)
- Topic (ConsecutiveKey, IDSupertopic, ...)
- subtopic(ConsecutiveKey, IDTopic...)
- knowledge(ConsecutiveKey, IDSubtopic...).
谁能给我一些与每种可能性的优缺点相关的建议?