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