我是相對較新的SQL,我不知道如何做一對一的關係。在瞭解了前三種標準化形式之後,我目前認爲最好的辦法是建立一箇中間表,ala-3rd來自多種關係,除了每一列被聲明爲唯一的。我應該如何在(My)SQL中實現一對一的關係?
2
A
回答
6
ImageDetails
------------
id (PK)
name
description
ImageData
------------
id (PK & FK)
blobfield
像這樣的東西可能是一個很好的理由/辦法做一個一對一的關係,但通常你只會在一個表中的所有數據,其中每一行是什麼定義的關係。
將它們分開的一個原因可能是限制用戶訪問特定表,同時允許訪問該關鍵字段的其他數據。
如果您不希望在列中擁有null
,那麼爲單一關係設置單獨的表的另一個可能原因是您不希望列中有null
。例如,如果90%的數據爲空,那麼最好使用一個完全獨立的(和更小的)表,然後加入PK上的該字段。這實際上被認爲是「可選的一對一關係」,因爲對於每一種可能的關係你都沒有真正的記錄。
2
對於一對一關係,您不需要第三張表,但如果關係是多對多關係,那麼您確實需要它們之間的第三個中間表。
0
可選的一對一關係出現在現實世界中。實現它們的最簡單的方法,恕我直言,是與一個獨特的外鍵。
mysql> describe table_one;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| table_two_id | int(11) | YES | UNI | NULL | |
+--------------+--------------+------+-----+---------+----------------+
0 rows in set (0.00 sec)
mysql> describe table_two;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
+--------------+--------------+------+-----+---------+----------------+
0 rows in set (0.00 sec)
相關問題
- 1. 在SQL Server中實現一對一或一對一的關係
- 2. SQL/MySQL - 如何在一對多關係中實現AND子句?
- 3. 我應該如何在Spring中實現緩存對象/系統?
- 4. 實現一對一的關係
- 5. 如何在Datomic中實現排序的一對多關係?
- 6. 在CakePHP中,我該如何設置「一對一(三者中的一種)」關係?
- 7. 數據庫一對一關係實現
- 8. 在Django中,我想實現一對多的關係
- 9. 與實體 - 一一對應的關係
- 10. 如何在Ibatis中實現一對多關係?
- 11. 我如何在SQL中建立多對一的關係
- 12. 我如何創建一對一的多對多關係在我的sql
- 13. 實現與SQLite的一對多關係
- 14. 實現一對多的關係Spring MVC
- 15. 我應該如何爲存儲SQL對象的NSMutableSet實現Hash?
- 16. 一般來說,我該如何實現實時監控系統?
- 17. Google App Engine中的JDO:多態關係應該如何實現?
- 18. 我們應該如何查詢多個一個一對多的關係
- 19. 如何在一對多關係中實現零或一的多重性?
- 20. 如何在SQL Server中創建真正的一對一關係
- 21. 在一對一的關係,我應該放下一個表的ID列?
- 22. 如何在數據庫中實現一對多和多對多的關係
- 23. 我應該如何在SQL查詢中實現IF語句?
- 24. 以多對一和一對多的關係實現LINQ to Entity
- 25. 如何在休眠模式下實現一對一的外鍵關係映射
- 26. 我應該實現哪一層緩存
- 27. 在Realm中實現一對多關係的正確方法
- 28. Phalcon - 在模型中實現一對多的自引用關係
- 29. 在休眠中正確實現一對多的單向關係
- 30. SQLAlchemy中的一對一自我關係
一對一關係是指a)應該只有一個表或b)關係需要重新分類,因此它是一對多或多對多關係。 – 2010-02-18 04:32:44
@OMG小馬我並不完全同意這一點。您可以擁有另一個具有一對一關係的表格。這並不總是有意義,但我相信有人可以想到它的原因 – 2010-02-18 04:34:48
@ do3boy:數據庫還允許您創建不通過1NF的表。只因爲你可以,並不意味着你應該。 – 2010-02-18 04:39:06