我不確定如何將問題的詞語足夠好地提供給Google,這對Google很有幫助 - 大多數結果都是關於指定外鍵,以便您可以使用JOIN運算符。SQL強制實施需要某種邏輯的約束
編輯: 爲了澄清,我在這裏有兩個主要概念 - 跟蹤器和跟蹤器的讀數。跟蹤器可以有任意數量的輸入。跟蹤器的讀數對於該特定時間點的跟蹤器上的每個輸入具有值。
Tracker
Id (Key)
Name
TrackerInput
TrackerId (Key 0, Foreign key)
Index (Key 1)
Name
Reading
Id (Key)
TrackerId (Foreign key)
DateRecorded
Some other properties
ReadingInput
ReadingId (Key 0, Foreign key)
Index (Key 1)
Value
我如何通過SQL,執行下面的約束:
Tracker
Id
Name
Inputs (List)
Name
Reading
Id
TrackerId
DateRecorded
Some other properties
Inputs (List)
Value
我有以下結構建模這個
一個讀MUST包括一個價值它引用的跟蹤器上的每個輸入。
您可以通過觸發器強制執行它 – Horaciux
FK是表中某些列的值也必須是某些其他特定列和表的值的時候。您使用「FK」沒有意義。 (特別是,「複合外鍵,它目前分爲兩個表格」)。你能說出你想要的而不使用它嗎?在代碼中,請說一張表中的列列表引用了其他表中的列列表。另外「輸入」是什麼意思?行的輸入表? PS您不需要PK,FK或任何其他約束來保持或聲明爲了加入。 – philipxy
表格的CK是一個唯一的列集合,它不包含更小的唯一列集合。在表t中的FK(外鍵)被給出「(c,...)引用u(d,...)」,其中{d,...}是u的CK,並且如果t的行具有值爲v,...爲列c,...然後,某行的值爲v,...爲列d,...。對於每個表,給出它的CK和FK。 – philipxy