实体关系指定与数据库基数

时间:2014-10-19 17:12:53

标签: database model relationship erd

我们必须区分实体关系。

我有一个问题需要理解:

关系一对多或一对多(1:M)与1:N相同吗? 并且,M:N与N:M相同?

为什么不称为M:M(多个到多个)?

1 个答案:

答案 0 :(得分:0)

确定和说明数据库中的关系有很多不同的术语和符号。以下是快速摘要:

一对多

此术语用于表示1:n关系(如果是可选的话,则用于0:n)。例如,一位作者(父实体)写了许多书(子实体)。

这可以这样建模:

+--------------+  +--------------+
| Author       |  | Book         |
+--------------+  +--------------+
| PK  AuthorId |  | PK  BookId   |
|     Name     |  |     Title    |
|              |  |     ISBN     |
+--------------+  | FK  AuthorId |
                  +--------------+

多对一

这与1:n(或0:n)相同,但是从子实体的角度来看。例如,一位作者写的很多书。

多对多

这在数据库术语中被创造为n:m。例如,两个或更多作者可能是一本书或许多书籍的合作者。

对这种关系进行建模的一种非常常见的方法是使用第三个表来链接两个实体之间的所有不同关系。在这种情况下,你可能会得到这样的结果:

+--------------+  +--------------+  +--------------+
| Author       |  | AuthorBook   |  | Book         |
+--------------+  +--------------+  +--------------+       
| PK  AuthorId |  | FK  AuthorId |  | PK  BookId   |   
|     Name     |  | FK  BookId   |  |     Title    |      
|              |  +--------------+  |     ISBN     |
+--------------+                    +--------------+

其中AuthorBook的复合主键包含AuthorIdBookId

顺便说一句,我从来没有听说过多个到多个这个词。