<强>根据定义,一个结表(桥表/链路表)被用于许多对多的关系,这样当用于

CREATE TABLE Users
(
UserLogin varchar(50) PRIMARY KEY,
UserPassword varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
)


CREATE TABLE Permissions
(
PermissionKey varchar(50) PRIMARY KEY,
PermissionDescription varchar(500) NOT NULL
)


--This is the junction table.
CREATE TABLE UserPermissions
(
UserLogin varchar(50) REFERENCES Users (UserLogin),
PermissionKey varchar(50) REFERENCES Permissions (PermissionKey),
PRIMARY KEY (UserLogin, PermissionKey)
)

<强> 但是不能它也可以很容易地对一对多的关系,如在本实施例中,其中一个用户与许多订单相关联的使用:

(我不明白数据库舒服,所以请纠正我,如果我有误解的东西。)

CREATE TABLE Users
(
UserLogin varchar(50) PRIMARY KEY,
UserPassword varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
)


CREATE TABLE Orders
(
OrderKey varchar(50) PRIMARY KEY,
OrderDescription varchar(500) NOT NULL
)


--This is the junction table.
CREATE TABLE UserOrders
(
UserLogin varchar(50) REFERENCES Users (UserLogin),
OrderKey varchar(50) REFERENCES Orders (OrderKey),
PRIMARY KEY (UserLogin, OrderKey)
)
有帮助吗?

解决方案

是,它仍然是可能的存储和执行一到许多在接线表的关系。

在您的例子中,你不执行在UserOrders结表中的任何约束,所以一个订单可以同时属于两个用户(假设这是不正确的)。要强制执行,你可以让OrderKeyUserOrders结表的主键(或者该列的唯一约束)。从技术上讲,这将刚刚成为多到一个,同时具有UserOrdersUsers之间关系的一到一个 OrdersUserOrders之间的关系。

我只能想到一个原因设计的多到一个的使用结台关系 - 如果你打算允许的许多一对多的中关系未来,不想处理数据迁移。但在此同时,你将支付存储和额外的表连接的成本。

其他提示

没有为什么一个结合表不能用于一对多的关系的任何原因。这个问题通常是一个表现。为什么让数据库加入一个额外的表时,没有必要?

这将是多到许多:

CREATE TABLE UserOrders
(UserLogin varchar(50) REFERENCES Users (UserLogin),
OrderKey varchar(50) REFERENCES Orders (OrderKey),
PRIMARY KEY (UserLogin, OrderKey));

这将是一个对多(一个用户具有许多订单):

CREATE TABLE UserOrders
(UserLogin varchar(50) REFERENCES Users (UserLogin),
OrderKey varchar(50) REFERENCES Orders (OrderKey),
PRIMARY KEY (OrderKey));

请注意在主键约束的差。

一旦你建立了一个表格,它真的没有一种类型的“结”表,“联想”的表格,“加入”表 - 它只是一个表

我们使用这些术语来描述为什么一个实体(和得到的表)中的溶液最初创建一个具体原因。关联实体的创建,最初,解决了许多一对多的情况。但这些表往往有自己的属性(如协会,该协会有原因的,等的时间)。所以,SQL服务器,Oracle或你的代码也没有理由知道为什么一个表的创建...只是它的一个表。

从技术角度来看,实在是没有一个关联表和任何其它表之间的任何差异。

因此,这些表格可以填写任何其他表可以发挥什么作用。大约有多么其他表也可以与他们没有规则。

可以执行德“一个”在你约束加入/结表添加一个唯一约束(或使之成为连接表的主键,因为只是属性附加伤害本身标识的关系)到为外键列以“多”方。那是因为你要在很多方面rwos只有一个关系和关系在连接/接线表中说明。

我觉得你得到了概念错误 - 这里是如果它能够帮助简单的解释: 为了实现两个表(比如A和B)之间的多对多的关系,我们需要结合表(比如,表三),这将有两个表的一对多关系的帮助A和B

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top