数据库的设计一般是先设计出ER图,再根据ER图在数据库中设计出物理的数据表、视图及表与表之间的关系。
一、 ER图
数据库设计的ER图如图24-3所示:
一名客户可以有多个订单,但一张订单只能属于一个客户,因此客户与订单是一对多的关系;一张订单中可以有多本书,一本书也可以放入多张订单,因此订单与书是多对多的关系,在数据库中为体现多对多的关系,一般专门用一张表来存储这种关系;一本书只能属于一种书藉类型,但一种书藉类型可以有多本书,因此书与书藉类型是多对一的关系。

24.3.2 数据物理模型
根据数据库设计的ER图,可设计出数据库的物理模型,设计完成后在SQL Server中体现的关系如图24-4所示。

下面对关系图中的每张表的设计作详细的分析:
(1)用户表
范式分析:
user_id(user_name,user_true_name,user_address,user_telephone,
user_postalcode,user_role,user_password)
(user_name,user_password)(user_id,user_true_name,user_address,user_telephone,user_postalcode,user_role)
为1NF(第一范式)。
建表语句:
CREATE TABLE [netuser] (
[user_id] [bigint] IDENTITY (1, 1) NOT NULL ,
[user_name] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
[user_true_name] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
[user_address] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[user_telephone] [varchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
[user_postalcode] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[user_role] [int] NULL ,
[user_password] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_netuser] PRIMARY KEY CLUSTERED
(
[user_id]
) ON [PRIMARY]
) ON [PRIMARY]

