mysql怎么創(chuàng)建多對多 二年級小猴和小松鼠看圖寫話

mysql數(shù)據(jù)庫中如何用一對多表示多對多

拿用戶角色來說

網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序設計、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了雄縣免費建站歡迎大家使用!

用戶? ←多對多→ 角色

概念模型如下:

生成物理模型就成了2個1對多:

箭頭指向多的一方

mysql 多對多 怎么設計表

1.數(shù)據(jù)庫中的多對多關聯(lián)關系一般需采用中間表的方式處理,將多對多轉化為兩個一對多。

2.通過表的關系,來幫助我們怎樣建表,建幾張表。

一對一

一張表的一條記錄一定只能與另外一張表的一條記錄進行對應,反之亦然。

學生表:姓名,性別,年齡,身高,體重,籍貫,家庭住址,緊急聯(lián)系人

其中姓名、性別、年齡、身高,體重屬于常用數(shù)據(jù),但是籍貫、住址和聯(lián)系人為不常用數(shù)據(jù)

如果每次查詢都是查詢所有數(shù)據(jù),不常用的數(shù)據(jù)就會影響效率,實際又不用

常用信息表:ID(P),姓名,性別,年齡,身高,體重

不常用信息表:ID(P),籍貫,家庭住址,緊急聯(lián)系人

解決方案:將常用的和不常用的信息分享存儲,分成兩張表

不常用信息表和常用信息表,保證不常用信息表與常用信息表能夠對應上:找一個具有唯一性的

字段來共同連接兩張表。

一個常用表中的一條記錄永遠只能在一張不常用表中匹配一條記錄,反之亦然。

一對多

一張表中有一條記錄可以對應另外一張表中的多條記錄;但是反過來,另外一張表的一條記錄

只能對應第一張表的一條記錄,這種關系就是一對多或多對一

母親與孩子的關系:母親,孩子兩個實體

母親表:ID(P),名字,年齡,性別

孩子表:ID(P),名字,年齡,性別

以上關系:一個媽媽可以在孩子表中找到多條記錄(也可能是一條),但是一個孩子只能找到一個媽媽

是一種典型的一對多的關系。

但是以上設計:解決了實體的設計表問題,但是沒有解決關系問題,孩子找不到母親,母親也找不到孩子

解決方案:在某一張表中增加一個字段,能夠找到另外一張表中的記錄:在孩子表中增加一個字段

指向母親表,因為孩子表的記錄只能匹配到一條母親表的記錄。

母親表:ID(P),名字,年齡,性別

孩子表:ID(P),名字,年齡,性別,母親表ID(母親表主鍵)

多對多

一對表中(A)的一條記錄能夠對應另外一張表(B)中的多條記錄;同時B表中的一條記錄

也能對應A表中的多條記錄

老師和學生

老師表 T_ID(P),姓名,性別

學生表 S_ID(P),姓名,性別

以上設計方案:實現(xiàn)了實體的設計,但是沒有維護實體的關系

一個老師教過多個學生,一個學生也被多個老師教過

解決方案:增加一張中間關系表

老師與學生的關系表:ID(P),T_ID,S_ID

老師表與中間表形成一對多的關系,而中間表是多表;維護了能夠唯一找到一表的關系;

同樣的學生表與中間表也是一個一對多的關系;

學生找老師:找出學生ID---中間表尋找匹配記錄(多條)---老師表匹配(一條)

老師找學生:找出老師ID---中間表尋找匹配記錄(多條)---學生表匹配(一條)

Mysql實現(xiàn)多對多??

t_s

t_d

t_e

再創(chuàng)建一張關系表:

t_s_d_e里面只有三個字段,t_s

的id、t_d

的id、t_e

的id

每增加一中關系都在表里添加一條記錄,就可以滿足條件了。

mysql建立外鍵時,多對多如何建立?

一張表中的主鍵只能有一個,外鍵可以有多個,如果一張表中多個列都需要被別的表的外鍵參考,需要使用候選碼(非空并且唯一),具體到你的這個問題的需求可以考慮用如下方法解決:

把a表中的bookid和authorid都設置為非空并且唯一,即

create table a(bookid int not null unique, authorid int not null unique);

然后在book表和author表中就可以分別設置外鍵來參照a表中兩個不同的字段了。

打開我的navicat,然后找到我的teacher表,選中它,然后點擊菜單欄上的‘design table'

2. 在彈出的對話框中找到“Foreign Keys”,然后單機。

3. 然后會出現(xiàn)一個設置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思?!畁ame’:可以不填,你一會保存成功系統(tǒng)會自動生成。FieldName’:就是你要把哪個鍵設置為外鍵。這里選擇‘dept’,‘Reference DadaBase’:外鍵關聯(lián)的數(shù)據(jù)庫?!甊eference Table‘ :關聯(lián)的表 這里是dept表‘Forgin filed Names’:關聯(lián)的的字段,這里是code‘ondelete’:就是刪除的時候選擇的動作。這里我的選擇是setNull,意思就是當關聯(lián)的表刪除以后,teacher》dept字段會設置為null.

4. 設置完成后點擊‘save’保存退出,也可以點擊‘a(chǎn)dd Foreign Key’再添加一個外鍵。

打開我的navicat,然后找到我的teacher表,選中它,然后點擊菜單欄上的‘design table’。如下圖:

2. 在彈出的對話框中找到“Foreign Keys”,然后單機。如下圖:

3. 然后會出現(xiàn)一個設置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思?!畁ame’:可以不填,你一會保存成功系統(tǒng)會自動生成。FieldName’:就是你要把哪個鍵設置為外鍵。這里選擇‘dept’,‘Reference DadaBase’:外鍵關聯(lián)的數(shù)據(jù)庫。‘Reference Table‘ :關聯(lián)的表 這里是dept表‘Forgin filed Names’:關聯(lián)的的字段,這里是code‘ondelete’:就是刪除的時候選擇的動作。這里我的選擇是setNull,意思就是當關聯(lián)的表刪除以后,teacher》dept字段會設置為null。如圖

4. 設置完成后點擊‘save’保存退出,也可以點擊‘a(chǎn)dd Foreign Key’再添加一個外鍵。k如圖:

本文標題:mysql怎么創(chuàng)建多對多 二年級小猴和小松鼠看圖寫話
標題來源:http://www.muchs.cn/article6/dosedig.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、、網(wǎng)站營銷外貿(mào)網(wǎng)站建設、外貿(mào)建站、關鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管