Re: [系統] 同個欄位對應到不同資料表的id
※ 引述《jamuqa (jamuqa)》之銘言:
: 麻煩大家看我這樣設計有沒有問題..
: 交易紀錄表
: TradeRecordId CustomerId TradeRecordState
: 1 1 1
: 2 1 2
: 顧客資料表
: CustomerId CustomerName
: 1 AAA
: 員工資料表
: EmployeeId EmployeeName
: 1 BBB
: 當TradeRecordState為1時,CustomerId對應到顧客資料表的CustomerId
: 當TradeRecordState為2時,CustomerId對應到員工資料表的EmployeeId
: 所以TradeRecordId為1的交易紀錄意義為AAA所購買
: 所以TradeRecordId為2的交易紀錄意義為BBB所購買
: 仰或是將員工加到顧客資料表
: 顧客資料表
: CustomerId CustomerName
: 1 AAA
: 2 BBB
: 這樣交易紀錄表的CustomerId只對應到顧客資料表裡
: 有請各位大大賜教
我再重新敘述我的問題好了
方法1(目前傾向的作法)
交易紀錄資料表紀錄了交易的行為,其中有一個欄位紀錄著交易的對象
交易紀錄表:
交易序號 交易對象 交易狀態
1 1 顧客
2 1 員工
顧客資料表:
顧客id 顧客名字
1 小王
員工資歷表:
員工id 員工名字
1 小李
假設小王是一般顧客,小李是店員,他們的資料分別紀錄在不同資料表中
(顧客資料表和店員資料表)
為了區分這兩筆交易
目前的作法是在交易紀錄表開一個交易狀態的欄位去區別他
也就是說交易對象內容的值相同,但交易狀態不同
交易對象的值則指向不同的資料表,代表著交易對象為不同的人
缺點:
1. 交易對象的值可能指向不同的資料表
方法2
交易紀錄表多開一個欄位紀錄當交易對象為員工的id
交易序號 顧客id 員工id
1 1 0
2 0 1
缺點:
1. 顧客id和員工id相依性高,不符2階正規劃
2. 新增某類型之交易對象時,又要開新欄位去區分
優點:
1. 同一欄位明確指向哪個資料表的id
方法3
多開一個資料表紀錄交易對象為員工的交易資料
交易序號 顧客id
1 1
交易序號 員工id
1 1
缺點:
1. 算總金流時要向兩個表分別查詢並加總
2. 新增某類型之交易對象時,又要開新資料表
優點:
1. 較省空間
方法4
將員工資料表和顧客資料表合併,交易紀錄表只像此表的id搜尋
人的資料表:
人的id 人的名字 人的屬性
1 小李 顧客
2 小王 員工
缺點:
1. 員工和顧客之屬性並不盡相同
2. 目前作法是員工和顧客分開,合併工程浩大
優點:
1. 無須更改目前的交易紀錄表
請問各位還有更好的設計嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.125.41.241
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):