最近做專案的時候遇到乙個這樣的問題,乙個表中由四個欄位都是一對多的關係。如果把四個字段放入到一張表中,肯定存在很多冗餘資料。想想那怎麼辦呢?分成四張表,用主外來鍵關聯起來,但太不靈活了。想到考試系統中用到的中間表,想這裡也可以用到。現在比較一下三種建表方式的不同之處吧!
1、 表:字段包括糧倉、前置機位址、埠、組、資料,其中糧倉、前置機位址可以唯一標識
2、關係:
(1)乙個糧倉容納多個前置機
(2)乙個前置機對應多個埠
(3)乙個埠對應多個組
3、假設:
(1) 1號倉中有前置機1和2;
(2)前置機1、2各有2個埠;
(3)每個埠對應的組不同;
1、方法一:將所有字段放到一張表中
倉前置機埠組資料
1111
1111
2211
2331
1244
1215
5121
6612
2771
2288
1229
9 大家可以看到,把所有字段放在一張表中,產生很多冗餘字段。這僅僅乙個倉有
9組的情況下,倉和前置機、埠就產生了很多冗餘資料,那如果說乙個倉有
10個前置機、
20組呢?
優點:**簡單
缺點:產生很多冗餘資料
2、方法二:建立四張表(倉表、前置機表、埠表、組和資料表)
(1)糧倉表
倉表(主鍵)1
(2)前置機表
前置機(主鍵)
倉表(外來鍵)11
21(3)埠號表
埠前置基表(外來鍵)11
2112
22(4)組表
組(主鍵)
資料埠號(外來鍵)11
1221
3314
4155
2662
7728
8299
2 優點:減少冗餘,查詢方便(建立主外來鍵)
缺點:不靈活(如果某個前置機壞了,進行更換,我必須更改前置機表和埠表)
通過主外來鍵聯絡,操作時會涉及到多張表,耦合性太強。
方法三、建立中間表,解耦和
(1)糧倉表
倉序號倉表1
1 (2)前置基表
前置機序號
前置機112
2 (3)埠表
埠序號埠1
1223
142
(4)組表
組序號組號資料1
1122
2333
4445
5566
6777
8889
99(5)倉與前置機的中間表
序號倉序號
前置機序號11
1212
(7)前置機與埠中間表
序號前置機序號
埠序號11
1212
3214
22(8)埠表與組表的中間表
序號埠序號
組序號111
2123
2342
4515
6167
2782
8929
優點:減少冗餘、增加靈活性
通過中間表建立聯絡,操作時 無論是前置機、埠、組,還是具體的某個資料出現問題,我們更改時不需要更改兩張基本表。
資料庫專案實戰
1.專案介紹 建立銀行資料庫 建立資料表customer 客戶 bank 銀行 deposit 存款 向表中插入測試資料 對資料進行增刪改等操作 2.建立庫 1.檢視資料庫是否啟動。2.mysql uroot p 連線本地資料庫 3.s 檢視資料服務的狀態 4.建立資料庫並設定字符集 create ...
資料庫備份實戰二
實戰案例2 mysqldump binlog 優勢1 自動記錄日誌position位置。show master status g 2 可用性,一致性 鎖表機制。語法mysqldump h 伺服器 u使用者名稱 p密碼 資料庫名 備份檔案.sql 引數說明 庫的範圍 a,all databases 所...
你知道資料庫的設計流程嗎?
1.1需求分析的任務 通過詳細調查現實世界要處理的物件 組織,部門,企業等 充分了解原系統的工作概況 手工系統或計算機系統 明確使用者的各種需求,然後在此基礎上確定新系統的功能.1.2.需求分析的方法2.1.概念結構設計簡介從需求分析中找到實體,確認實體的屬性 確認實體的關係,畫出er圖。2.2.概...