1. 程式人生 > >資料庫設計心得——微信銷售小程式

資料庫設計心得——微信銷售小程式

我們團隊專案是微圖書銷售小程式,根據需求一共設計了12個表和兩個檢視(cart_view,order_detail_view)。

小組:3班6組

我們小團隊在設計資料庫所花花時間一共是兩週,從設計到完成匯入資料進行測試。

在設計這個資料庫過程有挺多挫折的,首先就是需求的變化,在每一次見指導老師都會有需求的變化,導致資料庫之前設計出的版本繼續修改,但是這樣我們團隊在設計資料庫過程中學會了考慮需求變化而對資料庫進行可拓展的設計。

接下來講一下我們的資料庫:

一共 12個表:

分別是使用者資訊表,收貨地址表,使用者收藏表,購物車表,店鋪資訊表,圖書基本資訊表,圖書型別表,圖書詳情與圖書型別關係表,圖書評價表,訂單表,訂單明細表,訊息隊列表

 

  1. 使用者資訊表:

實體描述:

實體編號

實體名稱

實體命名

01

使用者表

user_table

實體說明

使用者的基本資訊

使用者實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

user_id

varchar(30)

使用者id

為使用者在微信小程式中的openid,唯一標識使用者

store_id

int

店鋪id

當用戶為賣家時該值指向使用者的店鋪

birthday

date

生日

使用者的出生日期

sex

char(1)

性別

使用者的性別

user_type

int

0

使用者型別

設定了四種使用者型別,對應0-3

phone

varchar(11)

電話號碼

使用者的電話號碼

vip_level

int

0

vip等級

使用者的vip等級

consumption

double

0

消費總計

使用者從註冊到目前消費的總額

單一個 使用者資訊表可以實現使用者登入和使用者基本資訊修改功能,使用者登入時候獲取他的user_id,這個user_id將作為小程式端的全域性變數,在以後的互動過程中經常呼叫。比如修改使用者基本資訊。這時候需要用到該表的birthatsexphone欄位,使用者的操作會影響這些欄位的更新。其次,user_type欄位是我們考慮到,二期迭代開發每個使用者可以有其他使用者模式,比如圖書管理模式,就是商家,或者是高階管理員模式,亦或是同時是商家也是高階管理員模式(這3種使用者本身也有普通使用者模式),商家和高階管理員模式可以行使不同的功能,比如商家可以擁有自己的店鋪,就是表中的store_id,而高階管理員是對軟體的維護。而表中的consumption是記錄使用者消費金額,這個會影響使用者的Vip_level

 

2.收貨地址表:

實體描述:

實體編號

實體名稱

實體命名

01

address_table

address_table

實體說明

使用者收貨地址表

收貨地址實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

address_id

int

地址編號

唯一標識地址資訊

user_id

varchar(30)

使用者編號

使用者編號

phone

varchar(11)

手機號碼

收貨人電話

recevier

varchar(30)

收貨人姓名

收貨人的姓名

receiver_address

Varchar(100)

收貨人地址

收貨人地址

收貨地址表與使用者資訊表關聯,外來鍵user_id確定是哪個使用者,然後找到該使用者的具體收貨地址,這個表可以實現使用者對自己收貨地址的增刪改查的操作

 

 

3.使用者收藏表:

實體描述:

實體編號

實體名稱

實體命名

02

collect_table

collect_table

實體說明

使用者收藏書籍或者店鋪表

使用者收藏實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

collect_id 

int

收藏編號

收藏資訊唯一識別符號

user_id

varchar(30)

使用者編號

使用者唯一識別符號

object

int

收藏物品

收藏物品

collect_type

int

收藏型別

收藏的型別

主鍵是collect_id,外來鍵是user_id,與使用者資訊表關聯,可以實現使用者對自己收藏的增刪改查操作,同時collect_type是區分使用者收藏的是書籍還是店鋪,object就是書籍或店鋪的id

 

4.購物車表:

實體描述:

實體編號

實體名稱

實體命名

02

購物車表

shopping_cart

實體說明

購物車資訊

購物車實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

book_id

int

圖書id

唯一標識圖書資訊的符號

user_id 

varchar(30)

使用者id

唯一標識使用者資訊的符號

number

int

圖書數量

記錄購物車中每一種圖書的數量

購物車表相對簡單,通過user_idbook_id找到使用者購物車中的商品數量和資訊

5.店鋪資訊表:

實體描述:

實體編號

實體名稱

實體命名

02

店鋪表

store_table

實體說明

店鋪的基本資訊

店鋪實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

store_id

int

店鋪id

用於唯一標識店鋪的id,設定了自增

store_name

varchar(30)

店鋪名稱

註冊店鋪時設定的店鋪名稱

description

varchar(200)

店鋪描述

註冊店鋪時設定的店鋪描述

create_time

date

店鋪註冊時間

註冊店鋪時的時間

star_level

int

1

店鋪星級

表示店鋪質量的店鋪星級

店鋪資訊表store_id是主鍵,和使用者資訊表裡面的store_id聯絡起來,可以知道店鋪的擁有者,其他欄位即為店鋪基本資訊

