二、一家公司 Company 的資料,擬設計一資料庫來儲存,經系統分析後,得 到如下需求: 1. Company 公司由許多部門(department)組成,每一部門有一部門代 碼(dept-id) 、一部門名稱(dept-name) ,一部門會有多個地點(dept- loc ), 每 一 部 門 有 一 員 工 擔 任 主 管 , 並 記 錄 開 始 擔 任 主 管 日 期 (start_date),部門代碼可區別不同部門;一個部門可以承接許多計畫 (project),但一計畫僅由一部門承接,每一計畫有計畫代碼(proj-id) 、 名稱(proj-name)及計畫說明(proj-descript) ,計畫代碼可區別不同計 畫。 2.一部門由許多員工(employee)組成,每一員工有員工代碼(emp-id) 、 員工姓名(emp-name) 、員工性別(emp-sex)與員工生日(emp-birthdate) 每一員工隸屬於一部門,每一員工代碼可區別不同員工。員工會互相 監督(supervision),每位員工最多有一位直屬監督者,但可能會直接 監督多位其他員工。 3.一員工可以扶養多位眷屬(dependent) ,每一眷屬有眷屬代碼(dep-id) 、 眷屬姓名(dep-name)與眷屬生日(dep-birthdate) ,但一眷屬只能由一 員工來扶養。 4.一員工可以參與許多計畫,一計畫也可許多員工來參與,每一員工參 與的計畫有一參與的時數(hours)。 請劃出 Company 公司實體關聯綱要(Entity-Relationship Schema) ,包括 屬性(Attributes)、實體型態、關聯型態與相關限制。
2.一部門由許多員工(employee)組成,每一員工有員工代碼(emp-id) 、 員工姓名(emp-name) 、員工性別(emp-sex)與員工生日(emp-birthdate) 每一員工隸屬於一部門,每一員工代碼可區別不同員工。員工會互相 監督(supervision),每位員工最多有一位直屬監督者,但可能會直接 監督多位其他員工。
3.一員工可以扶養多位眷屬(dependent) ,每一眷屬有眷屬代碼(dep-id) 、 眷屬姓名(dep-name)與眷屬生日(dep-birthdate) ,但一眷屬只能由一 員工來扶養。
4.一員工可以參與許多計畫,一計畫也可許多員工來參與,每一員工參 與的計畫有一參與的時數(hours)。
請劃出 Company 公司實體關聯綱要(Entity-Relationship Schema) ,包括 屬性(Attributes)、實體型態、關聯型態與相關限制。
詳解 (共 1 筆)
詳解
實體關聯綱要圖(ERD)
lua
複製程式碼
+-----------------+ +-----------------+ +-----------------+
| Department | | Employee | | Project |
+-----------------+ +-----------------+ +-----------------+
| dept-id (PK) |<-----| emp-id (PK) | | proj-id (PK) |
| dept-name | | emp-name |-----> | proj-name |
| dept-loc | | emp-sex | | proj-descript |
+-----------------+ | emp-birthdate | | dept-id (FK) |
| dept-id (FK) | +-----------------+
+------------------+
| ^
| |
| +---------------+
v |
+-----------------+ |
| Supervision | |
+-----------------+ |
| supervisor-id (FK) |
| subordinate-id (FK) |
+-----------------+ |
| |
| |
v |
+-----------------+ |
| Management | |
+-----------------+ |
| dept-id (FK) |-----+
| emp-id (FK) |
| start_date |
+-----------------+
lua
複製程式碼
+-----------------+ +-----------------+ +-----------------+
| Department | | Employee | | Project |
+-----------------+ +-----------------+ +-----------------+
| dept-id (PK) |<-----| emp-id (PK) | | proj-id (PK) |
| dept-name | | emp-name |-----> | proj-name |
| dept-loc | | emp-sex | | proj-descript |
+-----------------+ | emp-birthdate | | dept-id (FK) |
| dept-id (FK) | +-----------------+
+------------------+
| ^
| |
| +---------------+
v |
+-----------------+ |
| Supervision | |
+-----------------+ |
| supervisor-id (FK) |
| subordinate-id (FK) |
+-----------------+ |
| |
| |
v |
+-----------------+ |
| Management | |
+-----------------+ |
| dept-id (FK) |-----+
| emp-id (FK) |
| start_date |
+-----------------+
+-----------------+
| Participation |
+-----------------+
| emp-id (FK) |
| proj-id (FK) |
| hours |
+-----------------+
| Participation |
+-----------------+
| emp-id (FK) |
| proj-id (FK) |
| hours |
+-----------------+
+-----------------+
| Dependent |
+-----------------+
| dep-id (PK) |
| dep-name |
| dep-birthdate |
| emp-id (FK) |
+-----------------+
關聯型態及相關限制
Department - Employee: 一對多(1
)
| Dependent |
+-----------------+
| dep-id (PK) |
| dep-name |
| dep-birthdate |
| emp-id (FK) |
+-----------------+
關聯型態及相關限制
Department - Employee: 一對多(1
)
一個部門可以有多個員工,每個員工隸屬於一個部門(dept-id 作為外鍵在 Employee 中)。
Department - Project: 一對多(1
)
Department - Project: 一對多(1
)
一個部門可以承接多個計畫,每個計畫由一個部門承接(dept-id 作為外鍵在 Project 中)。
Employee - Dependent: 一對多(1
)
Employee - Dependent: 一對多(1
)
一個員工可以有多個眷屬,每個眷屬僅有一個員工扶養(emp-id 作為外鍵在 Dependent 中)。
Employee - Supervision: 自己關聯(Employee - Employee)
Employee - Supervision: 自己關聯(Employee - Employee)
每個員工最多有一位直屬監督者,但可能會直接監督多位其他員工(supervisor-id 和 subordinate-id 都是 Employee 的外鍵)。
Employee - Project: 多對多(M
)
Employee - Project: 多對多(M
)
一個員工可以參與多個計畫,一個計畫也可有多位員工參與(透過 Participation 關聯,emp-id 和 proj-id 作為外鍵)。
Department - Management: 一對一(1:1)
Department - Management: 一對一(1:1)
每個部門有一位主管(emp-id 作為外鍵在 Management 中,並與 dept-id 一起確定唯一性)。
這樣設計的 ERD 滿足了公司資料儲存和管理的需求,確保資料庫的一致性和完整性。
這樣設計的 ERD 滿足了公司資料儲存和管理的需求,確保資料庫的一致性和完整性。