2013-06-02 48 views
0

我想知道是否可以創建一個列,該列引用來自其他三列的值。示例如下:MySQL:創建一個包含來自其他三個列的值的列

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:完整的腳本。本練習的目的是創建一個包含學生,科目和考試時間表的數據庫。

+0

你是什麼意思相關?你想讓它們一樣嗎? –

+0

我會在一分鐘內再添加一個例子,以更好地解釋我想實現的目標。 – rcx

+0

時間表是指課程時間表,還是繪製學生的個人時間表? –

回答

4

這不是很好的關係數據庫實踐,有像「First_Subject」等編號列,除非你能保證行將只有這麼多的主題,但沒有更多(也許不會少)。即使那樣,我也會猶豫不決。

取而代之,您可以將Subject表格與科目相關聯,然後使用Subject-Courses表格將課程鏈接到您喜歡的多個或少量科目。然後你可以有鏈接到Subject行的時間表行。

一個例子架構給予(我敢肯定,你可以計算出DDL)你的問題應該是:

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

我真的不知道怎麼Timetable會適應似乎更多的派生表,即它不應該作爲模式的一部分存在。

+0

你可能包含一個最簡單的代碼工作示例嗎?更好地理解你的建議。 – rcx

+0

@doc'學生'是什麼? –

+0

我編輯了我的問題。現在它包含完整的腳本和一些解釋。 – rcx

相關問題