0

他の 3 つの列の値を参照する列を持つテーブルを作成できるかどうかを知りたいです。以下に例を示します。

CREATE TABLE Students
(
    Id INT PRIMARY KEY AUTO_INCREMENT, 
    Student_Name VARCHAR(25), 
    Course_Name VARCHAR(25), 
    First_Mark VARCHAR(25), 
    Second_Mark VARCHAR(25), 
    Third_Mark VARCHAR(25)
);
CREATE TABLE Course
(
    Id INT PRIMARY KEY AUTO_INCREMENT,
    Student_Course_Name VARCHAR(25),
    First_Subject VARCHAR(25), <------|*************************************************
    Second_Subject VARCHAR(25), <-----| I want to connect values from these columns... *
    Third_Subject VARCHAR(25), <------|*************************************************
    FOREIGN KEY (Students_Course_Name) references Students (Course_Name)
);

CREATE TABLE Timetable
(
    Id INT PRIMARY KEY AUTO_INCREMENT, 
    Subject_List VARCHAR(25), <-------| *** ...with this column. In other words, I want mentioned columns to be related.
    Date DATETIME DEFAULT NULL, 
    Avarage_Mark INTEGER,
);

ここに私が欲しいものがあります:

http://i.stack.imgur.com/zB0AV.png

編集 2: 完全なスクリプト。この演習の目的は、学生、科目、および試験の時間割を含むデータベースを作成することです。

4

1 に答える 1

4

「First_Subject」などのように列に番号を付けることは、リレーショナル DB の実践として適切ではありません。それでも、私は躊躇します。

代わりにSubject、科目を含むSubject-Coursesテーブルを作成してから、コースを好きな数の科目にリンクしたテーブルを作成することができます。次に、行にリンクする Timetable 行を作成することもできSubjectます。

質問が与えられた場合のスキーマの例(DDLを理解できると確信しています)は次のようになります。

Students (stuID, name)
StudentCourses (scID, couID, stuID, enrollmentDate)
StudentCourseMarks (scID, mark, markDate)
Courses (couID, name)
Subjects (subID, subject)
CourseSubjects (couID, subID)

どのように適合するかはよくわかりませんTimetable。派生テーブルのように見えます。つまり、スキーマの一部として存在するべきではありません。

于 2013-06-02T18:09:00.840 に答える