我有以下表格:
Users
_____
UserID
Data
...
Roles
_____
RoleID
Data
...
UsersRoles
_____
UserID
RoleID
Users
并且Roles
处于 M:N 关系中。因此,我有UsersRoles
连接它们的表。
没有连接到前面提到的表,我还创建了以下表:
Invoices
_____
InvoiceID
Data
...
Items
_____
ItemID
InvoiceID
Data
...
在这种情况下,我没有创建额外的表,因为我在这里实现了 1:N 关系。我的问题是,如果我有任何理由删除InvoiceID
fromItems
并创建一个InvoicesItems
类似于UsersRoles
连接它们的表的表,即使我不需要它。
不,如果您添加它而不期望需要它,那么它仅用于:
另一方面,如果您认为将来可能需要将关系变为多对多,例如,由于部分付款或退款,一个行项目出现在多张发票上,那么可能存在现在添加额外结构以节省以后的重构工作的情况,但由于上述原因,我会谨慎地从一开始就添加它,除非我非常确定很快就会需要它。
如果您确实添加了额外的结构,但还不想让多对多成为一件事,那么您需要额外的工作来定义强制执行所需的一对多行为的约束,直到不再需要它为止。
少数设计师做出这种选择的原因有两个。
这些原因中的任何一个是否合理都有些主观。