查询面向对象的数据库

时间:2011-10-19 01:17:34

标签: mysql object-oriented-database

以下是面向对象设置中数据库的scheme。每个关系都成为一个对象的集合。学生是一个人,一个学院也是一个人。这些显示为标记为“isa”的有向边。所有其他有向边显示参考属性。请注意,Course中的PreReq属性是一组引用。

enter image description here

这是我无法弄清楚如何写的查询:

按学生ID重新整理注册馆藏。对于每个学生,检索学生的ID和成绩。成绩应该是由CourseCodeLetterGrade属性组成的关系。

通过重新组织,我很确定它只是意味着按顺序检索信息,而不是对数据库进行任何更新。

1 个答案:

答案 0 :(得分:1)

因为并非所有字段都被正确引用,并且指令有点......嗯,缺乏,我将做出一些假设。即:

  1. 学生表有一个名为“StudentID”的字段,与Person表中的ID字段是1对1的关系。

  2. “重新组织”意味着“选择”..奇怪的措辞。

  3. 除了Person表之外,所有其他ID都遵循常规命名约定。含义,<TableName>Id。例如,学生表中的主要ID是StudentID

  4. 问题中的“LetterGrade”实际上是指注册表中的“成绩”字段。

  5. 以“Info”结尾的所有字段都是以“Id”结尾的等效字段的外键。例如:Enrollment.StudentInfo映射到Student.StudentId

  6. 的内容
    SELECT S.StudentID, E.Grade, C.CourseCode
    FROM Student S
      INNER JOIN Enrollment E on (E.StudentInfo = S.StudentId)
      INNER JOIN Offering O on (O.OfferingId = E.OfferingInfo)
      INNER JOIN Course C on (C.CourseId = O.CourseInfo)
    ORDER BY S.StudentId