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

多對多資料庫設計

發布時間: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

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

閱讀全文

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

熱點內容
unity代碼修改了但是不編譯了 瀏覽:356
igs文件格式圖片 瀏覽:80
編程軟體為什麼不顯示中文 瀏覽:711
怎麼查看word文件版本 瀏覽:691
迷你編程怎麼讓樹葉變好看 瀏覽:310
qq親密號最低多少錢 瀏覽:917
電腦影像系統啟動文件導入出錯 瀏覽:908
word2007文檔刪除線 瀏覽:608
哪裡有自學的編程 瀏覽:432
榮耀手機哪些文件可以刪除垃圾 瀏覽:971
整人關機程序代碼 瀏覽:321
兩台linux傳文件 瀏覽:831
手機qq文件安全掃描失敗無法下載 瀏覽:378
linuxcmsgget 瀏覽:981
新版本表格表 瀏覽:209
linux修改文件夾用戶許可權 瀏覽:827
騰訊視頻緩存的ts文件 瀏覽:6
js平方根計算器 瀏覽:849
win10系統運行gost 瀏覽:174
南昌哪裡有學習編程的 瀏覽:541

友情鏈接