正确使用关联类

时间:2017-05-26 16:43:03

标签: database database-design uml relational-database class-diagram

我是使用UML的新手,我不确定我的图表是否正确。我想从比我更有经验的人那里得到一些建议。

我的问题陈述说:

  

学生学习课程,每个学生可以参加几门课程“学习”。任何课程都可以有不止一个学生学习它。

     

通过数字代码识别的学生有姓名,出生日期和一个或多个国籍。   学习的学生可以获得奖学金。

     

学生每门课程可以获得一个以上的奖学金。和   个人奖学金可以授予一个以上的学生。该   奖学金有一个数字代码,用来标识它们,一个名字,一个   基数和不同的条件   任务。

我的建议如下: enter image description here

我想要的是代表学生,助学金和学生所接受的课程,我不确定是否应该使用联想关系或三元关系。

有人可以确认我的提案UML图是否合适?

3 个答案:

答案 0 :(得分:1)

几乎。菱形(或菱形)形状的元素本身是一个关联类,它将所有连接的类关联起来。您希望它是<div class="parent"> <div class="back"> back </div> <div class="front"> front </div> </div>Student之间的简单关联类,如下所示:

enter image description here

Studies代表学生在特定研究中通过的考试。关联类关系由链接到关联的虚线表示(具有m-n多重性)。

答案 1 :(得分:1)

与学生,课程和学生直接相关的唯一声明补助金是不清楚&#34; [a s] tudent每门课程可以获得一笔以上的补助金。#/ p>

它实际上只说每个学生课程对可以有多个相关的资助。 (也许作业的作者认为&#34; per&#34;句子说的不止于此,但事实并非如此。)它没有说明学生是否给予他们的资助取决于他们的课程,如果是的话。你的设计是最好的,给你一个三联体,你不能告诉任何其他三胞胎。与Takes(学生,课程)和&amp;设计接收(学生,课程,补助)与FK(外键){学生,课程}从Receives to Takes是最好的,如果你认识一个学生&amp;当然对然后你知道它的补助金。如果奖学金是独立于课程的学生,那么设计与Takes(学生,课程)&amp;收到(学生,补助金)就足够了。

与您的导师澄清。

答案 2 :(得分:1)

在获得任何属性之前,我没有看到问题陈述中的名词与您的班级之间的相关性。我希望看到以下课程:

  • Student
  • Course
  • Nationality
  • Scholarship

我还希望看到一个名为CourseEnrollment的关联类,它在关联的末尾具有以下斜体属性:

  • Student 研究课程 [1 .. *] Course
  • Course studyStudent [1 .. *] Student

该关联类将与名为Scholarship的{​​{1}}建立另一个关联,该关联在关联的末尾具有以下斜体属性:

  • ScholarshipAward 获颁奖学金 [0 .. *] CourseEnrollment
  • Scholarship 接受课程注册 [0 .. *] Scholarship

通过这种安排,CourseEnrollment可以授予ScholarshipStudent的组合。