答案 0 :(得分:0)
为什么你需要在两者中都有ID?
[媒体] - > Id,LessonId,Name,...
[课程] - > Id,Name,...
您可以通过联接查询从课程中获取媒体。
答案 1 :(得分:0)
TL; DR了解设计。读一本教科书。致力于特定的设计方法。这种设计表明你仍然需要学习基础知识。
您的设计不太可能合适。我们不能说,因为你没有告诉我们足够的。在您的设计中,媒体(可能)"有一个"课程(无论你的意思是什么)和一堂课(也许)"有一个"媒体(无论你的意思是什么)。你的其他信息表明你可能想要一个关于媒体的表格,一个关于课程的表格以及一些关于某些应用程序关系/关联的表格,你还没有解释过这些关系/关联,并且有一个"有一个"。您使用引用其他表的可空FK可能不合适,但适当的取决于表的含义。
行进入其中任何一个表的应用程序标准是什么?您需要首先识别您感兴趣的应用程序关系,并确定每个特征谓词 - 填写(命名)空白语句由列名参数化的模板 - 当一行在其表中时成为真实的语句。
直接设计的设计可能是(如果每个媒体,课程和类型都有一个名称):
Media(mname,tname) -- media MNAME is of type TNAME
PK(mname)
Lesson(lname) -- lesson LNAME exists
PK (lname)
Whatever(lname, mname) -- blah lesson LNAME blah blah media MNAME blah
PK (lname, mname)
FK (lname) references Lesson
FK (mname) references Media
如果你想要ID(为什么?):
Media(mid, name, tid)
PK (mid)
FK (tid) references Type
Type(tid, name)
PK(tid)
Lesson(lid, name)
PK(lid)
Whatever(mid,lid)
FK (lid) references Lesson
FK (mid) references Media
ER设计方法将调用Media,Lesson和Type实体表以及无论是关系还是关联表。
"基数"意思是不同的东西,在不同的设计方法中有不同的描述你在用哪一个?
更一般地说,您需要告诉我们在给定应用程序的情况下,表值必须具有哪些约束才能有意义。 FK约束表示表中列列表中的值也必须出现在某个其他位置。如果一个盖子和mid参加Whatever,那个盖子可能会与另一个中间人分开吗?反之亦然? Lesson / Media中的每个lid / mid是否必须出现在Whatever中? constaints 跟随选择的谓词以及可能出现的应用情况。
如果某些约束成立,您可能需要重新排列表格以记录相同的信息但更容易强制它们保持,或者使新设计的约束更简单,和/或制作新的约束设计表格更简单。