我有三个实体:
每个“课程”都由几个“课程”组成。课程中的“课程”,可以分为“部分”,也可以不归为“部分”。
因此,一门课程的内容可以是这样的:
Foo Course:
Lesson 1
Lesson 2
Lesson 3
Lesson 4或者像这样:
Bar Course:
Section 1:
Lesson 1
Lesson 2
Section 2:
Lesson 3
Lesson 4因此,换句话说,一门课程可以直接上“课”,也可以有“节”,而“节”又有“课”。
从另一个角度来看,“课程”可以直接属于“课程”,也可以属于“部分”,而“部分”又属于“课程”。
我很难在关系数据库中实现这个结构。
如果每个“课程”都必须属于“区段”,那就很容易了,我只需拥有一个“课程”表、一个带有"CourseId“列的”区段“表和一个带有"SectionId”列的“课程”表。
但我的设想并不是那么简单。“部分”可能作为“课程”和若干“课程”之间的中间人存在,但也可能没有,在这种情况下,“课程”直接有课程,没有“章节”。
对于如何在关系数据库的上下文中理想地实现这样的结构,我将不胜感激。
谢谢。
发布于 2021-05-02 02:18:25
一般来说,当我需要在教科书中处理这种情况时,我会对作者“隐藏”一本书的完整结构。因此,对于您的情况,我将有以下结构:
Course
⇢ Section
⇢ Lesson这样,所有的课程至少有一个部分。这为课程作者提供了一定的灵活性,如果他们选择切换到(或从)课程⇢课程到课程⇢节⇢课程模型。它还大大简化了将使用的SQL查询,因为所有内容都是一致的。其他开发人员在被介绍到您的系统时会对此表示赞赏。
免责声明:我以编写教科书和在线学习软件为生,因此我的设计模式可能会因为与公共和私人机构合作的经验而产生偏差。
https://dba.stackexchange.com/questions/290868
复制相似问题