最近公司在庫房管理上出現一點小問題,由於之前都是由人工方式利用 EXCEL 來管理,使得設備的管理使用上非常不便,常常不知道庫房還有那些設備,有時設備被借了一年多沒歸還還不知道等許多問題。
在有了上述的問題之後,想想我們應以何種方式來解決這問題與完成所需的功能。難道真的需要 Outsourcing 一套 Application 嗎?為考量經費、符合公司需求與未來的擴充性,決定自行建制,盡量以模組化來設計以因應未來的擴充,並且在使用者介面上不會因系統的升級而必須有所更改或重新撰寫,最終目的是建立現今所謂類似 ERP/CRM/SCM 的簡易系統。當然這只是一個非常簡潔的系統,但優點是1.花費少;2.針對公司需求設計;3.是由 Application來配合公司運作,而不是因導入一個新系統,使得整個公司必需更改流程以配合新系統;4.模組化設計,以利未來擴充。因此在架構上,我們以三層模式來完成,第一為後端資料儲存之Database,第二則以 Web Server 為主,利用 CGI 的方式來存取後端 Database 的模組化主程式,第三則為 Browser-Based 使用者介面。因此使用者可在任何作業平台,使用任何的Browser(如 Netscape、IE 等)來存取,請參考(圖一)。
在資料庫的選擇上,市面上有太多可供選擇,許多還不用花大筆金錢,例如 Oracle for Linux、Sybase for Linux、Informix for Linux、IBM DB2 for Linux、postgresql、mysql, 與 minisql 等。當然在資料庫的選擇上有許多的考慮因素,但由於筆者想先在自己的Win98 機器上實作,若有需要再 porting到 Unix 或 WinNT 上,因此選擇了在 Win98/NT/Unix 上都支援並且免費的 mysql 資料庫(註一);而 Web Server則直接使用 Win98 的 Personal Web Server(註二);在 CGI 程式上, 則選擇使用 PHP(註三), PHP 實在是非常強大的 Scripting Language,不僅可用在 Win98/NT/Unix,還支援大部份的 Database;你可直接使用它,或者像大部份的人一樣當做是 CGI 程式介面。
而這次所介紹的是整個系統的一小部分 - 客戶資源管理,當然我們也可把它拿來當成電話簿管理系統。
事前準備
先從網路上下載 php-3.0.16-win32.zip 與 mysql-win32.zip,因為在測試階段,所以我們把 Database、PWS,與 PHP 全部安裝在同一台 Win98 上。
首先先確定 Personal Web Server 已經安裝,再來解壓縮php-3.0.16-win32.zip,並將 php.exe 拷貝至 c:\windows,將 php3.ini-dist 拷貝成 c:\windows\php3.ini,拷貝所有的 *.dll 檔案至 c:\windows\system。
修改 php3.ini, 其部份內容如下:
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
include_path = ; UNIX: "/path1:/path2" Windows: "\path1;\path2"
doc_root = ; the root of the php pages, used only if nonempty
user_dir = ; the directory under which php opens the script using /~username
;upload_tmp_dir = ; temporary directory for HTTP uploaded files
upload_max_filesize = 2097152 ; 2 Meg default limit on file uploads
extension_dir = c:\windows\system ; directory in which the loadable extension
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;Windows Extensions
extension=php3_mysql.dll
;extension=php3_calendar.dll
;extension=php3_dbase.dll
;extension=php3_gd.dll
;extension=php3_dbm.dll
;extension=php3_mssql.dll
;extension=php3_zlib.dll
;extension=php3_filepro.dll
;extension=php3_imap4r1.dll
;extension=php3_ldap.dll
;extension=php3_crypt.dll
;extension=php3_msql2.dll
;extension=php3_odbc.dll
最主要要指出 DLL檔案所在的目錄,在這裡是 c:\windows\system; 還有把 mysql 的支援打開。
畫出程式架構圖
我們先想一下這個電話簿所應具備的基本功能,如(圖二)。最基本功能應提供:電話列表、新增、刪除、修改、搜尋。
資料庫安裝
1.安裝 Mysql database:
將 mysql-win32.zip 解壓縮之後, 執行 SETUP.EXE 來安裝 Mysql.
2.執行 Mysql:
c:\>cd \mysql\bin
c:\mysql\bin>mysqld
現在測試一下 mysql 是否成功載入。
c:\mysql\bin>mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
| test |
+-----------+
如果看到下面的訊息即表示 mysqld 沒有成功載入。
ERROR 2003: Can't connect to MySQL server on localhost (10061)
3.新增一個 Database
c:\mysql\bin>mysqladmin create warehouse
Database "warehouse" created.
4.定義所需的 table entry
每一個電話欄位最少應包括姓名、公司名、電話號碼、分機號碼、行動電話號碼、傳真號碼、公司地址,與email address。為索引方便起見,我們為每一 entry 設立獨一之 ID,所以此電話簿的 table 如下:
table phone (
tid int AUTO_INCREMENT primary key,
name char(30) NOT NULL,
comapny char(30),
tel char(20),
ext char(10),
mobile char(20),
fax char(20),
address char(100),
email char(30)
);
C:\mysql\bin>mysql warehouse
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 3.21.29a-gamma-debug
Type 'help' for help.
mysql>create table phone (
->tid int AUTO_INCREMENT primary key,
->name char(30) NOT NULL,
->comapny char(30),
->tel char(20),
->ext char(10),
->mobile char(20),
->fax char(20),
->address char(100),
->email char(30)
->);
Query OK, 0 rows affected (0.33 sec)
mysql>quit
看看我們所建的新資料庫:
C:\mysql\bin>mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
| test |
| warehouse |
+-----------+
看到一個新的 Database - warehouse:
C:\mysql\bin>mysqlshow warehouse
Database: warehouse
+----------+
| Tables |
+----------+
| phone |
+----------+
C:\mysql\bin>mysqlshow warehouse phone
Database: warehouse Table: phone Rows: 1
+---------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-----------+------+-----+---------+----------------+
| tid | int(11) | | PRI | 0 | auto_increment |
| name | char(30) | | | | |
| company | char(30) | YES | | | |
| tel | char(20) | YES | | | |
| ext | char(10) | YES | | | |
| mobile | char(20) | YES | | | |
| fax | char(20) | YES | | | |
| address | char(100) | YES | | | |
| email | char(30) | YES | | | |
+---------+-----------+------+-----+---------+----------------+
C:\mysql\bin>
OK!證明成功了。
應用MySqlManager管理資料庫
當然我們也可使用 Mysq-win32 內附的圖形化管理介面程式來管理資料庫 - MySqlManager.EXE(圖三)。
經由 MySqlManager -> Tools 工具項 -> SQL Query 功能,我們也可直接執行 SQL Command,如(圖四)(圖五)所示。
結論
在這種架構下,要實作備援是比較簡單可行的,但在此篇文章中筆者無法深入討論有關備援方面的問題,因為在一個真正的系統架構下,可能需要考慮到資料庫備援、伺服器備援、線路備援、網路設備備援,其實是有點複雜的。
若只是單純的只需電話的管理系統,使用 LDAP 也是一個非常方便的方式,尤其現階段許多的網路設備都可結合 LDAP 做網路資源管理,下次將為大家介紹 LDAP service 與電話簿管理系統,並且專文介紹 LDAP 如何與 網路設備整合在一起,以提供進階的網路服務。
註一:Mysql 可從 http://www.mysql.com/ download, 其他 Database 請參考相關網站。
註二:Apache Web Server 也有 win95/98/NT 版,PWS 的安全功能稍差,所以若想使用 win98, 但又想兼顧安全性,可考量改採 Apache. http://www.apache.org/。
註三:PHP windows 版可從 http://www.php.net/ download。雖然 PHP 現已推出 4.0 版,但因為4.0 版中沒看到可支援 mysql 的程式庫,所以建議使用 PHP 3.x 版。
(作者為Alcatel技術經理,聯絡信箱為santayeh@ms32.hinet.net;本文另有實作程式,因限於篇輻未便刊載,完整版將於本社網站刊出)