2015-10-20 85 views
-1

我正在構建一個數據庫,以便在週末安排音樂家。查看錶格作爲約束條件

我有一個MUS_ROSTER存儲音樂家的表。我也有一個INSTRUMENTS的表格,列出了這些工具。

我有第三個表MUS_INST(只是一個鏈接表),它有一個音樂家的PK和一個樂器的PK作爲外鍵。它們是一個獨特的約束。

然後我有一個MUS_SCHED表,它具有INST的id和MUS的ID以及WK的發生情況。

音樂家每週只能演奏一種樂器,一週內只能演奏一種樂器。這些限制工作正常。

但是,我可以讓任何音樂家演奏任何樂器,因爲我不知道如何讓SQL檢查MUS_INST表,以便我不能將鼓手放在吉他上,反之亦然。

有沒有一種方法來設置一個檢查MUSID和INSTID一起出現在MUS_SCHED

這裏有一個大致的輪廓

MUSROSTER

  • MUSID(PK)

INSTRUMENTS

  • INSTID(PK)

MUS_INST

  • MUSID(FK)(UNQ時拴INSTID)
  • INSTID(FK)((UNQ時拴MUSID )

MUS_SCHED

  • MUSID(FK)
  • INSTID(FK)
  • WKNUM(UNQ與MUSID)

你如何MUS_SCHED檢查MUSID和INSTID一起發生在MUS_INST表?

如何讓表格檢查鏈接表上是否出現複合鍵(組合)。

回答

0

將一個PK加入到MUS_INSTMUSID & INSTID

然後在MUS_SCHED上添加另一個FK,其參考MUS_INST上的PK。

+0

如果我在MUS_INST上添加一個PK,然後在MUS_SCHED上引用它,這是如何解決MUS沒有INST技能的問題。它只會。目前MUS_ID和MUS_INST是該表上的組合鍵。通過添加一個新的密鑰,我不知道如果不知道其他兩個屬性中的值是如何幫助的。 – Discipleofaslan

+0

因爲'MUS_SCHED'上的FK必須強制要求在MUSIC_INST表中必須已經存在在日程表中輸入的MUSID和INSTID的任意組合。因此,你永遠無法安排音樂人演奏他不玩的樂器。 –

+0

明白了,謝謝 – Discipleofaslan