專案實戰(二) 你的資料庫靈活嗎?

2021-06-19 13:41:20 字數 1726 閱讀 1180

最近做專案的時候遇到乙個這樣的問題,乙個表中由四個欄位都是一對多的關係。如果把四個字段放入到一張表中,肯定存在很多冗餘資料。想想那怎麼辦呢?分成四張表,用主外來鍵關聯起來,但太不靈活了。想到考試系統中用到的中間表,想這裡也可以用到。現在比較一下三種建表方式的不同之處吧!

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.概...