在我的模型中,我有几个到多个关系,包括一个客户、一个订阅、一个课程:
我已经有三个表列出了所有的客户,订阅计划和课程。在不重复大量数据的情况下,实现多到多关系的最佳方法是什么?
发布于 2011-03-10 12:49:20
使用4张表格:
Client (PK: ClientID)
Subscription (PK: SubscriptionID, FK: ClientID)
Course (PK: CourseID)
Subscription_Course (PK: Subscription_Course, FK: SubscriptionID, CourseID)PK=Primary键,FK=Foreign键。
以下是两国关系:
Client -> Subscription (1:n)
Subscription -> Subscription_Course (1:n)
Course -> Subscription_Course (1:n)说明:每个订阅都是针对一个客户端的,因此这两个客户端之间存在1:n关系。但同一课程可以由不同的客户通过不同的订阅多次预订,因此在课程和订阅之间存在n:m关系,由链接表Subscription_Course解决。
如果需要,可以在该模型上添加其他约束,例如,在(SubscriptionID, CourseID)上Subscription_Course中添加一个唯一的键约束。
发布于 2011-03-10 13:34:08

Note
ClientSubscriptionNo是每个客户端的订阅号(1,2,3.);当为客户端创建新订阅时,可以使用
select coalesce(max(ClientSubscriptionNo), 0) + 1
from Subscription
where ClientID = the_client_id你可以决定也可以不决定:
alter table SubscriptionItem
add constraint uq1_SubscriptionItem unique (ClientID, CourseID);发布于 2011-03-10 12:49:05
一个表带有clientId,subscriptionId,另一个表有subscriptionId和courseId
https://stackoverflow.com/questions/5259736
复制相似问题