關聯對映:一對多/多對一
存在最普遍的對映關係,a 表中的一行可以匹配 b 表中的多行,但是 b 表中的一行只能匹配 a 表中的一行。只有當乙個相關列是乙個主鍵或具有唯一約束時,才能建立一對多關係。
簡單來講就如球員與球隊的關係;
一對多:從球隊角度來說乙個球隊擁有多個球員 即為一對多
多對一:從球員角度來說多個球員屬於乙個球隊 即為多對一
資料表間一對多關係如下圖:
關聯對映:多對多
在多對多關係中,a 表中的一行可以匹配 b 表中的多行,反之亦然。要建立這種關係,需要定義第三個表,稱為結合表,它的主鍵由 a 表和 b 表的外部鍵組成。
多對多關係也很常見,例如學生與選修課之間的關係,乙個學生可以選擇多門選修課,而每個選修課又可以被多名學生選擇。
資料庫中的多對多關聯關係一般需採用中間表的方式處理,將多對多轉化為兩個一對多。
資料表間多對多關係如下圖:
關聯對映:一對一
在一對一關係中,a 表中的一行最多只能匹配於 b 表中的一行,反之亦然。如果相關列都是主鍵或都具有唯一約束,則可以建立一對一關係。
一對一關係就如球隊與球隊所在位址之間的關係,一支球隊僅有乙個位址,而乙個位址區也僅有一支球隊。
資料表間一對一關係的表現有兩種,一種是外來鍵關聯,一種是主鍵關聯。圖示如下:
一對一外來鍵關聯:
hibernate中配置
unique="true" not-null="true"/>
create table person ( personid bigint not null primary key, addressid bigint not null unique )
create table address ( addressid bigint not null primary key )
一對一主鍵關聯:要求兩個表的主鍵必須完全一致,通過兩個表的主鍵建立關聯關係
hibernate中配置
person
create table person ( personid bigint not null primary key )
create table address ( personid bigint not null primary key )
資料庫 一對一,一對多,多對多
一對一 就是說a表中的一條記錄對應著b表的一條記錄。大家可能會覺得這不是變得複雜了嗎?其實不然,如果,當一張表的字段過於太多,而很多字段可能只有在某些情況下,才會使用到,這時也可以考慮使用一對一設計。條件 建立單獨的表就行了,優點 1.便於管理 可提高一定的查詢速度 2.減輕 cpu 的 io 讀寫...
資料庫設計 一對一 一對多 多對多)
關聯對映 一對多 多對一 存在最普遍的對映關係,簡單來講就如球員與球隊的關係 一對多 從球隊角度來說乙個球隊擁有多個球員 即為一對多 多對一 從球員角度來說多個球員屬於乙個球隊 即為多對一資料表間一對多關係如下圖 關聯對映 一對一 一對一關係就如球隊與球隊所在位址之間的關係,一支球隊僅有乙個位址,而...
資料庫設計(一對一 一對多 多對多)
一對一關係就如球隊與球隊所在位址之間的關係,一支球隊僅有乙個位址,而乙個位址區也僅有一支球隊。資料表間一對一關係的表現有兩種,一種是外來鍵關聯,一種是主鍵關聯。一對一外來鍵關聯,圖示如下 一對一主鍵關聯 要求兩個表的主鍵必須完全一致,通過兩個表的主鍵建立關聯關係。圖示如下 我們以學生和班級之間的關係...