本节将在mssql server2000上建立所需要的四个数据库。
数据库作为应用数据的存储中心,在系统中具有具足轻重的地位。当用户量急剧增长时,数据库往往成为系统的瓶颈,采用分布式数据库是最佳选择策略。使用分布式数据库后,每一部分数据由专门的服务器来管理,分而治之,自然减少了数据库服务器的压力。
PetShop 4.0使用了四个数据库,分别为:MSPetShop4 、MSPetShop4Orders 、MSPetShop4Profile
、MSPetShop4Services
(一)、MSPetShop4
其中MSPetShop4用来管理产品、分类等基本数据信息,其中共有六个表
AspNet_SqlCacheTablesForChangeNotification
Category
Inventory
Item
Product
Supplier
Category表产品分类表。这个分类主要对产品在大类别上进行分类,比如在petshop中,有鱼类,鸟类等。里面的字段的意思我想大家看得很明白,一个是分类ID,一个是类别名称,一个是他的描述,主键是分类ID。
product表是产品表,这个产品并不是最终的产品,而是一个抽象意义上的产品,比如说鱼,有很多种类的鱼,比如鲨鱼等等,对于一个宠物商店,鲨鱼这个种类有好几个不同和名字的,那么摆在货架上的就是好几个不同的名字的。具体的每个名字的就要用item表来表示了。那么在product这张表中,他的字段是:产品ID,产品分类,产品名字,备注描述,此类产品对应的图片地址。在这张表中,以产品ID为主键,同时建立了四个索引:1.产品名称;2.分类ID;3.产品名称+分类ID;4.产品ID+产品名称+分类ID。有关索引的相关知识,请查阅数据库方面的资料。
item表是具体的宠物。每一种产品(product)都对应有一种或几种具体的item。在这张表中productID为其对应的产品,并在这个字段上建立外键约束。这个表的字段从上到下的意思分别为:宠物项ID,对应产品ID,宠物价格,宠物成本(unitCost),供应商ID,状态(我只看到里面的数据为P,但不知道怎么样修改),宠物名字,宠物所对应的图片地址。在这张表里面,itemID为主键,productid、supplier为外键,也就是他们的值是product表和supplier表中的值,建立了一个大的索引:itemid+productID+ListPrice+Name。
supplier表是供应商表。这张表的作用,我还没看到有多大,只是在这里标识每一种宠物的供应者是谁,在标准的petshop安装后,里面只有两条数据,那么现在我来介绍一下这张表里面的字段的意思。上图中标识主键的为供应商ID,以下分别为供应商名字,status里面的值为AC,我搞不太清楚代表什么意思,Addr1,Addr2想必大家一看就明白是什么意思了,city从字面意思也可以搞清楚,state是代表美国的哪一个州,zip为邮政编码,后面的是电话号码。
Inventory是宠物的库存表。ItemID为宠物的ID,下面为库存的数目。我个人认为这里的ItemID应该做一个外键约束,但是petshop并没有做,我不知道这是什么原因。
根据上面的数据库表,petshop抽象出几个数据实体类。让我们先来分析一下,上面的数据库中,一共有六张表,可以表示这么几个概念,分别是缓存,类别,产品(我不知道这么叫好不好),宠物信息,供应商,库存。可以做为数据实体的肯定要去除缓存,库存,因为缓存只是一个技术,库存则是宠物信息里面可以包含的一个属性,我认为,余下的都可以抽象或是说映射。但是petshop中只对类别,产品,宠物信息进行了抽象实体,没有供应商的具体类,究其原因,可能是因为在petshop中,供应商并不是一个主要的矛盾,也就是说宠物商店和供应商没有太大关系,所以没有包含。那么就让我们看一看在程序中是怎么样来抽象的。如下图所示:
除AspNet_SqlCacheTablesForChangeNotification是为了配合.net的缓存处理外,其它表都是基本数据表,它们在PetShop 4.0中有对应的模型。
(二)、MSPetShop4Orders
分别主要用来存储订单明细、订单基本信息和订单状态的数据。
LineItem 存储定单中购买商品的信息,例如:定单号,商品ID,单价,数量
Orders 用于存储商品定单详细信息,例如:定单号,用户ID,联系信息等
OrderStatus 用于记录定单状态
(三)、MSPetShop4Profile
MSPetShop4Profile 数据库说明
主要存储账户基本信息、购物车信息和用户配置信息。
Account 记录客户基本信息,例如:姓名,电子邮件地址,住址等。
Cart 存储购物车和意象清单中的商品信息。
Profiles 用于存储客户活动基本信息例如:用户名,是否匿名访问,上次登陆时间等
(四)、MSPetShop4Services
MSPetShop4Services 数据库说明
存储成员资格,角色,用户配置,和应用程序等信息。
aspnet_Applications 存储数据库所涉及应用程序有关信息。
aspnet_Membership 存储与用户相关信息例如:用户登陆密码,创建时间。
aspnet_Paths 存储应用程序和目录路径的对应关系数据。
aspnet_PersonalizationAllUsers 存储针对所有用户的Web部件个性化设置信息。
aspnet_PersonalizationPerUser 存储针对每个特定用户的Web部件个性化设置信息。
aspnet_Profile 存储用户配置数据。
aspnet_Roles 存储角色信息。
aspnet_SchemaVersions 存储用户配置信息支持的模式。
aspnet_Users 记录用户基本信息。
aspnet_UsersInRoles 存储用户和角色的关系数据。
aspnet_WebEvent_Events 存储Web事件相关信息。
通过将一个完整系统的数据按功能进行划分,各部分数据存储到独立的数据库服务器中,便是一种典型的分布式数据库模式。采用这种方式,不仅可以提高数据库以及应用的复用性,而且可以分散数据库服务器的压力,从而在某种程序上解决数据库瓶颈。