2013-01-18 108 views
0

我有我的數據模型,即四個表,數據庫建模

  • 學生,
  • 選修
  • 選修值,
  • 學生選修。

Student表中包含學生列表,其中學生ID爲主鍵。

選修表包含選修課提供的選修課列表,其中包含選修課作爲主要選修課。

選擇性值表包含每個選修課可能值的列表。該表的主鍵是選擇性ID和值ID(複合主鍵)的組合,因此對於下一選項,其值從1開始。

學生選修表包含學生ID,選修ID和值ID爲首要的關鍵。但我被要求做以下更改,

有一個ID爲選擇性值表而不是複合主鍵,並在學生選修表中使用主鍵(ID)。所以選修表和學生選修課之間的聯繫中斷了。我可以知道前者還是後者最好的方法?

+0

示例選修課的可能值是多少? – Vikdor

回答

1

第二種方法通常被認爲是「好」的方式,因爲它是歸一化,並允許選修值在未來少得多的破壞改變,並允許數據庫引擎來動態地優化查詢。如果這個值是一個字符串,你實際上可以在數據庫中保存一些空間。以下是我認爲你所描述的模型:

Student 
    StudentID 

Elective 
    ElectiveID 

ElectiveValue 
    ElectiveValueID 
    FK_ElectiveID 
    Value 

StudentElective 
    StudentElectiveValueID 
    FK_StudentID 
    FK_ElectiveValueID 
+0

是後一種方法的數據模型是上面提到的。 – vvekselva

+0

感謝您的答覆 – vvekselva

+0

如果你看一下概念,一個學生可以有相同的選修兩個值,但它不應該是這樣的,我們能夠避免這只是如果我們有一個複合主鍵。 – vvekselva