正如前面所提到的,我们已经对在本书第二篇创建的数据库进行了少量修改。创建book_sc数据库的SQL代码如程序清单28-1所示。
程序清单28-1 book_sc.sql——创建book_sc数据库的SQL代码
create database book_sc;
use book_sc;
create table customers
(
customerid int unsigned not null auto_increment primary key,
name char(60)not null,
address char(80)not null,
city char(30)not null,
state char(20),
zip char(10),
country char(20)not null
)type=InnoDB;
create table orders
(
orderid int unsigned not null auto_increment primary key,
customerid int unsigned not null references customers(customerid),
amount float(6,2),
date date not null,
order_status char(10),
ship_name char(60)not null,
ship_address char(80)not null,
ship_city char(30)not null,
ship_state char(20),
ship_zip char(10),
ship_country char(20)not null
)type=InnoDB;
create table books
(
isbn char(13)not null primary key,
author char(100),
title char(100),
catid int unsigned,
price float(4,2)not null,
description varchar(255)
)type=InnoDB;
create table categories
(
catid int unsigned not null auto_increment primary key,
catname char(60)not null
)type=InnoDB;
create table order_items
(
orderid int unsigned not null references orders(orderid),
isbn char(13)not null references books(isbn),
item_price float(4,2)not null,
quantity tinyint unsigned not null,
primary key(orderid,isbn)
)type=InnoDB;
create table admin
(
username char(16)not null primary key,
password char(40)not null
);
grant select,insert,update,delete
on book_sc.*
to [email protected] identified by'password';
尽管最初的Book-O-Rama界面并没有错误,但要在线使用,必须满足一些其他的新需求。
对最初数据库进行的修改如下所示:
■增加更多的用户地址域。既然要建立实际的应用程序,这就很重要了。
■为每个订单增加一个运送地址。顾客的联系地址可能并不是商品运送地址,特别当他在该网站上给别人买礼物的时候。
■增加一个categories表并在books表中增加目录标识符(catid)。将图书分类会使网站更易浏览。
■增加item_price列到order_items表,因为某项商品的价格可能改变。我们要知道顾客购买时候的商品价格。
■增加一个admin表以保存管理员登录名和密码的详细信息。
■删除评论表。可以以该项目扩展特性的形式增加评论功能。作为替代,每本书有一个描述域,该域对本书作简要的介绍。
■将存储引擎修改为InnoDB。这样处理后,就可以使用外键,同时还可以在输入顾客订单信息的时候使用事务。
要在系统中建立数据库,必须以root的身份在MySQL中运行book_sc.sql脚本,如下所示:
mysql-u root-p<book_sc.sql
(需要提供root用户密码)
在进行以上操作之前,最好修改book_sc用户的密码,修改后的密码应该比原始密码"password"好。请注意,如果在book_sc.sql脚本中修改密码,还需要在db_fns.php脚本中修改它(稍后,我们将详细介绍)。
我们还要包含一个示例数据文件。该文件名为populate.sql。可以使用上述方法运行该sql语句将示例数据添加到数据库。