gpt4 book ai didi

mysql - 时间表生成的数据库设计

转载 作者:行者123 更新时间:2023-11-30 01:00:21 26 4
gpt4 key购买 nike

我正在做一个使用 J2EE(servlet) 生成大学时间表的项目。一天有六个时段(6 小时)

    4 x 1 HR Lectures
1 x 2 HR Lab

共有三个批处理(3IT、5IT、7IT)

   2 Classroom 
1 LAB

时间表中的每个时段都会有

       (Subject,Faculty)

对于实验室,我将复制该插槽。表格

    Subject(SubjectID  INT, SubjectName VARCHAR);
Faculty(FacultyID INT,FacultyName VARCHAR,NumOfSub INT,Subjects XYZ);

在这里,我无法确定主题的DATATYPE。我应该怎么办 ?既然一名教师可以教授多个科目?另外如何与主题表链接?

附注使用MySQL数据库

最佳答案

您不想在 Faculty 中实际存储 NumOfSub(科目数量)OR Subjects 。以这种方式存储主题违反了 First Normal Form ,处理它会导致严重令人头疼。
相反,您想要的是另一个表:

FacultySubject
----------------
FacultyId -- fk for Faculty.FacultyId
SubjectId -- fk for Subject.SubjectId

由此,您可以轻松获取主题的计数,或列出主题的一组行(我相信 MySQL 也有返回值列表的函数,但我对此没有经验):
此查询将检索特定教师教授的科目数:

SELECT Faculty.FacultyId, COUNT(*)
FROM Faculty
JOIN FacultySubject
ON FacultySubject.FacultyId = FacultyId.FacultyId
WHERE Faculty.FacultyName = 'Really Cool Professor'
GROUP BY Faculty.FacultyId

...这个查询将获取他们教授的所有科目(命名):

SELECT Subject.SubjectId, Subject.SubjectName
FROM Faculty
JOIN FacultySubject
ON FacultySubject.FacultyId = FacultyId.FacultyId
JOIN Subject
ON Subject.SubjectId = FacultySubject.SubjectId
WHERE Faculty.FacultyName = 'Really Cool Professor'

(请注意,最后将主题作为一组行返回,即:

SubjectId    SubjectName
=========================
1 Tree Houses
2 Annoying Younger Sisters
3 Swimming Holes
4 Fishing

)

关于mysql - 时间表生成的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20188371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com