全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1089
推到 Plurk!
推到 Facebook!

第三正規化後不能應付例外情況,怎麼辦?

尚未結案
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-24 12:58:53 IP:210.201.xxx.xxx 未訂閱
大大們, 以 Access 或 MS Sql Server 內附的範例資料庫 NorthWind 為例, 如果有家貿易公司建了一個跟 NorthWind 一模一樣的資料庫,並且使用中, 而有一天,一位散客登門光顧,但因購貨太多,無法自己帶走,需要公司於指定日其代為送貨。 顧客下了訂金,公司員工要輸入訂單資料,發現訂單資料表的客戶編號為外鍵,參考到客戶資料表的客戶編號,由於這位客人在客戶資料表中並沒有登錄,所以員工無法在訂單中輸入客戶編號,但訂單資料表裡面除了客戶編號之外,並沒有建立任何其他跟客戶有關的資料,員工就無法馬上輸入客人的名稱、地址或電話等等跟送貨有關的資料。 如果員工不把資料輸入到訂單資料表,略過訂單這一關,以手工方法直接填寫送貨單,那麼這位客人的購貨紀錄就無法紀錄在資料庫裡面,而老闆以後如果希望跟這位客人有更多生意往來,就無紀錄可查。 但如果員工為每一位來光顧的散客都建立客戶編號,那會造成客戶資料表中只有比例很少的客戶是經常往來的客戶,搞不定客戶資料表有一萬筆客戶資料, 但只有一百位客戶是經常下訂單的,其餘都是"一次客戶"。 如果一開始建立資料庫時,就把客戶資料表跟訂單資料表合拼為一,那麼這個問題就得到解決,但是,這又無法享受資料庫正規化所帶來的好處。 這種情形該怎麼辨?
scotthsiao
高階會員


發表:13
回覆:324
積分:147
註冊:2005-02-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-24 13:16:42 IP:211.74.xxx.xxx 未訂閱
建議如下 : 1. 可以在客戶的 table 中定義"散客" 2. 出貨時選"散客"之客戶編號,並在出貨單的備註欄記錄送貨地點及其他資料
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-24 16:05:50 IP:210.201.xxx.xxx 未訂閱
scotthsiao大大, 您提供的方法很直覺,不過,這會有點怪怪的,因為現在一般公司的送貨單都是印刷廠印好的一式三份或四份的格式,上面已經印好一些每張出貨單都會有的共同東西,例如 "公司名稱","電話","收貨人" 等等,真正的公司名稱、電話等等,會由報表程式自動填上。如果給散客的出貨單裡面的公司名稱、收貨人等等欄位全部空白,而只有備註欄有相關的客戶資料,客戶會覺得很奇怪,而且送貨的人會以為那是發票的寄送地址,有些出貨單真的如此,當中有兩個地址,一個是送貨地址,一個發票地址,如果送貨地址沒有印在固定的位置,送貨人員會不好搞,尤其是公司是委託宅配公司送貨的話,那就更麻煩。 而更重要的是,散客的銷售紀錄沒有出現在訂單資料表裡面,必須要再調閱紙張印出來的出貨單存底一張一張地看,才能找到某位散客的購貨情況。
scotthsiao
高階會員


發表:13
回覆:324
積分:147
註冊:2005-02-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-24 16:38:27 IP:211.74.xxx.xxx 未訂閱
您說的也有道理,不過在日常經驗中,這類的散客都是用手填單來完成的,像量販店之類的。 如果真的要作到記錄的目的,可以再開一個第二客戶資料檔,當場把散客的資料輸進去。事後再作統計,把有潛力的散客移到主要的客戶檔內即可。如果散客資料太多也可以定期刪去舊的。 不過在實務上,有人可以隨時輸入散客的資料嗎 ?
cxh17895
初階會員


發表:13
回覆:37
積分:25
註冊:2003-03-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-24 16:48:58 IP:210.68.xxx.xxx 未訂閱
你的想法就有點矛盾!! 文中有句話 ''員工不把資料輸入到訂單資料表'' 又寫到 ’而老闆以後如果希望跟這位客人有更多生意往來,就無紀錄可查。’ 依老闆的角度想,可能會比較好! 不想建立散客資料,又想查詢消費記錄?? 如果想長期追蹤,怎能不建資料呢?? 想法簡單一點,只要是客戶,一律建資料, 那我請教你!如果客戶只有報價,卻沒有訂購?是否還有建檔? 比較仔細作法還是要建檔,因為有報價記錄,可以報價單轉訂購單, 現在電腦容量大,速度快,用不著再用10年前的想法來開發系統哦! 你參考!
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-25 09:29:32 IP:210.201.xxx.xxx 未訂閱
scotthsiao大大, 我寫了程式去呼叫 Rave 報表來列印出貨單,程式會展示出訂單資料表,表中有一個 Boolean 欄位,使用者會用滑鼠點選想要列印的出貨單,選好後,按"列印",就會列印出所選取的出貨單。 [訂單表]中以客戶編號去[客戶表]裡面查出客戶的名稱、地址、電話等相關資料。我可以在[客戶表]建立一個編號為 0 的客戶編號,以代表所有散客,並且 不填上其餘相關資料,報表程式也會列印出散客的訂單,只是名稱、地址、電話等等都是空白,自己再手寫填上去就好。再把散客資料記錄在別的地方。 但這樣做,以後會查不出來這些客戶編號為 0 的訂單是哪個客戶。
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-25 09:39:35 IP:210.201.xxx.xxx 未訂閱
cxh17895 大大, 除了為每一個客戶,不論常客或散客,一律建檔之外,好像也沒有其他好辦法。這可能就要在客戶資料表再增加一個欄位來記錄客戶的購買情形,不然以後要寄賀年卡之類的東西時,全部有記錄的客戶都要寄的話,也實在太累人了。甚至於,以後老闆要叫業務去拜訪客戶時,會搞不清楚哪些客戶比較重要,哪些比較次要,哪些不重要。
scotthsiao
高階會員


發表:13
回覆:324
積分:147
註冊:2005-02-01

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-25 09:45:00 IP:210.66.xxx.xxx 未訂閱
當場沒把客戶資料輸入就會發生這種找不到的情況。 可以用管理的方式來處理,每月整理一次出貨單,把有潛力的散客編入。 或是採用量販店的模式,用會員卡建檔,就一定有資料。
cxh17895
初階會員


發表:13
回覆:37
積分:25
註冊:2003-03-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-08-25 11:06:43 IP:61.223.xxx.xxx 未訂閱
你的問題, 可以在客戶資料中,加註重要度旗標,1-9 ,不就解決了.. 基本上,這是實務處理的問題, 如果,真是不那麼重,就有一個公用客戶號,來處理散客的資料即可!
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-08-25 17:52:47 IP:210.201.xxx.xxx 未訂閱
cxh17895 大大, 我想暫時來講,還是你的方法可行。在客戶資料表中註明客戶的重要等級, 以後調閱來分析時,就加個 where [等級] = '最重要',這樣就好了。
系統時間:2024-06-18 7:53:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!