設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

tag 標(biāo)簽: 進(jìn)銷存系統(tǒng)

相關(guān)日志

分享 淺談“汽車進(jìn)銷存系統(tǒng)”之三:表設(shè)計(下)
熱度 2 roych 2016-3-4 08:49
從原表中,我們可以很清晰地分出幾塊: 1、 車輛信息(型號、底盤號碼等等)。 2、 物流信息(進(jìn)庫日期、銷售日期、調(diào)撥日期等等)。 3、 客戶信息(購車用戶、手機號碼等等)。 4、 銷售信息(銷售價格、終端價等等)。 5、 退貨信息(退貨原因等)。 6、 供貨商信息(供貨商名稱)。 把前面的表設(shè)計完之后,接下來就開始設(shè)計進(jìn)存銷數(shù)據(jù)表了。 在講解數(shù)據(jù)表之前,應(yīng)先要把流程理清楚。我們可以這樣設(shè)想: 錄入了汽車基礎(chǔ)信息之后,然后第一次進(jìn)庫(采購進(jìn)庫)。接下來,就有 2 種處理方式:調(diào)撥到別的分店(調(diào)撥出庫)、銷售給客戶(銷售出庫);如果分店賣不出去,自然就把它再返回給總店(調(diào)撥進(jìn)庫),而客戶取消訂單或者返修什么的,自然就退貨了(退貨進(jìn)庫)。 先說采購進(jìn)庫表。顯然,前面已經(jīng)錄入汽車信息了,如果仍然是每次只能進(jìn)庫一個產(chǎn)品,估計倉管一定保證不打死你。為此,應(yīng)該在車輛信息加上一個“選擇”的是否字段,這樣批量進(jìn)庫錄入就方便多了。 采購進(jìn)庫表的字段并不難確定:進(jìn)庫 ID ,進(jìn)庫日期,操作人,底盤號碼,備注。基于同樣原因,可以再加上一個選擇字段。 同樣地,調(diào)撥出庫表的字段也類似,不過由于調(diào)撥的是二級分銷商,因此,還需要加上調(diào)往單位 ID ,因此,最終字段是:出庫 ID ,調(diào)撥出庫日期,操作人,底盤號碼,調(diào)往單位 ID ,備注,選擇。 與調(diào)撥出庫對應(yīng)的調(diào)撥進(jìn)庫表,顯然只需要把相應(yīng)的出庫字段改為進(jìn)庫即可。 銷售信息表嘛,就在這調(diào)撥出庫表的基礎(chǔ)上加上一些價格信息,客戶 ID ,以及票證信息等等,以便查詢。 退貨進(jìn)庫表與采購進(jìn)庫表區(qū)別并不大,只是在這基礎(chǔ)上加上一個退貨原因,以便查詢和改善客戶滿意度。 為什么數(shù)據(jù)庫里的表跟上面的并不一致呢?是的,上面講的是理論上的設(shè)計,不過,是否就這樣設(shè)計應(yīng)該從實現(xiàn)方式出發(fā)。 前面說過,如果分散成這么多個表,那么計算庫存時則必須使用聯(lián)合查詢再進(jìn)行加減,因此我們改為實時方式來顯示,以減少運算。也就是說,進(jìn)庫表有多少就是多少庫存。 這樣一來,那么一個進(jìn)庫表就可以解決了。而為了區(qū)分進(jìn)庫的類型(采購進(jìn)庫、調(diào)撥進(jìn)庫和退貨進(jìn)庫),還需要加上一個進(jìn)庫類型字段。 顯然,可以用同樣的方式建立起出庫表。也許有人會說了,銷售明細(xì)表和調(diào)撥出庫表不是有相關(guān)信息了嗎?然而,出于匯總的考慮,建議還是加上吧。 機智如你,肯定發(fā)現(xiàn)了這個問題:銷售出庫表,有一個退貨進(jìn)庫表與之對應(yīng),而調(diào)撥出庫卻是“形影相吊,煢煢孑立”。 為什么呢?答案很簡單。因為實際業(yè)務(wù)中,調(diào)撥進(jìn)庫只能退回總店,而不能在二級分銷商之間互相調(diào)撥。因此,只需要進(jìn)庫時在進(jìn)庫表里追加數(shù)據(jù),并更新汽車信息表中的調(diào)撥進(jìn)庫時間,然后刪除調(diào)撥出庫相應(yīng)的記錄即可,而沒必要建立一個調(diào)撥進(jìn)庫表。當(dāng)然更加不應(yīng)該增加一個調(diào)出單位字段了。 根據(jù)實際情況建立表間關(guān)系。這里并沒有把所有表都在關(guān)系視圖里建立關(guān)系,例如汽車信息表和銷售信息表等,如果非要創(chuàng)建,它們則屬于一對一,且應(yīng)該選擇左聯(lián)接方式。另外,值得注意的是,這里的關(guān)系全部都取消了級聯(lián)更新和級聯(lián)刪除。這兩個屬性是有利有弊: 好處在于可以維護(hù)數(shù)據(jù)完整性,減少操作查詢,例如,對于員工信息系統(tǒng)來說,可以考慮,這樣的話,當(dāng)員工離職后即可刪掉相應(yīng)的數(shù)據(jù),而不必?fù)?dān)心漏掉什么。 壞處當(dāng)然也是因為這個了。如果不希望因為主表數(shù)據(jù)的更改導(dǎo)致其他歷史數(shù)據(jù)發(fā)生變化,則應(yīng)該取消它。真可謂“成也蕭何敗蕭何”。 表的講解到此結(jié)束。其它影響不太大的表(例如車廂掛靠表、庫存獎勵表等等)這里不再贅述,請自行參考源文件。
3662 次閱讀|4 個評論
分享 淺談“汽車進(jìn)銷存系統(tǒng)”之二:表設(shè)計(上)
roych 2016-2-19 12:31
從原表中,我們可以很清晰地分出幾塊: 1、 車輛信息(型號、底盤號碼等等)。 2、 物流信息(進(jìn)庫日期、銷售日期、調(diào)撥日期等等)。 3、 客戶信息(購車用戶、手機號碼等等)。 4、 銷售信息(銷售價格、終端價等等)。 5、 退貨信息(退貨原因等)。 6、 供貨商信息(供貨商名稱)。 我們先把較為清晰的分離出來: 客戶信息、供貨商信息和車輛信息 。 客戶信息表的基本字段設(shè)置如下: 客戶名稱、手機號碼、固定電話、地址、郵政編碼、聯(lián)系人 (如果仍需要更細(xì)化,則根據(jù)實際來增加字段)。 這樣設(shè)置就夠了嗎?當(dāng)然不是了。主鍵呢?有些新手可能會說,客戶名稱呀。 如果同一個客戶,由不同的聯(lián)系人來購買的時候怎么辦?聯(lián)合主鍵啊。這自然沒問題,問題是,這樣會不會太復(fù)雜了呢?其實,用一個客戶 ID 字段(自動編號)設(shè)置為主鍵就可以解決這個問題了。 供貨商信息設(shè)置類似,不過由于供貨商有業(yè)務(wù)來往,因此可以加上開戶行等字段,這里不再贅述。 車輛信息字段設(shè)置。將底盤號碼、型號、發(fā)動機型號等屬性設(shè)為字段,是毫無疑問的。這里需要詳細(xì)說明的是幾點: 1、 外鍵的設(shè)置。為了區(qū)分哪輛車是哪個供貨商提供的,供貨商 ID (有重復(fù)索引)顯然是不二之選,由此建立起一對多的關(guān)系。 2、 關(guān)于冗余字段。仔細(xì)留意,你會發(fā)現(xiàn)這個表并不符合第三范式。例如,驗車員并不依賴于車輛信息而存在。再如,進(jìn)庫日期、調(diào)出日期、調(diào)入日期等等幾個日期字段更不用說了。 先說驗車員字段。如果按第三范式,這個字段顯然應(yīng)該被剔除出去。那么,把驗車員跟車輛信息聯(lián)系起來不外乎兩個方法: a、 建立一個驗車記錄表。 b、 以驗車員 ID 作為外鍵,與職員表建立一對多關(guān)系。 增加一個表,對數(shù)據(jù)庫體積的影響還是比較大的,這就要考慮其必要性了。也就是說,這個表的重要性到底有多大,才是建表的先決因素。很明顯,相較之下, b 方法更佳。 但我還是棄用,而是直接使用了驗貨員姓名字段。為什么呢? 這時候,我們就應(yīng)該從業(yè)務(wù)和技術(shù)層面上來理解了。 如果使用 b 方法,那么很多查詢,你都不得不連上職員表!憧偛荒茏層脩粲涀∶總驗車員的 ID 吧?另外在窗體的查詢條件上,設(shè)置控件也是個問題,你不得不使用 2 列組合框,代碼也更加復(fù)雜。我們沒必要為了完全遵循第三范式而把問題復(fù)雜化,是吧? 同樣地,增加那幾個日期字段,也是出于業(yè)務(wù)的考慮的。 這幾個均屬于流水記錄信息。為這幾個字段設(shè)置采購進(jìn)庫表、調(diào)撥出庫表、調(diào)撥進(jìn)庫表、銷售出庫表和退貨進(jìn)庫表,自是沒問題,甚至可能更加清晰。但是必須要考慮到: a、 庫存計算。由于表較多,因此庫存計算時,必須按進(jìn)庫和出庫兩類進(jìn)行聯(lián)合查詢,然后再相減,從而得到實際庫存。 b、 重復(fù)計算。假定某輛車進(jìn)庫后調(diào)撥到分銷,分銷賣不出去,退回總部,總部賣出去,又被退貨……那么,在設(shè)計查詢時,就得留意這個問題,以免一輛車被統(tǒng)計多次。 如果我們只關(guān)注結(jié)果,而不太關(guān)心過程的話,那么就可以增加這幾個冗余字段來代替這幾個表。實現(xiàn)思路:對車輛的每個過程更新對應(yīng)的日期字段,來表示其當(dāng)前狀態(tài)。 事實上,這些應(yīng)該在需求分析時就要考慮的了。例如,增加“選擇”字段,可以為了方便用戶操作。再如,庫存計算。像上面那樣的設(shè)置和計算是一種方法。另一種方法就是只設(shè)置一個進(jìn)庫表,只要出庫(例如調(diào)撥出庫、銷售出庫)就更新記錄。也就是說,進(jìn)庫表就是實時庫存表。不過,這樣一來,當(dāng)返修情況較多時,就不方便統(tǒng)計數(shù)據(jù)以便改善了。 表字段設(shè)計,既要考慮到業(yè)務(wù)需求,又要考慮技術(shù)可行性。其中技術(shù)層面是短板。即便有完整的開發(fā)團(tuán)隊,仍不能保證所有需求都能實現(xiàn)。因此,對于不太合理的業(yè)務(wù),應(yīng)該在管理上加以改善。軟件只能優(yōu)化流程,無法管理企業(yè)。
個人分類: 隨便說說|3315 次閱讀|0 個評論
分享 淺談“汽車進(jìn)銷存系統(tǒng)”之一:實體分析
熱度 1 roych 2016-2-3 17:08
估計這段時間很多人都下載這個例子并看了。 實話說,做得很一般,一方面是對于那個需求描述不清楚,對業(yè)務(wù)不太了解。另一方面則是很久沒做軟件了,催得比較急,于是就胡亂做點算是交差了。 不過,不管怎么說,還是花了些心思做的。所以,我想,還是可以和新手們一起聊聊,怎么去開發(fā)一個小系統(tǒng),或者說是小程序吧。一方面作為一個總結(jié),另一方面,如果新手能借鑒部分思路,少走一些彎路,我想也是一件比較愉快的事情吧。 我向來比較啰嗦。因此, 這個系列文章,很需要 耐性,如果沒有耐性,可以就此打住。 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- MM說,想做一個進(jìn)銷存系統(tǒng),以便了解庫存,業(yè)務(wù)員績效考核等等。 從理論上講,進(jìn)銷存,需要的實體,顧名思義,當(dāng)然要包括 進(jìn)庫表 , 銷售表 和 存余表 了,自然,還要有 產(chǎn)品表 。 以這個作為基礎(chǔ)數(shù)據(jù)延伸開來, 自然會想到。以銷售表來說,應(yīng)該需要一個銷售員的列表,——這一點,我們可以增加一個 職員表 來完成。而購買的客戶,當(dāng)然也需要一個 客戶表 了。如果客戶對產(chǎn)品不滿意,那么就涉及到退貨,因此還需要增加一個 退貨表 。 最后就是分銷的問題,也就是 調(diào)撥情況,據(jù)此而創(chuàng)建 調(diào)撥明細(xì)表 !獮榇,還需要增加一個(母) 子公司列表 。 至此,基本的表就定下來了。 對了,庫存表,好像沒提到,是嗎? 是的。關(guān)于庫存,其實涉及到數(shù)據(jù)的邏輯。這一點我們在后面再談。 最后,我們來看看,MM提供給我的原表【以下為字段名稱】。大家思考下,這樣設(shè)計表有沒有問題,如果有,應(yīng)該怎么改: 進(jìn)庫ID 供貨商名稱 進(jìn)庫日期 型號 發(fā)動機型號 底盤號碼 發(fā)動機號碼 顏色11 合格證型號 出廠日期 類別 進(jìn)庫登記編號 收貨單位 調(diào)出時間 調(diào)入單位 購車用戶 終端用戶 銷售員 銷售型號 是否定車 用戶地址 郵編 聯(lián)系人 手機號碼 聯(lián)系電話 購車日期 銷售發(fā)票號碼 銷售價格 銷售類別 進(jìn)項發(fā)票號碼 進(jìn)項發(fā)票日期 進(jìn)項發(fā)票價格 終端價 退車回供方日期 退車原因 開票促銷 銷售員實銷促銷 驗收人ID
個人分類: 隨便說說|2900 次閱讀|1 個評論

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 06:28 , Processed in 0.069448 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部