数据库设计中“ n: m”和“1: n”的含义

在数据库设计中,N: m1: n是什么意思?

这和钥匙或者人际关系有关系吗?

222567 次浏览

m:n用于表示多对多关系(m对象在另一侧与 n相关) ,而 1:n则表示一对多关系(1对象在另一侧与 n相关)。

多对多(n: m) 一对多(1: n)

1:n表示“一对多”; 您有两个表,表 A 的每一行可以被表 B 中任意数量的行引用,但是表 B 中的每一行只能引用表 A 中的一行(或者根本不引用)。

n:m(或 n:n)表示“多对多”; 表 A 中的每一行可以引用表 B 中的许多行,表 B 中的每一行可以引用表 A 中的许多行。

1:n关系通常使用简单的外键建模-表 A 中的一列引用表 B 中的类似列,通常是主键。由于主键只唯一地标识一行,因此表 A 中的许多行都可以引用该行,但是表 A 中的每一行只能引用表 B 中的一行。

n:m关系不能这样处理; 常见的解决方案是使用包含两个外键列的链接表,每个外键列对应一个链接表。对于表 A 和表 B 之间的每个引用,将在链接表中插入一行,其中包含相应行的 ID。

为了通过示例解释这两个概念,假设您有一个书店的订单输入系统。订单到项目的映射是多对多(n: m) ,因为每个订单可以有多个项目,并且每个项目可以按多个订单排序。另一方面,客户和订单之间的查找是一对多(1: n) ,因为一个客户可以下多个订单,但是一个订单永远不会针对多个客户。

N: m —— > 如果你不知道 n 和 m,那么它只是多对多,并且它由一个桥表表示在另外两个表之间,比如

   -- This table will hold our phone calls.
CREATE TABLE dbo.PhoneCalls
(
ID INT IDENTITY(1, 1) NOT NULL,
CallTime DATETIME NOT NULL DEFAULT GETDATE(),
CallerPhoneNumber CHAR(10) NOT NULL
)


-- This table will hold our "tickets" (or cases).
CREATE TABLE dbo.Tickets
(
ID INT IDENTITY(1, 1) NOT NULL,
CreatedTime DATETIME NOT NULL DEFAULT GETDATE(),
Subject VARCHAR(250) NOT NULL,
Notes VARCHAR(8000) NOT NULL,
Completed BIT NOT NULL DEFAULT 0
)

这是用于实现两个表之间映射的桥表

CREATE TABLE dbo.PhoneCalls_Tickets
(
PhoneCallID INT NOT NULL,
TicketID INT NOT NULL
)

One to Many (1: n)就是一个表,其中一个列作为主键,另一个表将该列作为外键关系

类似于产品和产品类别,其中一个产品类别可以有多个产品

在关系数据库中,所有类型的关系都以相同的方式表示: 即关系。每个关系的候选关键字(可能还有其他约束)决定了所表示的关系类型。1: n 和 m: n 是两种二元关系:

C {Employee*,Company}
B {Book*,Author*}

在每种情况下 * 指定键属性。{ Book,Author }是复合键。

C 是一种关系,其中每个员工只为 公司工作,但每个公司可能有 很多员工(1: n) : B 是一种关系,一本书可以有 很多的作者,一个作者可以写 很多的书(m: n) :

请注意,关键约束确保每个雇员只能与一家公司关联,而任何书籍和作者的组合都是允许的。

其他类型的关系也是可能的: n 元(有两个以上的组成部分) ; 固定基数(m: n,其中 m 和 n 是固定常数或范围) ; 方向性; 等等。William Kent 在他的《数据与现实》一书中指出至少有432种——这还只是二元关系。在实践中,二进制关系1: n 和 m: n 非常常见,通常在设计和理解数据模型时特别重要。

M: n 表示多对多的关系,而1: n 表示一对多的关系。

例如:

雇员(ID,姓名,技能集)

技能集(身份证,技能名称,资格证书)

在这种情况下,一个员工可以有很多技能,而忽略其他情况,你可以说这是一个1: N 的关系

实体关系图中关系线上的字母“ N”是什么意思? 任何号码

M: N

M- 序数-描述最小值(序数与强制值)

N- 基数-描述最大值

1: N (n = 0,1,2,3...)1到0或更多

M: N (m 和 n = 0,1,2,3...)0到0或者更多(多到多)

一对一

你可在此找到更多资料: Https://www.smartdraw.com/entity-relationship-diagram/

假设你有一个 模型和一个 翻页模型,

1:N means:
One book can have **many** pages. One page can only be in **one** book.




N:N means:
One book can have **many** pages. And one page can be in **many** books.