首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能代表一种基数关系--多对多?

我怎样才能代表一种基数关系--多对多?
EN

Database Administration用户
提问于 2017-03-09 07:56:51
回答 1查看 277关注 0票数 1

我试图为下表所示的信息设计一个数据库:

在这方面,让我们作出以下假设:

  1. 每个学生可以选修许多课程
  2. 每门课程可能有很多学生。
  3. 学生人数、课程编号和顾问名称是唯一的
  4. 学生的名字和课程描述并不是唯一的。
  5. 每个学生都有一个顾问
  6. 每一位顾问都会向许多学生提供建议
  7. 每个顾问都有一个办公室
  8. 学生可以多次拜访他的导师

我现在的方法

到目前为止,我已经提出了以下图示:

问题

由于这包含多到多(M:N)关系,我对关联类(或关联实体类型)应该是什么感到困惑。

这种关系的正确表达方式是什么?

EN

回答 1

Database Administration用户

发布于 2017-03-11 02:34:38

您可以有一个Course表,它只包含课程和描述。

如注释中所述,您可以拥有一个StudentCourse表,该表有一个代理PK,其中有StudentCourse的外键,也可以有一个包含学生年级的复合PK (StudentNumber和CourseNumber)。

类似地,您可以拥有一个Office表并将Office链接回顾问。这将允许多个顾问拥有相同的办公室,而不必多次保存该办公室名称(例如,如果办公室名称更改了怎么办?)

正如前面提到的,使用顾问名称作为主键可能不是最好的,它们的名称可能会更改;您可能会更好地使用代理键(可能是整数吗?)就为了这个。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/166646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档