3个强实体集的数据库设计

时间:2017-09-09 04:47:11

标签: mysql database-design relational-database

我试图为3个表设计一个数据库:教师,课程,学生    - 教师可以有很多学生,可以教许多课程    - 学生可以有很多老师,可以学习很多课程    - 许多老师都可以教授一门课程,可以招收很多学生 我希望能够确定哪个学生正在学习哪门课程,并由哪位老师教授。

1 个答案:

答案 0 :(得分:1)

CREATE TABLE student (
  id   serial PRIMARY KEY,
  name varchar(255) NOT NULL,
  -- other columns, constraints, etc...
);
CREATE TABLE teacher (
  id   serial PRIMARY KEY,
  name varchar(255) NOT NULL,
  -- other columns, constraints, etc...
);
CREATE TABLE course(
  id   serial PRIMARY KEY,
  name varchar(255) NOT NULL,
  -- other columns, constraints, etc...
);
CREATE TABLE student_course (
  student_id integer NOT NULL REFERENCES student(id),
  course_id  integer NOT NULL REFERENCES course(id),
);
CREATE TABLE teacher_course (
  teacher_id integer NOT NULL REFERENCES teacher(id),
  course_id  integer NOT NULL REFERENCES course(id),
);

SELECT s.id, s.name, c.id, c.name, .id, t.name
FROM student s
  JOIN student_course sc ON s.id = sc.student_id
  JOIN course c ON sc.course_id = c.id
  JOIN teacher_course tc ON c.id = tc.course.id
  JOIN teacher t ON tc.teacher_id = t.id