題組內容
一、假設你想替臺灣 COVID-19 的公費疫苗接種設計一個簡易資料庫,有以
下幾種實體(Entity Type):
● 疫苗(Vaccine):屬性包括名稱(name)、臨床試驗階段(phase)、製造國(madeBy),剩餘數量(amount),其中名稱和製造國合起來是唯一。
●施打輪(Round):屬性包括輪數(num)、預約開始日期(rBdate)、預約結束日期(rEdate)、施打劑量(dose),其中輪數是唯一。
● 登記人(Person):屬性包括識別號(pId)、姓名(name)、出生年月日(bDate)、性別(gender),其中識別號是唯一。
●接種站(Station):屬性包括識別號(sId)、名稱(name)、容納人數(capacity),其中識別號是唯一。
其中登記人在那一個施打輪的那一個接種站的接種日期都需記載,此外每一施打輪所用的疫苗、有那些接種站也需記載。
下幾種實體(Entity Type):
● 疫苗(Vaccine):屬性包括名稱(name)、臨床試驗階段(phase)、製造國(madeBy),剩餘數量(amount),其中名稱和製造國合起來是唯一。
●施打輪(Round):屬性包括輪數(num)、預約開始日期(rBdate)、預約結束日期(rEdate)、施打劑量(dose),其中輪數是唯一。
● 登記人(Person):屬性包括識別號(pId)、姓名(name)、出生年月日(bDate)、性別(gender),其中識別號是唯一。
●接種站(Station):屬性包括識別號(sId)、名稱(name)、容納人數(capacity),其中識別號是唯一。
其中登記人在那一個施打輪的那一個接種站的接種日期都需記載,此外每一施打輪所用的疫苗、有那些接種站也需記載。
(一)請根據以上說明畫出實體關係圖(Entity Relationship Diagram),題 目沒有說明處可自行假設,但要說明清楚。
詳解 (共 1 筆)
詳解
+--------------+ +-------------+ +--------------+
| 疫苗 (Vaccine) | | 施打輪 (Round) | | 登記人 (Person) |
+--------------+ +-------------+ +--------------+
| name (PK) | | num (PK) | | pId (PK) |
| phase | | rBdate | | name |
| madeBy (PK) | | rEdate | | bDate |
| amount | | dose | | gender |
+--------------+ +-------------+ +--------------+
| | |
| | |
| | |
| | |
+-------------+ | +---------------+
| 接種站 (Station) | | | 接種記錄 (VaccinationRecord) |
+-------------+ | +---------------+
| sId (PK) | | | pId (FK) |
| name | +---------------------->| sId (FK) |
| capacity | | num (FK) |
+-------------+ | vDate |
| +---------------+
|
|
+---------------+
| 施打輪與疫苗 (RoundVaccine) |
+---------------+
| num (FK) |
| name (FK) |
| madeBy (FK) |
+---------------+
|
|
+---------------+
| 施打輪與接種站 (RoundStation) |
+---------------+
| num (FK) |
| sId (FK) |
+---------------+
說明
疫苗 (Vaccine)
| 疫苗 (Vaccine) | | 施打輪 (Round) | | 登記人 (Person) |
+--------------+ +-------------+ +--------------+
| name (PK) | | num (PK) | | pId (PK) |
| phase | | rBdate | | name |
| madeBy (PK) | | rEdate | | bDate |
| amount | | dose | | gender |
+--------------+ +-------------+ +--------------+
| | |
| | |
| | |
| | |
+-------------+ | +---------------+
| 接種站 (Station) | | | 接種記錄 (VaccinationRecord) |
+-------------+ | +---------------+
| sId (PK) | | | pId (FK) |
| name | +---------------------->| sId (FK) |
| capacity | | num (FK) |
+-------------+ | vDate |
| +---------------+
|
|
+---------------+
| 施打輪與疫苗 (RoundVaccine) |
+---------------+
| num (FK) |
| name (FK) |
| madeBy (FK) |
+---------------+
|
|
+---------------+
| 施打輪與接種站 (RoundStation) |
+---------------+
| num (FK) |
| sId (FK) |
+---------------+
說明
疫苗 (Vaccine)
屬性:名稱 (name, PK)、臨床試驗階段 (phase)、製造國 (madeBy, PK)、剩餘數量 (amount)
主鍵:名稱 (name) 和製造國 (madeBy) 的組合鍵唯一識別一種疫苗。
施打輪 (Round)
主鍵:名稱 (name) 和製造國 (madeBy) 的組合鍵唯一識別一種疫苗。
施打輪 (Round)
屬性:輪數 (num, PK)、預約開始日期 (rBdate)、預約結束日期 (rEdate)、施打劑量 (dose)
主鍵:輪數 (num) 唯一識別一個施打輪。
登記人 (Person)
主鍵:輪數 (num) 唯一識別一個施打輪。
登記人 (Person)
屬性:識別號 (pId, PK)、姓名 (name)、出生年月日 (bDate)、性別 (gender)
主鍵:識別號 (pId) 唯一識別一個登記人。
接種站 (Station)
主鍵:識別號 (pId) 唯一識別一個登記人。
接種站 (Station)
屬性:識別號 (sId, PK)、名稱 (name)、容納人數 (capacity)
主鍵:識別號 (sId) 唯一識別一個接種站。
接種記錄 (VaccinationRecord)
主鍵:識別號 (sId) 唯一識別一個接種站。
接種記錄 (VaccinationRecord)
屬性:識別號 (pId, FK)、接種站識別號 (sId, FK)、輪數 (num, FK)、接種日期 (vDate)
主鍵:識別號 (pId)、接種站識別號 (sId)、輪數 (num)、接種日期 (vDate) 的組合鍵唯一識別一個接種記錄。
外來鍵:pId 參照 Person 表,sId 參照 Station 表,num 參照 Round 表。
施打輪與疫苗 (RoundVaccine)
主鍵:識別號 (pId)、接種站識別號 (sId)、輪數 (num)、接種日期 (vDate) 的組合鍵唯一識別一個接種記錄。
外來鍵:pId 參照 Person 表,sId 參照 Station 表,num 參照 Round 表。
施打輪與疫苗 (RoundVaccine)
屬性:輪數 (num, FK)、疫苗名稱 (name, FK)、製造國 (madeBy, FK)
主鍵:輪數 (num)、疫苗名稱 (name)、製造國 (madeBy) 的組合鍵唯一識別施打輪與疫苗的關係。
外來鍵:num 參照 Round 表,name 和 madeBy 參照 Vaccine 表。
施打輪與接種站 (RoundStation)
主鍵:輪數 (num)、疫苗名稱 (name)、製造國 (madeBy) 的組合鍵唯一識別施打輪與疫苗的關係。
外來鍵:num 參照 Round 表,name 和 madeBy 參照 Vaccine 表。
施打輪與接種站 (RoundStation)
屬性:輪數 (num, FK)、接種站識別號 (sId, FK)
主鍵:輪數 (num) 和 接種站識別號 (sId) 的組合鍵唯一識別施打輪與接種站的關係。
外來鍵:num 參照 Round 表,sId 參照 Station 表。
ERD 的關聯性和基數說明
疫苗 (Vaccine) 與 施打輪 (Round):多對多關係。每個施打輪可以使用多種疫苗,每種疫苗可以用於多個施打輪。
施打輪 (Round) 與 接種站 (Station):多對多關係。每個施打輪可以在多個接種站進行,每個接種站可以進行多個施打輪。
登記人 (Person) 與 接種記錄 (VaccinationRecord):一對多關係。每個登記人可以有多次接種記錄。
接種站 (Station) 與 接種記錄 (VaccinationRecord):一對多關係。每個接種站可以有多次接種記錄。
施打輪 (Round) 與 接種記錄 (VaccinationRecord):一對多關係。每個施打輪可以有多次接種記錄。
這樣設計的 ERD 確保了數據庫的完整性和關聯性,同時滿足了 BCNF 的要求。
主鍵:輪數 (num) 和 接種站識別號 (sId) 的組合鍵唯一識別施打輪與接種站的關係。
外來鍵:num 參照 Round 表,sId 參照 Station 表。
ERD 的關聯性和基數說明
疫苗 (Vaccine) 與 施打輪 (Round):多對多關係。每個施打輪可以使用多種疫苗,每種疫苗可以用於多個施打輪。
施打輪 (Round) 與 接種站 (Station):多對多關係。每個施打輪可以在多個接種站進行,每個接種站可以進行多個施打輪。
登記人 (Person) 與 接種記錄 (VaccinationRecord):一對多關係。每個登記人可以有多次接種記錄。
接種站 (Station) 與 接種記錄 (VaccinationRecord):一對多關係。每個接種站可以有多次接種記錄。
施打輪 (Round) 與 接種記錄 (VaccinationRecord):一對多關係。每個施打輪可以有多次接種記錄。
這樣設計的 ERD 確保了數據庫的完整性和關聯性,同時滿足了 BCNF 的要求。