本篇為記帳錄的ER-Model設計。請先參考先前文章如下
到目前為止我們有兩份資料表分別記錄會員資料及消費記錄。這兩個資料表的資料在實體關係模型(Entity-Relation Model)中稱為實體(Entity),而ER-Model設計就是要分析實體間的關係(Relationship)。
從功能來看,記帳簿要可以讓每個會員可記錄自己的消費記錄,所以一個會員會可以有很多筆消費記錄,例如一個人一天通常就會有五六筆消費記錄;相反地,任一筆消費記錄只會歸屬於一個會員,不會同時屬於兩個及兩個以上的會員,例如一筆'大冰奶'的消費只會由某個會員產生,不會兩個人共同產生一筆消費。
所以會員
與消費記錄
兩實體的關係為一對多關係(One-To-Many),也就是一個會員
對多筆消費記錄
。而從'消費記錄'的角度來看,就是一筆消費記錄
對一個會員
。
用來表示實體關係模型的符號有很多種,下面使用Crow's foot notation(雞爪符號)來表示會員
與消費記錄
的一對多關係。
在關聯資料庫中,兩資料表是透過外鍵來建立彼此的關係。從以上的關係來看會員
為父資料表(parent),而消費記錄
為子資料表(child),透過將父資料的主鍵(Primary Key, PK)設為子資料表的外鍵(Foreign Key, FK)來關聯兩個資料表。也就是說子資料表可透過外鍵參考到父資料表。
從之前的文章我們知道會員
的主鍵欄位為ID(member_id
),所以我們要在消費記錄
建立一個外鍵欄位member_id
來關聯至會員
。
到此為止資料表的內容分別如下:
member
(會員)
- member_id(ID)(PK)
- member_account(帳號)
- member_password(密碼)
- member_name(會員名稱)
- member_status(會員狀態)
- create_time(建立時間)
- update_time(修改時間)
expense_record
(消費記錄)
- expense_id(ID)(PK)
- member_id(ID)(FK)
- expense_item(消費項目)
- expense_amount(消費金額)
- expense_date(消費日期)
- create_time(建立時間)
- update_time(修改時間)
接下來我們就可以使用MySQL來建立資料庫及資料表了。
沒有留言:
張貼留言