導航:首頁 > 編程大全 > 多對多資料庫設計

多對多資料庫設計

發布時間:2024-09-27 11:49:23

1. 資料庫表設計,一張表和多張表有關系,並且是多對多關系

班級表(class): id,class_name
學生表(student):版id,權student_name,class_id
老師表(teacher):id,name
成績表(score):id,kecheng_id,stu_id,score
課程表(kecheng):id,kecheng_name
老師班級表(teacher_class):id,class_id,teacher_id
表關聯設計思想:
1-1,外鍵放在那個表都可以,一般放在改動小的
1-n,n-1,吧1的id放在n的裡面
n-n,需要第三張表來存放兩者id
班級-學生:1-n
班級-老師:n-n
另外現在幾乎不使用實體外鍵,而採用邏輯外鍵,方便修改

2. 資料庫怎麼設計多對多的數據表

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--->中間表尋找匹配記錄(多條)--->學生表匹配(一條)

3. 資料庫建表問題:兩張多對多的表該怎麼建!

多對多 的情況下, 需要一個中間關聯表


例如下圖:

一個用戶,可以有多個角色,

一個角色下面,有多個用戶。


4. 資料庫表 多對多的關系怎麼建啊

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
通過聯合查詢,就可以得到多對多的數據了,而且不破壞基本數據表。

5. 資料庫多對多關系.入門舉例

給你舉個例子

用戶表:
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

這樣,最終這三個用戶會具有訪問那些頁面的許可權呢?自己動動腦筋吧。。。如果還不理解可以給我發消息。。。

閱讀全文

與多對多資料庫設計相關的資料

熱點內容
天下游舊版本 瀏覽:622
iphone6按鍵震動 瀏覽:528
u盤沒有顯示怎麼打開文件夾 瀏覽:13
win7升級win10激活失敗 瀏覽:914
win10系統文件缺失介質修復 瀏覽:900
怎麼樣系統升級 瀏覽:518
魔客吧傳奇網站模板 瀏覽:365
一段代碼解決html多瀏覽器兼容 瀏覽:803
淘車大師app官方下載 瀏覽:953
win10系統怎麼能找回桌面文件 瀏覽:423
換主板怎麼裝驅動程序 瀏覽:563
宜搜小說舊版本 瀏覽:310
win10凈網大師 瀏覽:262
蘋果5s移動網路設置 瀏覽:680
主文件名的格式 瀏覽:336
如何找吃的app 瀏覽:11
js判斷跳轉前的頁面地址 瀏覽:555
qq瀏覽器儲存密碼 瀏覽:309
網站字體陰影特效代碼 瀏覽:187
g10刀軌銑內腔該如何編程 瀏覽:295

友情鏈接