我知道如何在SQL Server中創建一對多,多對多的關係,但可以創建一對一的關係嗎?是否有可能創建1到0或1的關係?Sql中的關係
Sql中的關係
回答
是的,只是把PRIMARY KEY
小號兩個實體的成鏈接表,在兩個實體定義UNIQUE
鍵:
myrel(entityA, entityB, UNIQUE(entityA), UNIQUE(entityB))
因此,如果entityA = 1
有關entityB = 2
:
entityA entityB
1 2
,您可以將entityA = 1
與任何其他entityB
都不相關,也不會將entityB = 2
與任何其他entityA
相關聯。
如果關係是對稱(即entityA
和entityB
屬於相同的域和與entityA
到entityB
也指與entityB
到entityA
),則定義一個額外CHECK
constrant:
entityA entityB
UNIQUE(entityA)
UNIQUE(entityB)
CHECK(entityA < entityB)
和改造與此查詢的規範化關係的歸一化關係:
SELECT entityA, entityB
FROM myrel
UNION
SELECT entityB, entityA
FROM myrel
這是一個(0-1):(0-1)
的關係。
如果你希望它是一個1:1
關係,定義這個表是兩個entityA
和entityB
域:
myrel(entityA, entityB, UNIQUE(entityA), UNIQUE(entityB))
A(id, PRIMARY KEY(id), FOREIGN KEY(id) REFERENCES myrel (entityA))
B(id, PRIMARY KEY(id), FOREIGN KEY(id) REFERENCES myrel (entityB))
通過或者從表的定義中刪除FOREIGN KEY
,你改變的相應部分關係從1
到(0-1)
。
是的,只需將從屬表中的主鍵或備用鍵作爲父表中的主鍵的外鍵即可。
1到0或1的關係? – 2009-08-07 16:31:13
我所描述的是一個1比0或1的關係。在子表中,父表中的每一行都不必有記錄... – 2009-08-07 18:11:59
兩種方式: 1)pk-pk 1:1關係。表A和B都有PK。 1關係
或
2)的FK/UC-PK 1:1:1的關係,從B到PK A的PK這使得 'B' 的1的FK側創建FK。表A有一個PK,而表B有一個到A的外鍵,但B中的FK不在B的PK上。現在在B的FK字段中創建一個UC。
1到0或1的關係? – 2009-08-07 16:33:33
在方法1中,如何向A和B中插入新條目?方法2最終不是「1比0或1」關係嗎? – 2009-08-07 16:53:00
@ArsenMkrt:使FK可以爲空。 @Jonathan:方法1很容易插入。由於B依賴於A,所以首先在A中插入行,然後在B中插入行.A不指向B,B只指向A.方法2不是1..0..1的關係,if你讓FK不能爲空,如果FK邊是可選的,它只會被選中。 – 2009-08-09 08:07:06
- 1. RDBMS/SQL中的「關係」與「關係」?
- 2. SQL Server 2005中的關係?
- 3. SQL中的依賴關係
- 4. 代碼中的SQL關係
- 5. SQL表中的M:N關係
- 6. SQL表關係
- 7. SQL關係
- 8. 與SQLite的SQL中的關係部門
- 9. SQL關係錯誤
- 10. SQL Azure表關係
- 11. SQL外鍵關係
- 12. SQL Server列關係
- 13. linq與sql關係
- 14. SQL關係查詢
- 15. 表關係,SQL 2005
- 16. MongoDB關係vs SQL
- 17. SQL Server表關係
- 18. 表之間的SQL關係
- 19. 多對多的SQL關係
- 20. SQL訂貨1的關係
- 21. SQL SELECT與m:n的關係
- 22. 的Sql查詢,組關係
- 23. LINQ to SQL中的表關係
- 24. SQL中的父級子記錄關係?
- 25. T-SQL中的主/從關係
- 26. 訪問中顯示的SQL Server關係
- 27. Oracle SQL Sata Modeler中的弧關係(XOR)?
- 28. 建模SQL中的Post和Flag關係
- 29. SQL Server中的數據庫表關係
- 30. SQL查詢表中的許多關係
1到0或1的關係呢? – 2009-08-07 16:27:46