我有一张桌子:
course
---------
id_course
id_groupe (references a table named group)
id_module (references a table named module)
在我的情况下,许多团体可以共享课程。
我的问题是:
答案 0 :(得分:0)
如果你有一个可以被许多团体共享的课程,我会想到一个不同的设计,一个连接COURSE和GROUPE的关系表;这个表可以有一个复合PK,基于两个外键列:
COURSE
id_course PK
id_module KF references MODULE
MODULE
id_module PK
GROUPE
id_groupe PK
COURSE_REL_GROUPE
id_course FK references COURSE
id_groupe FK references GROUPE
PRIMARY KEY (id__course, id_groupe)
答案 1 :(得分:0)
让我们假设该课程有另一个属性 - 标题。
问自己这个问题:
如果A" A组"的成员正在改变该课程的名称。或者" B组"?
对于大多数院校来说,一门课程将有一套标题,无论是谁参加该课程,所以使用你的桌面结构,你必须在每个课程/小组组合中复制标题,并打破数据库规范化的概念。
您最好将表格拆分为两个表格:
course
---------
id_course (Primary Key)
title
course_group
------------
id_course (FK referencing course) } composite PK
id_groupe (FK referencing groupe) }
然后您可以设置课程的标题,它独立于与课程相关的组。当然,您可以在course_group
表上有一个复合主键,其中包含两个ID以强制执行唯一性。