2012-12-06 22 views
0

嗨,我已經設置了兩個非常基本的表。一個表格將充當查詢,身份字段作爲主鍵。另一個表使用查找ID作爲外鍵。表之間的關係,以防止不存在外鍵的記錄插入

我已經創建了關係約束,所以現在如果在「主」表中使用了外鍵,我無法從查找中刪除。

但是我的問題是我可以添加一個不存在的外鍵的記錄。

我認爲這不應該被允許的方式,任何人都可以告訴我什麼樣的設置,我需要用來強制執行此操作,以及這是否是典型的數據庫設計?

謝謝戴夫

+0

我一定是錯誤地創建了關係。我現在通過數據庫圖表重新創建它,並且罰款。 – DavidB

回答

1

你的思維方式是正確的。良好的數據庫設計提供了一些強制實施所謂的「參照完整性」的方式。這只是你自己衍生的概念的一個流行詞。即,如果外鍵引用不存在的行,則應該拒絕外鍵。有關參照完整性的一般討論,請參閱以下維基百科文章。它很短。

http://en.wikipedia.org/wiki/Referential_integrity

一些pprogrammers想強制執行其程序中的引用完整性。一般來說,在數據庫中定義參照完整性約束是一個更好的計劃,並讓DBMS執行。它更容易,速度更快,而且更有效。

SQL數據定義語言(DDL)提供了一種在創建表時聲明外鍵約束的方法。 SQL的不同方言之間的語法略有不同,但它們基本上都是相同的思想。這是一個膠囊摘要。

http://www.w3schools.com/sql/sql_foreignkey.asp

用於SQL Server的文件應參照完整性約束的CREATE TABLE命令下的說明。