最近公司在库房管理上出现一点小问题,由于之前都是由人工方式利用 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;本文另有实作程序,因限于篇辐未便刊载,完整版将于本社网站刊出)