# 資料庫管理 - 第一組 <p style="text-align:center;">組員 <br>吳秉哲 資管二 B12705049 <br>詹詠翔 資管二 B12705063 <br>趙子佾 資管二 B12705064 </p> ## 1. 系統分析 本系統旨在管理一家量販店。其中資料表包含,員工、商品、供應商、顧客(會員和非會員)、訂單。顧客將會被會被分為會員以及非會員。 Relations:`supply`、`buy`、`cancel`、`fix`、`return`、`exchange` ### 1.1 系統功能 #### 1.1.1 關於商店的背景設定 使用者為顧客,顧客可以是會員或是非會員,並且能透過我們的系統下訂單購買本店的商品,並可以使用多元支付方式,如現金、信用卡、轉帳等等方法付款。對於這家量販店的會員,我們會儲存該會員的姓名、電話、生日、地址以及電子郵件信箱。會員可以使用電子郵件登入帳號,更改會員的個人資料,也能購買商品產生訂單。除此之外,針對現場購物的體驗有任何不滿意的部分也可以透過意見表回饋,這個表單當然也支援客訴員工。 #### 1.1.2 給使用者的功能 我們的使用者可以使用以下功能: - **創建或修改會員資料**: 顧客可以建立以及修改自己的帳號基本資料如姓名、電話以及地址等。 - **下訂單**:顧客可以是會員或非會員,並能透過系統下訂單購買商品,訂單支持現金、信用卡、轉帳等多種支付方式。 - **會員管理**:會員可以登入、更改個人資料、購買商品並產生訂單。 - **意見回饋**:顧客可以透過意見表回饋購物體驗,支持客訴。 - **查詢訂單**:顧客可以查詢之前已經購買的訂單狀態。 - **取消訂單**:顧客可以取消之前成立的訂單。 #### 1.1.3 給管理員的功能 我們的管理員劃分為兩種等級: **經理** 經理可以使用以下功能: - **查看員工資料**:經理可以查詢負責部門員工的基本資料,包括姓名、電話、生日、地址等。 - **出缺勤管理**:經理可以負責部門員工的出缺勤紀錄,並處理請假申請。 - **客訴管理**:經理可以查看負責部門及員工受到的客訴原因,並進行處理和跟進。 - **訂單查詢**:經理可以查詢所有訂單的詳細資訊,包括訂單編號、日期、支付方式、負責員工等。 - **訂單處理**:經理可以處理訂單的取消、退貨、換貨等操作。 - **查看庫存**:經理可以查詢商品的存貨量,確保庫存充足。 - **進出貨管理**:經理可以查看商品的進出貨日期,並管理供應商相關資訊。 - **權限設定**:經理可以設負責部門員工的權限,確保系統安全。 - **數據分析**:經理可以查看負責部門內的各類數據報表,進行分析和決策。 **一般員工** 一般員工可以使用以下功能: - **出缺勤查詢**:員工可以查看自己的出缺勤紀錄,提出請假申請。 - **客訴查詢**:員工可以查看自己受到的客訴原因,並進行處理和跟進。 - **查看庫存**:員工可以查詢商品的存貨量,確認是否有貨物可以立即提供客戶。 - **訂單查詢**:員工可以查詢負責訂單的詳細資訊,包括訂單編號、日期、支付方式。 - **訂單處理**:員工可以處理負責訂單的取消、退貨、換貨等操作。 ## 2. 系統設計 ### 2-1. 前後端設計 前端的部分我們預計使用網頁方式且使用apache web server服務呈現,並透過ajax的方式與後端進行資料傳輸並呈現,而後端部分會使用php撰寫,並且在後端與MySQL進行連接。並且為了簡化伺服器及網站的架設過程,我們會使用xampp建立網站及資料庫。 ### 2-2. 實體關聯圖(ER diagram) ![1](https://hackmd.io/_uploads/rkdpjs9lJl.jpg) ### 2-3. 關係示意圖(Relational schema diagram) ![Data Base Final Project](https://hackmd.io/_uploads/SykToj9xJl.png) ### 2-4. Data Dictionary - DEPT 表格 | 欄位名稱 | 資料型別 | 說明 | Keys | 限制 | 定義域 | |:---------:|:--------:|:--------:|:-----------:|:----:|:------:| | DeptID | INT | 部門編號 | PK | Not NULL | | | Dept_name | VARCHAR | 部門名稱 | | | | - EMPLOYEE 表格 | 欄位名稱 | 資料型別 | 說明 | Keys | 限制 | 定義域 | |:---------:|:--------:|:------------:|:----------------:|:---:|:---:| | EmpID | INT | 員工編號 | PK | Not NULL, Unique | | | Emp_name | VARCHAR | 員工姓名 | | Not NULL | | | Emp_bth | DATE | 員工生日 | | Not NULL | | | Emp_phone | VARCHAR | 員工電話 | | Not NULL | | | Emp_dept | INT | 所屬部門編號 | FK: DEPT(DeptID) | | | | Referential Trigger | On Update | On delete | | :-: | :-: | :-: | | Emp_dept | Cascade | Set NULL | - MEMBER 表格 | 欄位名稱 | 資料型別 | 說明 | Keys | 限制 | 定義域 | |:------------:|:--------:|:------------:|:-----------:|:----:|:------:| | MemID | INT | 會員編號 | PK | Not NULL, Unique | | | Mem_email | VARCHAR | 會員電子郵件 | | Not NULL, Unique | | | Mem_name | VARCHAR | 會員名稱 | | Not NULL | | | | Mem_address | TEXT | 會員地址 | | | | | Mem_phone | VARCHAR | 會員電話 | | Not NULL | | | Mem_bth | DATE | 會員生日 | | | | - ORDER 表格 | 欄位名稱 | 資料型別 | 說明 | Keys | 限制 | 定義域 | |:---------------:|:--------:|:------------:|:-------------------:|:----:|:------:| | OrdID | INT | 訂單編號 | PK | Not NULL, Unique | | | Create_date | DATETIME | 訂單日期時間 | | Not NULL | | | Way\_to\_pay | VARCHAR | 支付方式 | | Not NULL | \{Cash, Credit Card, Debit Card, Transfer, Prepaid\} | | Cancel\_or\_not | BOOLEAN | 訂單是否取消 | | Not NULL, Default: Normal | \{Normal, Cancelled\} | | EmpID | INT | 負責員工編號 | FK: EMPLOYEE(EmpID) | Not NULL | | | MemID | INT | 會員編號 | FK: MEMBER(MemID) | Not NULL | | | Income | INT | 該訂單的實收金額| | | | | Referential Trigger | On Update | On delete | | :-: | :-: | :-: | | EmpID | Cascade | Set NULL | | MemID | Cascade | Set NULL | - ORDER_DETAIL 表格 | 欄位名稱 | 資料型別 | 說明 | Keys | 限制 | 定義域 | |:--------:|:--------:|:--------:|:----------------------:|:----:|:------:| | OrdID | INT | 訂單編號 | PK, FK: ORDER(OrdID) | Not NULL | | | MerID | INT | 商品編號 | PK, FK: MERCHANDISE(MerID) | Not NULL | | | Quantity | INT | 購買的商品數 | | Not NULL | | | Referential Trigger | On Update | On delete | | :-: | :-: | :-: | | OrdID | Cascade | Cascade | | MerID | Cascade | Set NULL | - MERCHANDISE 表格 | 欄位名稱 | 資料型別 | 說明 | Keys | 限制 | 定義域 | |:--------:|:--------:|:----------:|:--------------------:|:----:|:------:| | MerID | INT | 商品編號 | PK | Not NULL, Unique | | | Retail_price | DECIMAL | 商品價格 | | Not NULL | | | Mer_name | VARCHAR | 商品名稱 | | Not NULL | | | Start_date | DATETIME | 該商品價格開始日期 | | Not NULL | | - SUPPLIER 表格 | 欄位名稱 | 資料型別 | 說明 | Keys | 限制 | 定義域 | |:----------:|:--------:|:----------:|:-----------:|:----:|:------:| | SuppID | INT | 供應商編號 | PK | Not NULL, Unique | | | Supp_name | VARCHAR | 供應商名 | Not NULL | | | Supp_phone | VARCHAR | 供應商電話 | | Not NULL | | - SUPPLIES 表格 | 欄位名稱 | 資料型別 | 說明 | Keys | 限制 | 定義域 | |:----------:|:--------:|:----------:|:-----------:|:----:|:------:| | SuppID | INT | 供應商編號 |PK, FK:SUPPLIER(SuppID) | Not NULL| | | MerID | INT | 商品編號 | PK, FK:MERCHANDISE(MerID) | Not NULL| | | Price | INT | 進貨價格 | | Not NULL | | | Price_start_date | DATETIME | 進貨價開始日期 | | Not NULL | | | Referential Trigger | On Update | On delete | | :-: | :-: | :-: | | SuppID | Cascade | Set NULL | | MerID | Cascade | Set NULL | ### 2-5. 正規化設計 - 1NF : 資料已最小化,且每個資料都依賴主鍵,故符合1NF。 - 2NF : 每個資料表都完全依賴所有主鍵,沒有部份依賴的產生,故符合2NF。 - 3NF : 每個資料表中都沒有出現遞移相依的狀況,故符合3NF。 - BCNF : 每個資料表沒有產生主鍵依賴於非主鍵資料以及主鍵之間互相依賴的狀況,故符合BCNF。 - 4NF : 每個資料表中皆沒有出現多個一對多的資料合併的狀況,故符合4NF。 ## 3. 系統實作 ### 3-1. 前端實作 ### 3-2. 後端實作 ### 3-3. 資料庫實作 ## 4. 分工資訊 ## 5. 專案心得 - 吳秉哲 Bruh DB Er - 詹詠翔 Bruh - 趙子佾 Bruh - **進行抽卡**:有機率可以抽????到雷電將軍,外加一個蛋水蛾???? ![b6f12003a4a7fa020d88aba667798fcf_6271515817510157004](https://hackmd.io/_uploads/SJbNUqClke.jpg) <br><a href="https://github.com/eric2969/DB2024_project">GitHub</a> <br>YouTube: www.com