2015-04-17 91 views

回答

0

問題是方式通用的。我認爲這是從學校的角度出發的。鑑於:

  • ,只要你想爲每個主題,你可以有很多類
  • ,只要你想爲每個主題
  • 類和考試無關
你可以有許多考試

你必須

  • 一個主題實體,沒有外鍵
  • 一類實體,根據主題
  • 的審查單位,根據主題

將產生此SQL存根:

CREATE TABLE Subject (
    id INTEGER NOT NULL, 
    name VARCHAR(50), 
    PRIMARY KEY(id) 
); 

CREATE TABLE Class (
    id INTEGER NOT NULL, 
    -- some other defining columns here 
    id_subject INTEGER, 
    PRIMARY KEY(id), 
    FOREIGN KEY(id_subject) REFERENCES Subject(id) 
); 

你需要參加考試一樣。作爲一個方面說明,您可能希望將外鍵放在類爲空的位置,因爲可能沒有某個類的主題(例如空閒時間?缺少老師?),但是您肯定會希望有一個非空約束考試中的外鍵。

因爲這看起來像一個任務,我不會進入詳細內容...

編輯:在這種情況下你的「類」實體,意味着你將涉及類和對象有一個額外的表學年,因爲這個關係變爲N×M:

CREATE TABLE Subject_Class (
    id_class INTEGER NOT NULL, 
    id_subject INTEGER NOT NULL, 
    PRIMARY KEY(id_class, id_subject), 
    FOREIGN KEY (id_class) REFERENCES Class(id), 
    FOREIGN KEY (id_subject) REFERENCES Subject(id) 
); 

並且您將從Class表中刪除外鍵。

+0

謝謝,但我的問題是假設爲一個班級,把它作爲第8類,他們有5個科目英語,數學,生命科學,物理科學,歷史。那麼我怎麼能與id相關?第5課的意思是我必須逐個添加每個主題? –

+0

在這種情況下,您會將Class和Subject與一個附加表關聯起來,因爲此關係變爲N x M:編輯我的答案。 –