Re: [系統] 同個欄位對應到不同資料表的id

看板Database作者 (jamuqa)時間14年前 (2011/03/24 19:53), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1DYp3A5G (Database)
文章代碼(AID): #1DYp3A5G (Database)