AdSense

網頁

2019/1/3

使用SpringBoot打造記帳簿專案(六)ER-Model

本篇為記帳錄的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來建立資料庫及資料表了。

使用SpringBoot打造記帳簿專案(七)建立MySQL EER Diagram

沒有留言:

AdSense