在数据库设计中,n:m和1:n是什么意思?
它与键或关系有什么关系吗?
m:n
用于表示多对多关系(m
另一侧的对象与另一侧相关n
),而1:n
指的是一对多关系(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 --> 如果你不知道 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
)
一对多 (1:n) 只是一个以列作为主键的表和另一个以该列作为外键关系的表
有点像产品和产品类别,其中一个产品类别可以有许多产品
在关系数据库中,所有类型的关系都以相同的方式表示:作为关系。每个关系的候选键(以及可能还有其他约束)决定了所表示的关系类型。1:n 和 m:n 是两种二元关系:
C {Employee*,Company}
B {Book*,Author*}
在每种情况下,* 表示关键属性。{Book,Author} 是一个复合键。
C 是一种关系,其中每个员工只为一家公司工作,但每个公司可能有很多员工 (1:n): B 是一种关系,其中一本书可以有很多作者,而一个作者可以写很多书 (m:n):
请注意,关键约束确保每个员工只能与一家公司相关联,而允许书籍和作者的任意组合。
其他类型的关系也是可能的:n-ary(具有两个以上的组件);固定基数(m:n,其中 m 和 n 是固定常数或范围);定向; 等等。威廉·肯特在他的《数据与现实》一书中确定了至少 432 种——这只是针对二元关系。在实践中,二元关系 1:n 和 m:n 非常常见,并且通常被认为在设计和理解数据模型中特别重要。
为了通过示例解释这两个概念,假设您有一个书店的订单输入系统。订单到商品的映射是多对多(n:m),因为每个订单可以有多个商品,每个商品可以由多个订单订购。另一方面,客户和订单之间的查找是一对多 (1:n),因为客户可以下多个订单,但订单永远不会超过一个客户。
实体关系图中关系线上的字母“N”是什么意思?任何数字
男:女
M - 序数 - 描述最小值(序数与强制)
N - 基数 - 描述混合
1:N (n=0,1,2,3...) 1 到 0 或更多
M:N (m and n=0,1,2,3...) 零或更多到零或更多(多对多)
1:1一对一
在此处查找更多信息: https ://www.smartdraw.com/entity-relationship-diagram/
多对多 (n:m) 一对多 (1:n)
假设你有一个Book模型和一个Page模型,
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.
m:n 指多对多关系,其中 1:n 表示一对多关系,例如雇员(id,name,skillset) Skillset(id,skillname,qualifications)
在这种情况下,一名员工可以拥有多种技能,而忽略其他情况,您可以说它是 1:N 关系