我需要確保數據庫中的每個項目都有聯繫人。 「項目」和「聯繫人」具有多對多關係,在表「projects_contacts」中指定。我可以在項目中創建一個表約束來指定項目必須存在於連接表中嗎?還是我需要採取完全不同的方法?
(我需要用戶能夠在添加項目數據的過程中手動輸入聯繫人數據,所以我擔心NOT NULL在創建項目之前會有掛接的能力)通過多對多關係應用非空約束?
這會更好地解決在用戶界面的構建?
謝謝!
CREATE TABLE projects(
id_project INTEGER PRIMARY KEY,
description text)
CREATE TABLE contacts(
id_contact integer PRIMARY KEY
firstname varchar(100))
CREATE TABLE projects_contacts(
id_projects_contacts integer PRIMARY KEY,>
id_project integer,
id_contact integer
CONSTRAINT FOREIGN KEY project_fkey (id_project) REFERENCES projects ON UPDATE CASCADE ON DELETE CASCADE
CONSTRAINT FOREIGN KEY contact_fkey (id_contact) REFERENCES contacts ON UPDATE CASCADE ON DELETE CASCADE)
對於誰通過網絡訪問數據庫的用戶,在每次添加一個項目,我會用比爾的提示:「所以你最多隻能推遲約束是直到提交:http://www.postgresql.org/docs/ 9.3 /靜態/ SQL-設置constraints.html」 – ptel
對於管理員來說,誰需要或者一次添加一個項目或導入大型數據集,我將不得不考慮通過我是否需要在projects_contacts NOT NULL約束連接表。 – ptel
由於存在NOT NULL約束,管理員將在跨數據導入數據庫的選項中受到阻礙。但是,如果沒有NOT NULL約束,管理員需要知道在人行橫道之後再次檢查所有項目是否具有聯繫人(並且沒有沒有項目的聯繫人)。或者......我可以爲他們編寫一個腳本來執行檢查嗎? – ptel