我正在尝试为关系数据库布置概念,并遇到了一些概念问题:
老板可以拥有多名员工。这些员工拥有不同的项目,而一个项目又有多个部分。
所以
B1-Bn:
E1-En
P1-Pn
Section1 -SectionN
如何在数据库中最好地映射?
或者换句话说,如何在关系数据库中最好地映射此层次结构?
老板们满足了他们 然后他们决定哪个员工会为他们工作。 然后为他们分配项目,包含一个或多个部分。
如何最好地映射。
由于1-n关系,这是一个外键。 由于m-n关系,这是一个ManytoManyField。
非常感谢您的时间!
答案 0 :(得分:1)
您可能希望学习关系数据库设计课程;这个主题需要花费几天时间来解释或掌握。但是你走在正确的轨道上。
您可能会看到的第一件事是层次结构,但在您知道它之前会存在不是分层的关系,因此形成了一个网络。 这就是关系数据库不能与层次结构一起使用的原因。
您可以识别不同类型的实体,并为每种类型设置一个表。
对于每个实体类型,您可以标识此类实体的属性 - 每个属性都是表的一列。 如果属性没有原子值,而是结构化值,则必须将这些结构化值视为实体,并且必须为其提供自己的表,并且该属性将是引用该表的外键。
通过这种方式,您将形成一个由外键链接的表网络。这称为实体关系图。许多设计者主张首先创建这样的图,而不直接将实体类型映射到表。它们允许图中实体类型之间的多对多关系。另一方面,表之间的外键总是多对1或1对1。因此,这些设计人员有一个“实现”步骤,在这个步骤中,他们为每个多对多关系引入了一个附加表。就个人而言,我不会在我的图表中使用多对多关系。