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