6、圖書基本資訊表:

實體描述:

實體編號

實體名稱

實體命名

01

圖書基本資訊表

Book_table

實體說明

圖書基本資訊

 圖書實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

book_id

int

自增

唯一標識圖書的符號

store_id

int

店鋪id

店鋪id

book_name

varchar(40)

圖書名

圖書名

book_description

varchar(2000)

圖書文字描述

圖書文字描述

picture_description

varchar(100)

圖片描述

圖片描述

inventory

int

庫存

庫存

book_author

varchar(50)

圖書作者

圖書作者

book_press

varchar(40)

圖書出版社

圖書出版社

price

int

價格

價格

cover

varcher(100)

封面

封面

Book_id唯一標識一本書,考慮到不同的店鋪可以賣同一本書,然後對該書的其他資訊描述不同(比如店家介紹,優惠價格),所以同一本書也可以有不同的book_idinventory這個庫存資訊是我們用來考慮給圖書庫存加閾值時用到的欄位,閾值是多少由後臺確定

7、圖書型別表

實體描述:

實體編號

實體名稱

實體命名

02

圖書型別表

Book_type

實體說明

圖書型別資訊

圖書型別實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

type_id 

int

自動編號

圖書型別唯一識別符號

type

varchar(20)

圖書型別

 

單獨設計一個圖書型別表,考慮到第23正規化,如果出現某一類書只有一種書如果下架該書籍,那個類別就會消失的問題,所以開設這樣一個表

8、圖書詳情與圖書型別關係表

實體描述:

實體編號

實體名稱

實體命名

03

btrelation_table

btrelation_table

實體說明

圖書詳情和圖書型別的關係表

圖書詳情與圖書型別關係實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

book_id

int

圖書編號

圖書唯一識別符號

type_id

int 

型別編號

型別唯一識別符號

將圖書詳情表和圖書型別表關聯起來的一個表

9、圖書評價表:

實體描述:

實體編號

實體名稱

實體命名

01

圖書評價表

evaluation_table

實體說明

圖書的評價資訊

圖書評價實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

user_id

varchar(30)

使用者id

唯一標識使用者資訊的符號

book_id

int

圖書id

唯一標識圖書資訊的符號

content

varchar(200)

評價內容

評價內容詳細資訊

圖書評價表,主鍵是user_idbook_id,這個評價不管是哪個使用者登入檢視某本書評價,都會看到某個使用者對該書的評價,例如淘寶

10、訂單表

實體描述:

實體編號

實體名稱

實體命名

02

訂單表

order_table

實體說明

訂單資訊

訂單實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

order_id

int

訂單號

訂單資訊唯一識別符號

user_id 

varchar(30)

使用者id

使用者資訊唯一識別符號

address

varcher(100)

收貨地址

收貨地址資訊

phone

varcher(11)

收貨人手機號碼

收貨人手機號碼資訊

receiver

varcher(30)

收貨人姓名

收貨人姓名資訊

order_time

date

 

下單時間

下單時間資訊

order_state

varchar(10)

訂單狀態

訂單狀態

訂單詳情表根據外來鍵user_id和使用者資訊表關聯,使用者可以檢視自己的具體訂單資訊,也可以對訂單進行增刪改查,可以修改order_state,即訂單狀態(待付款之類的),也可以修改收貨地址,手機等資訊(但是具體能不能修改要看訂單狀態,這就是具體邏輯了,已發貨肯定不能再改了)

 

11、訂單明細表

實體描述:

實體編號

實體名稱

實體命名

03

訂單明細表

orderdetail_table

實體說明

訂單詳情資訊

訂單明細實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

book_id

int

圖書標號

圖書資訊唯一識別符號

order_id

int

訂單編號

訂單資訊唯一識別符號

book_count

int

訂單中當前圖書數量

 

book_totalprice

double

訂單中本圖書總價格

 

訂單明細表就是看訂單裡面具體商品的資訊,通過book_idorder_id看到具體的訂單裡面的商品資訊(同一個訂單裡面可以有不同的書,所以這兩個欄位一起作為主鍵),然後ordder_id作為外來鍵和訂單表關聯,訂單表又與使用者資訊表關聯,所以使用者就可以完成檢視訂單裡面具體商品資訊的操作

 

12、訊息隊列表

實體描述:

實體編號

實體名稱

實體命名

01

訊息隊列表

message_queue

實體說明

儲存所有的訊息

訊息佇列實體屬性列表

屬性名

型別

是否

主鍵

是否外來鍵

可否

為空

預設值

說明

備註

message_id

int

自動遞增(從1開始)

唯一標識訊息的符號

sender_id

varchar(30)

傳送者id

 

receiver_id

varchar(30)

接收者id

 

send_time

datetime(30)

傳送訊息的時間

 

message_detail

varchar(200)

訊息內容

 

 

這個表示針對2期迭代的留言功能,具體是買家給賣家留言還是高階管理員與其他使用者互動等等情況要根據send_id receiver_id而定。