Ⅰ 資料庫表 多對多的關系怎麼建啊
A表,a_id,a_name,a_tel三個欄位。
B表,b_id,b_address,b_sol三個欄位。
關聯表,ref_id,a_id,b_id,存儲著AB兩表的id,
比如:A有
a0001,zhang3,139555533
a0002,li4,1397788888
a0003,wang5,13655566
B有
b0001,shanghai,234
b0002,shenyang,332
b0003,chongqing,123
如果想要AB表多對多的話,只需要將關聯表進行增加即可,而AB兩表基本數據不變,
比如:
關聯表ref_table:
r0001,a0001,b0002
r0002,a0001,b0001
r0003,a0001,b0003
r0004,a0002,b0003
通過聯合查詢,就可以得到多對多的數據了,而且不破壞基本數據表。
Ⅱ 如何在資料庫中表示多對多的關系
多對多:新建一個關系表,將兩張表關系起來。關系表中是兩張表的主鍵。
如:有多個學生,每個學生可以選修多門課程,每個課程可以被多個學生選修。
注意:多對多中,不能說在一個表中加個欄位,cid是另一張表的主鍵,不能寫兩個數據。
(2)資料庫多對多擴展閱讀
一個好的表結構設計,可以減少一些不必要的表或欄位等。數據表之間的關聯關系分為三種:一對一、一對多、多對多。
1、一對一,是將數據表「垂直切分」,就是A表的一條記錄對應B表的一條記錄。
優點:
(1)便於管理、可提高一定的查詢速度。
(2)減輕CPU的IO讀寫,提高存取效率。
(3)符合資料庫設計的三大範式。
(4)符合關系性資料庫的特性。
缺點:增加一定的復雜程度,程序中的讀寫難度加大。
2、一對多,就是A表的一條記錄,對應B表的多條記錄,且A的主鍵作為B表的外鍵。
Ⅲ 請問資料庫「多對多」的概念
多對多就是兩個實體集中都可能有某個實體對應另一實體集中的多個實體。比如:商店和商品兩個實體集,一家店可以有多種商品,一種商品也可以在多家店賣
Ⅳ 資料庫一對多,多對多
根據實際情況考慮就行了。
一個顧客可以擁有多本圖書,一本圖書只能被一個顧客擁有 1 vs 多
同理,顧客 vs 訂單 1vs 多
管理員和圖書的關系 多vs多
管理員和訂單的關系 1vs 多
Ⅳ 關於資料庫一對多,多對一,多對多的問題
根據實際情況考慮就行了。
一個顧客可以擁有多本圖書,一本圖書只能被一個顧客擁有 1 vs 多
同理,顧客 vs 訂單 1vs 多
管理員和圖書的關系 多vs多
管理員和訂單的關系 1vs 多
Ⅵ 資料庫表與表之間多對多關系怎麼處理
拆分關系,增加一個表,使之符合範式。
Ⅶ 資料庫聯合查詢,多對多關系
一個學生可以選擇多個愛好 ,一個愛好可以被多個學生選擇。
多對多關系最好建三張表 一張學生表 一張愛好表 一張映射學生和愛好關系的表
Ⅷ 資料庫多對多關系.入門舉例
給你舉個例子
用戶表:
ID
Name
1
ABC
2
BCE
3
DEP
用戶許可權表
ID
HERF
1
a.asp
2
b.asp
3
c.asp
映射表
用戶ID
許可權ID
映射表ID
1
1
1
1
2
2
1
3
3
2
2
4
2
3
5
3
1
6
這樣用inner
join把用戶的ID
=
映射表的用戶ID
,
許可權表的ID
=
映射表的許可權ID,查詢後你就有這樣的結果:
用戶Name
許可權
用戶ID
許可權ID
映射表ID
ABC
a.asp
1
1
1
ABC
b.asp
1
2
2
ABC
c.asp
1
3
3
BCE
b.asp
2
2
4
BCE
c.asp
2
3
5
DEP
a.asp
3
1
6
這樣用戶就和許可權形成了多對多的關系!
同理你還可以加上
用戶組
表
用戶組表
ID
Name
1
組1
2
組2
用戶組映射表
用戶ID
組ID
組映射表ID
1
1
1
2
1
2
3
1
3
2
2
4
3
2
5
這樣用戶隸屬組就是
用戶Name
組Name
用戶ID
組ID
組映射表ID
ABC
組1
1
1
1
BCE
組1
2
1
2
DEP
組1
3
1
3
BCE
組2
2
2
4
DEP
組2
3
2
5
最後,隸屬組也可以和許可權有映射
用戶組許可權映射表
組ID
許可權ID
組許可權映射表ID
1
1
1
2
3
2
這樣,最終這三個用戶會具有訪問那些
頁面
的許可權呢?自己動動腦筋吧。。。如果還不理解可以給我發消息。。。
Ⅸ 資料庫中如何處理多組多對多的關系
例如:學生的資料庫,一個老師教一個班 學生表裡面有個教師ID欄位,這個欄位和老師表的教師ID欄位就是多對一的關系,反過來就是一對多的關系, Access:在有這兩個表的資料庫中,點擊工具欄上的關系按鈕,把老師表的教師ID欄位拖拽到學生表的教...
Ⅹ 資料庫怎麼設計多對多的數據表
1.資料庫中的多對多關聯關系一般需採用中間表的方式處理,將多對多轉化為兩個一對多。
2.通過表的關系,來幫助我們怎樣建表,建幾張表。
一對一
一張表的一條記錄一定只能與另外一張表的一條記錄進行對應,反之亦然。
學生表:姓名,性別,年齡,身高,體重,籍貫,家庭住址,緊急聯系人
其中姓名、性別、年齡、身高,體重屬於常用數據,但是籍貫、住址和聯系人為不常用數據
如果每次查詢都是查詢所有數據,不常用的數據就會影響效率,實際又不用
常用信息表:ID(P),姓名,性別,年齡,身高,體重
不常用信息表:ID(P),籍貫,家庭住址,緊急聯系人
解決方案:將常用的和不常用的信息分享存儲,分成兩張表
不常用信息表和常用信息表,保證不常用信息表與常用信息表能夠對應上:找一個具有唯一性的
欄位來共同連接兩張表。
一個常用表中的一條記錄永遠只能在一張不常用表中匹配一條記錄,反之亦然。
一對多
一張表中有一條記錄可以對應另外一張表中的多條記錄;但是反過來,另外一張表的一條記錄
只能對應第一張表的一條記錄,這種關系就是一對多或多對一
母親與孩子的關系:母親,孩子兩個實體
母親表:ID(P),名字,年齡,性別
孩子表:ID(P),名字,年齡,性別
以上關系:一個媽媽可以在孩子表中找到多條記錄(也可能是一條),但是一個孩子只能找到一個媽媽
是一種典型的一對多的關系。
但是以上設計:解決了實體的設計表問題,但是沒有解決關系問題,孩子找不到母親,母親也找不到孩子
解決方案:在某一張表中增加一個欄位,能夠找到另外一張表中的記錄:在孩子表中增加一個欄位
指向母親表,因為孩子表的記錄只能匹配到一條母親表的記錄。
母親表:ID(P),名字,年齡,性別
孩子表:ID(P),名字,年齡,性別,母親表ID(母親表主鍵)
多對多
一對表中(A)的一條記錄能夠對應另外一張表(B)中的多條記錄;同時B表中的一條記錄
也能對應A表中的多條記錄
老師和學生
老師表 T_ID(P),姓名,性別
學生表 S_ID(P),姓名,性別
以上設計方案:實現了實體的設計,但是沒有維護實體的關系
一個老師教過多個學生,一個學生也被多個老師教過
解決方案:增加一張中間關系表
老師與學生的關系表:ID(P),T_ID,S_ID
老師表與中間表形成一對多的關系,而中間表是多表;維護了能夠唯一找到一表的關系;
同樣的學生表與中間表也是一個一對多的關系;
學生找老師:找出學生ID--->中間表尋找匹配記錄(多條)--->老師表匹配(一條)
老師找學生:找出老師ID--->中間表尋找匹配記錄(多條)--->學生表匹配(一條)