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

關聯式資料庫設計及介面問題...

答題得分者是:supman
rollboy
一般會員


發表:8
回覆:16
積分:9
註冊:2005-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-13 19:36:55 IP:220.134.xxx.xxx 未訂閱
hi all... 我最近嘗試幫朋友寫個基本會員資料管理 除了基本個人資料, 還想添加個購買物品及購買時間 當然每個會員的購買物可能都不一樣 比如甲可能曾經買過A跟B, 乙則買過A, B, C, D, E 等物品... 我都要紀錄下來 ... 我想到的方法是用關聯式資料庫 ... 設計三個table , 假設一個為"個人資料", "購買紀錄", "購買日期" ... 然後每個table欄位設計如下 個人資料 -------------------- ID|Nane|Tel|...... -------------------- 購買紀錄(物品名稱) -------------------- ID|購買物1|購買物2|購買物3|...... -------------------- 購買日期 -------------------- ID|購買日期1|購買日期2|購買日期3|..... -------------------- 三個table以ID為關聯, 查個人資料時就可以同時得到購買紀錄購買日期, 最後在將購買紀錄購買日期互相對應 ... 物品1--物品1!! 可是我覺得這方法感覺不是很好, 而且可能會增加程式設計上的困擾!! 所以想問問有經驗的你們會怎麼設計呢?? 至於介面設計方面 ... 如果我依照上述的方法去設計資料庫!! 然後想利用DBGrid來顯示資料 ... 如果我將三個table都透過同一DBGrid來顯示 ... 畫面可能會變成下面這樣.. ----------------------------------------------- ID|Name|Tel|購買物1|購買物2|........|購買日期1|購買日期2|.......... ----------------------------------------------- 畫面很怪, 而且不容易閱讀... 如果真的必須照我設計的資料庫 ...我想使用兩個DBGrid ... DBGrid1顯示為 ... (購買物/日期以"......"顯示或是乾脆省略) ---------------- ID|Name|Tel|購買物/日期| 01|rollboy | ......... | ---------------- 然後在user點了01 roller那行之後 ... 在將購買物/日期顯示到DBGrid .. ------------------- 購買物|購買日期| C |2004/1/1| BCB |2004/1/3| ------------------- 真是不好意思, 打了這麼多字, 希望大家看的懂我的問題! 以前完全沒有資料庫的經驗, 所以真的很需要大家分享你們的經驗!! 麻煩大家了..謝謝!
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-13 19:53:39 IP:203.204.xxx.xxx 未訂閱
個人資料 -------------------- ID|Nane|Tel|...... a b c -------------------- 購買紀錄(物品名稱) -------------------- ID|購買物|購買日期...... a BCB 2005/01/01 b Delphi 2005/01/06 c Cobol 2005/01/08 -------------------- 資料設定應該這樣比較好,兩各Table就可以了,如果照您前面那樣是往後延伸的,...應該沒辦法這麼設計吧... 點選了a客戶,就會去Select出來,如下 購買紀錄(物品名稱) -------------------- ID|購買物|購買日期...... a BCB 2005/01/01 --------------------
rollboy
一般會員


發表:8
回覆:16
積分:9
註冊:2005-04-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-13 20:17:26 IP:220.134.xxx.xxx 未訂閱
謝謝你的回覆, 但我想你可能誤會我的意思!! 我是說 ... 因為每個客戶購買的東西跟次數可能會超過一樣 我必須將每樣東西紀錄下來 .. 比如 .. A客戶 BCB | 2005 C | 2005/1/1 B客戶 Access | 2004/1/1 Windows| 2005/1/1 Word | 2004/8/1 C客戶 Linux | 2003/12/12 就是不能固定每個客戶的購買次數跟購買物及日期 ... 所以才顯的麻煩 ...
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-13 20:29:04 IP:203.204.xxx.xxx 未訂閱
一樣的道理阿 購買紀錄(物品名稱) -------------------- ID|購買物|購買日期...... a BCB 2005/01/01 a BCB 2005/03/01 a Delphi 2005/04/01 b Delphi 2005/01/06 b BCB 2005/04/05 c Cobol 2005/01/08 c TC 2005/04/06 c 雜誌 2005/04/06 -------------------- Select * From Table2 Where ID='a' Result: 購買紀錄(物品名稱) -------------------- ID|購買物|購買日期...... a BCB 2005/01/01 a BCB 2005/03/01 a Delphi 2005/04/01 -------------------- Select ID,Count(*) From Table2 Group by Id Result 購買紀錄(物品名稱) -------------------- ID|數量...... a 3 b 2 c 3 -------------------- Select ID,物品,Count(*) From Table2 Group by Id,物品 Result: 購買紀錄(物品名稱) -------------------- ID|購買物|數量 a BCB 2 a Delphi 1 b Delphi 1 b BCB 1 c Cobol 1 c TC 1 c 雜誌 1 --------------------
rollboy
一般會員


發表:8
回覆:16
積分:9
註冊:2005-04-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-13 20:40:02 IP:211.74.xxx.xxx 未訂閱
喔 ... 哈哈哈!! 我懂了 ... 原來方法就是那麼簡單, 我真是糊塗!!!!< > 謝謝啦 ... 趕緊來去試試< >
rollboy
一般會員


發表:8
回覆:16
積分:9
註冊:2005-04-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-13 20:56:35 IP:220.134.xxx.xxx 未訂閱
突然想到..如果使用這方法的話, 兩個Table有無關聯性是不是就沒那麼重要了?? 就算沒有關聯一樣可以達到此效果吧?
系統時間:2024-04-30 2:17:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!