ER 圖的最小化
問題陳述
ER 圖是顯示各種表及其之間關係的圖形表示。透過 ER 圖,我們可以減少資料庫的數量。
一對一基數
讓我們考慮以下具有一個對一個基數的圖:
上面的 ER 圖表示 3 個實體:
- 員工實體有兩個屬性,即 emp_name。emp_id 是主鍵
- 公司實體有兩個屬性,即 cmp_name。cmp_id 是主鍵
- 工作實體的主鍵可以是 emp_id 或 cmp_id
- 我們不能將 3 個表合併成一個,可以將工作合併到員工或公司中。在一對一基數場景中,至少需要 2 個表。
一對多基數
讓我們考慮以下具有一個對多基數的圖:
在這個 ER 圖中,一個員工可以為一家公司工作,但一家公司可以擁有許多這樣的員工。上面的 ER 圖表示 3 個實體:
- 員工實體有兩個屬性:emp_id 和 emp_name。emp_id 是主鍵
- 公司實體有兩個屬性:emp_id 和 cmp_name。cmp_id 是主鍵
- 我們不能將 cmp_id 作為主鍵,因為多個員工可以為同一個 cmp_id 工作。但是,我們可以將員工和工作表合併。因此,在一對多基數場景中,至少需要 2 個表。
多對多基數
讓我們考慮以下具有一個對多基數的圖:
在這個 ER 圖中,一個員工可以為多家公司工作,一家公司可以擁有許多這樣的員工。上面的 ER 圖表示 3 個實體:
- 員工實體有兩個屬性:emp_id 和 emp_name。emp_id 是主鍵
- 公司實體有兩個屬性:emp_id 和 cmp_name。cmp_id 是主鍵
- 與前面的示例不同,不能將工作表與員工或公司合併。如果我們嘗試合併它,它將建立冗餘資料。因此,在多對多基數場景中,至少需要 2 個表。
廣告