2011-03-09 66 views
1

我有兩個表:一個包含約會數據(時間,聯繫...),另一個包含筆記(字符串)。某些約會有筆記,一些筆記與約會有關,但並非所有約會都有筆記,並非所有筆記都與約會有關。什麼會更好?有兩個相關表的數據庫設計

a) In the appointments table, add a field that contains a noteID 
b) In the notes table, add a field that contains an appointmentID 
c) Do both 

我該如何決定?

回答

7

既不。

使用關聯連接表。

你有三個表。

  • 注意,用一記ID

  • 約會,與預約ID

  • 用一記ID和預約ID關聯。

+0

這是正確答案的最佳版本:每個表都有一個自動編號主鍵ID字段。 – 2011-03-09 19:59:53

+0

+1 - 這種方法允許每個applet或appts每個音符最簡單的多個音符! – JNK 2011-03-09 20:05:23

1

D)也沒有。

添加名爲Appointment_Notes的第三個表。這個表的兩列將是AppointmentID和NoteID(或者這些表的主鍵都被調用)。

1

如果您有多個與一個約會相關的筆記,或者與此相關的多個約會,您需要創建一些連接表,將約會和筆記表連接在一起,鍵。這樣,那些與約會無關的筆記可以保持獨立,但對約會的筆記連接沒有限制,或者相反。

1

d)創建一個新表來表示約會和筆記的交集。新表由每個表的主鍵組成,引用爲外鍵。

1

您可能有另一個表,它連接兩個,並且由apptID和noteID組成。這將消除對父表的外鍵中空值的需求。

0

你如何描述你的應用程序,這只是一個巧合,一些約會有筆記和一些筆記有約會。

我會創建第三個appointment_notes(appointment_id,note_id)表,它正好是前面提到的表的主鍵的關聯。