2016-12-16 141 views
-1

我有一個關於數據庫設計的問題。關於設計數據庫

對於比較大的數據庫系統,哪一個更好?

設計1 enter image description here

設計2 enter image description here

在我看來我舒服的第二個,但第一個比第二個我想更多的傳統。

你的想法是什麼?

+0

請編輯您的問題,以解釋我們應該如何閱讀第二個圖表。 – philipxy

+0

@philipxy我認爲圖很清楚。首先我們將學生電話號碼存儲在另一個表格中,第二個我們使用XML將學生電話號碼存儲在同一個表格中。 –

回答

3

都沒有。如果兩個學生住在宿舍裏,並且擁有(共用)相同的電話號碼(宿舍電話),或者是在家生活的兄弟姐妹?電話號碼錶應該是一個組合鍵,phonenumber,studentId作爲複合主鍵。這反映了所謂的多對多或關聯關係,它們不容易用XML表示。

下面的模式假設每個學生都可以確定他/她使用該行的電話的「類型」。如果電話類型僅由電話確定,那麼您將爲電話號碼和電話類型添加另一個單獨的表格,而不使用studentId,並在關聯表中將phoneNumber字段設置爲該新電話的外鍵(FK)表

enter image description here

+0

謝謝你的回答,我會支付你的更正。 但是,這並不是我期待的答案,我想學習的是「哪種方法更有用,關係還是XML?」 再次感謝您。 –

+0

ahhhh,如果這就是你感興趣的所有內容,那麼關係就是答案。您不能輕鬆地在XML中執行多對多的關係。 –

0

我會與設計1走,但有修改。電話號碼錶,但是,將學生ID作爲主鍵。這樣,您可以讓多個學生使用同一部電話,這對我來說是完全正常的場景。

+0

謝謝你的回答,我會考慮你的警告。 –

+0

如果電話號碼錶具有'studentId'作爲主鍵,則每個學生只能有一條記錄。不,需要在'studentId'和'phoneNumber'上有一個COMPOSITE主鍵。 –

0

我不會通過將電話號碼標準化爲某些潛在的無限列表來解決此問題。

你真的需要一個學生多少個/什麼類型的電話號碼?比如,你需要傳真號碼嗎? 也許你需要一個學期時間和一個非學期時間數?

您似乎更有可能需要一個主號碼和一個備用號碼,並且這些號碼可以存儲在學生表本身中。

+0

比你的答案。但我注意到,你們所有人都迷戀我的小學生例子,我設計這個數據庫只是爲了「示例」的目的。我真正想學的是,使用XML是設計數據庫的一個不好的習慣。 –

+0

@OnurEryilmaz我們只能回答你提出的問題,並且描述那些花時間幫助「迷戀」的人是非常粗魯的。你應該問:「使用XML是設計數據庫的一個不好的做法嗎?」,或者更好地提到關於該主題的任何現有問題。 –

+0

我對我的語言感到抱歉,我沒有想到「癡迷」是無禮的。但是,正如我問我的問題:「哪個設計」更好。我沒有問:「我的第一張圖是錯的嗎?」。但是,我很抱歉。 –