我在教授
軟體設計課程,尤其是以使用案例圖在說明架構設計時,每一個用套件(Package)所界定範圍的系統,係指軟體應用系統,但卻幾乎不會談及到資料庫。因
為,軟體應用系統與資料庫是兩個不同的層次,甚至,把資料庫視為是應用系統的 "私有倉儲(private storage)",會比較恰當。
不過,這衍生出一個問題,學員不容易分清楚如何 "mapping" 抽象面的架構設計至實體的 IT 系統,尤其是資料庫的問題。所以,我會先帶一個問題問學員:在設計層次的考量中,進銷存系統有幾個資料庫?
這一個問題要能回答得出來,其假設前提的考量必須要瞭解,在整體的架構設計中,設計團隊到底將 "進銷存" 視為是一個,還是三個,甚至多個的子系統?
參考下圖1,這是把 "進銷存" 視為是單一的系統,所以,資料庫只有一個。
好處是什麼? 就是簡單,開發也容易。進銷存相關的資訊處理,都是在同一個資料庫內,並沒有分散的問題,所以當處理銷貨需要查詢庫存資訊時,只要下 SQL 敘述直接連結庫存的 TABLE 即可。
圖1、將進銷存視為一個整體系統
參考下圖2,架構設計之初時,就已把 "進銷存"
分為三個子系統(Sub-system),或者也可以稱之為元件(Component),以凸顯子系統之間的溝通,是透過介面(Interface)的呼
叫。其實,論子系統的範圍與規模,稱為 "模組(Module)" 更為適合,不過,我個人並不喜歡以 "模組"
二字來稱之,因為,這個術語被業界給濫用了,已淪落為在業務面的術語,卻並沒有在實體的系統間,嚴格遵循透過介面的呼叫。
所以圖2,有三個資料庫。
當銷貨人員處理銷貨需要查詢庫存資訊時,需要透過庫存系統所提供的介面來呼叫,介面的實做可能是 "Web Service"、"Java
Bean"、"Session Bean"、"COM+" 等,但絕對不能直接下 SQL
來呼叫位於庫存系統內的資料庫,否則,就違背了圖2的整體架構設計。不遵循整體架構設計的規範,私自偷偷連接,稱之為 "跳線"。
圖2、將進銷存分成三個獨立的子系統
上圖2的抽象設計與IT面的實做技術,比較困難,也需要花較多成本,以專案為主(Project-based)的開發,時程短、預算
低廉,不容易達成圖2的設計目標。但若重覆性的專案,專注在進銷存這個領域上,有豐富足夠的領域知識(Domain
Knowledge),且打算產品化(Product),那麼,圖2的系統架構來得有彈性很多,"進"、"銷"、"存"
三個子系統(元件),均可以隨意抽換,各自更新或改版,而不會影響到另一個子系統,如同 PC 主機板內的硬體元件,可以造成 "PnP(Plug
and Play)" 的效果。
請注意,上述問題的提問,會有幾個資料庫,是指抽象的邏輯設計層面,可千萬不要與實體的資料庫混為一
談。例如,圖2雖然需要三個資料庫,但若以 Oracle 資料庫系統,DBA 可以將邏輯層面的三個資料庫,切分為三個 "TABLE
SPACE",然後放在同一個實體的 Oracle 資料庫系統內;而若是 MS SQL 或是 MySQL,則是切割為三個
"database",放入同一個實體資料庫系統內。
當然,若有地理位置或資料庫系統負載的問題,要分散至多個實體的資料庫系統,那也沒問題。例如,進銷存位於三個地點不同的廠,各自配置了三個實體資料庫,各自存放自己的資訊。這也是圖2架構設計的優點,一切分合自如!
e
化的系統設計,即使是 ERP
如此重視資料存取與處理的系統,應該要能摒除傳統以資料庫為中心的設計觀點,因為,系統整體的彈性度會不佳,很難應變需求面的頻繁變更,或是 IT
實體平台,包括資料庫系統的變更等。設計重心應該要轉移至 "Middleware",這個術語可能太貼近 IT
平台面了,倒不如乾脆這麼說,設計的重心就是回歸至以 "應用系統"
為主,是觀察應用系統可以提供那些服務(services)或功能(functions),這些服務與功能其實就是系統一個個可以量化的子目標(Sub-
goal),次一步驟才是考量如何取得要能達成這些子目標的資訊(資料),要取得資訊,就是到實體的倉儲,也就是私有的資料庫系統去找,或是,透過標準的
程序,也就是透過標準的介面,至外部系統取得相關的資訓來處理。
分享到:
相关推荐
进销存系统的功能设计通常包括以下几个主要部分: 1. **采购管理**:这部分涉及供应商信息管理、采购订单处理、采购入库记录以及应付账款的跟踪。系统会自动计算采购成本,帮助企业控制采购成本,避免过度库存。 2...
进销存管理系统通常包含以下几个主要模块: 1. **采购管理**:这个模块用于记录供应商信息、采购订单、采购入库等,便于跟踪商品的进货情况,计算成本,并与供应商进行对账。 2. **销售管理**:包括客户信息管理、...
超市进销存库存仓库管理系统是商业运营中不可或缺的一部分,它主要负责跟踪商品的进货、销售、存储等全过程,确保库存管理的有效性和准确性。本系统基于Mysql数据库和Java编程语言进行开发,旨在提供一个高效、稳定...
《家具城进销存管理系统详解》 进销存管理系统是企业管理中不可或缺的一部分,它涵盖了商品的进货、销售和库存管理等多个环节,对于提高运营效率、优化资源配置具有重要意义。本系统——"家具城进销存管理系统",专...
进销存系统主要具备以下几大功能: - **采购管理:**包括采购订单、采购入库等功能。 - **销售管理:**涉及销售订单、出库、退货等环节。 - **库存管理:**实时监控库存数量,支持盘点等功能。 - **财务管理:**提供...
进销存信息系统的功能模块通常包括以下几个部分: 1. **采购管理**:记录供应商信息,管理采购订单,跟踪采购进度,确保货物按时入库。 2. **销售管理**:处理客户订单,跟踪销售情况,提供销售报表,帮助决策者...
4. **上传功能**:upload1.asp 文件名暗示了该系统支持文件上传功能,这对于处理商品图片、合同文档等进销存相关资料是必要的。企业可以上传产品图片、供应商信息等,以便于管理和共享。 5. **底部信息**:bottom....
在进销存系统中,数据存储是至关重要的,此文件包含了系统所需的表结构和初始数据,如商品信息、供应商资料、库存记录等,通过运行这个脚本,可以快速建立一个干净的数据库环境。 3. **安装说明.txt**:提供详细的...
进销存管理系统是一款基于Microsoft Visual Studio 2003(VS2003)开发环境,采用C#编程语言,并配合Microsoft SQL Server 2000...对于学习C#编程或希望了解进销存系统设计的人来说,这个源码是一份宝贵的参考资料。
在进销存管理系统中,以下几个关键知识点是至关重要的: 1. **数据库设计**:系统的核心通常是一个关系型数据库,如MySQL或SQL Server,用于存储商品信息、供应商信息、客户信息、订单数据、库存状态等。数据库设计...
在IT行业中,进销存系统是企业管理中的关键部分,它能够有效地跟踪商品流动,提高运营效率,减少库存积压和销售机会的丢失。 PHP是一种广泛使用的开放源代码脚本语言,尤其适用于Web开发,可以嵌入到HTML中使用。...
进销存管理系统的数据库设计是关键部分,通常包括以下几个核心表: 1. 商品表:存储商品信息,如商品ID、名称、规格、价格等。 2. 供应商表:记录供应商信息,如供应商ID、名称、联系方式等。 3. 客户表:管理客户...
进销存管理系统一般包含以下几个关键功能模块: 1. 商品管理:维护商品的基本信息,如名称、规格、价格等,支持新增、修改、删除操作。 2. 供应商管理:管理供应商档案,包括联系信息、交易记录等。 3. 库存管理:...
进销存系统通常包括以下几个主要模块: - **采购管理**:记录供应商信息,处理采购订单,跟踪到货情况,管理应付账款。 - **销售管理**:管理客户资料,处理销售订单,跟踪出库情况,管理应收账款。 - **库存...
在这种背景下,进销存管理系统成为企业管理和运营的核心环节之一,有助于提高企业的竞争力。 #### 三、系统分析 ##### 3.1 需求分析 通过对×××有限公司的具体需求进行深入分析,确定了进销存管理系统需具备...
描述中的“简单的进销存系统”可能包含以下几个主要功能模块: 1. **进货管理**:记录供应商信息、采购商品的详细信息、采购数量和价格,以及进货日期等。这通常涉及到数据库中的进货表设计和相应的入库操作。 2. ...
进销存系统的具体功能通常涵盖以下几个方面: 1. 采购管理:处理供应商信息、采购订单、收货入库等。 2. 销售管理:管理客户信息、销售订单、发货出库等。 3. 库存管理:跟踪库存数量、设置安全库存、进行库存盘点等...
进销存管理系统主要包含以下几个核心模块: 1. **采购管理**:负责供应商信息管理、采购订单处理、进货入库、应付账款跟踪,确保企业能够及时、有效地采购到所需原材料或商品。 2. **销售管理**:涉及客户管理、...