需要数据库设计帮助

发布于 2024-10-13 00:53:50 字数 409 浏览 0 评论 0原文

我需要帮助来构建简单的数据库结构。有点卡住了。

这就是我正在尝试的。

班级是指院系+学期。例如,电子工程 SemI、电气工程 Sem II.. 等。

学生正在上课; 班级有一组明确的科目; 小组由多个科目组成。

Class 和Subjects,2 个实体依赖于相同的SubjectGroup 实体。那么这不是三元关系吗?

我制作了这张图片以使图片清晰。 [ P = 主键; F = 外键;箭头并不意味着任何一对多/多对多等。它们只是显示引用的内容]

alt text

我陷入困境,因为我无法两次引用 GroupId。

我应该如何修改这个结构?

- 谢谢

I need help in building simple database structure. Kind of stuck.

Here's what I'm trying.

Class means Department+Semester. Eg, Electronics Engineering SemI, Electrical Engg Sem II.. etc..

Student is in class;
Class has a defined group of subjects;
Group consists of multiple subjects.

Class and Subjects, 2 entities depend on same SubjectGroup entity. So isn't this a ternary relationship ?

I've made this image to make picture clear.
[ P = Primary key; F = Foreign Key; Arrows do not mean anything of One-to-many/many to many etc.. they are just showing what referenced where]

alt text

I am stuck because I can not refer to GroupId two times.

How should I modify this structure ?

-
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情感失落者 2024-10-20 00:53:50

实体

  • 学生。
  • 班级。
  • 主题。

学生与班级的关系

  • 。一对多。一堂课涉及许多学生。
  • 服从班级。一对多。一门课涉及许多科目。

学生

列:

  • studentId - 学生表的主键。
  • 关于学生的东西(一些列)。
  • classId - 类表中的外键。

主题

列:

  • subjectId - 主题表的主键。
  • 有关主题的内容(一些列)。
  • classId - 类表中的外键。

  • classId - 类表的主键。
  • 关于一个班级的事情。没有关于学生的事情。与主题无关。学生没有外键。主题没有外键。

查询

班级中的学生

select
    s.studentName
from
    class c
    inner join student s on s.classId = c.classId
where
    c.classId = 'desired class id'

学生正在学习的科目

select
    sub.subjectName
from
    student stu
    inner join subject sub on sub.classId = stu.classId
where
    stu.studentId = 'desired student id'

Entities

  • Student.
  • Class.
  • Subject.

Relationships

  • Student to Class. One to Many. One class relates to many students.
  • Subject to Class. One to Many. One class relates to many subjects.

Tables

Student

Columns:

  • studentId - primary key of the student table.
  • stuff about sutdent (some number of columns).
  • classId - foreign key into the class table.

Subject

Columns:

  • subjectId - primary key of the subject table.
  • stuff about subject (some number of columns).
  • classId - foreign key into the class table.

Class

  • classId - primary key of the class table.
  • stuff about a class. nothing about student. nothing about subject. no foreign key to student. no foreign key to subject.

Queries

Students in a class

select
    s.studentName
from
    class c
    inner join student s on s.classId = c.classId
where
    c.classId = 'desired class id'

Subjects Student is Studying

select
    sub.subjectName
from
    student stu
    inner join subject sub on sub.classId = stu.classId
where
    stu.studentId = 'desired student id'
云裳 2024-10-20 00:53:50

我认为你需要引入一个 classSubject 表。
这是行的准确示例吗?

student
beth
john
mark

class
beths_and_johns_class bethssubject, johnssubject
marks_class markssubject

subject
bethssubject
johnssubject
markssubject

I think you need to introduce a classSubject table.
Is this an accurate example of rows?

student
beth
john
mark

class
beths_and_johns_class bethssubject, johnssubject
marks_class markssubject

subject
bethssubject
johnssubject
markssubject
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文