购物网站数据库设计

购物网站,它有很多不同种类的产品,拿洗衣机和笔记本电脑来说,洗衣机有 波轮式和滚桶式的属性 ;而笔记本有屏幕尺寸、显卡类型等属性。所以洗衣机和笔记本电脑应该是在不同的表中吧。可是如果商品种类特别多那不是要特别多的表,如何解决

要这样,这样你会有无数多的表,而且以后新的一个产品时候非常麻烦,如果要属于新的类别,而且还会因为避免数据库太复杂而使得许多不同类的产品归在一个类。而且你的程序很麻烦,要为每个类编写不同程序,因为数据表名不同。

应该用下面的办法,主要使用四个表存储所有类别的商品:

第一、类别名称表,字段有
类别ID,类别名称
1 电脑
2 洗衣机

第二、类别属性表,字段有:
类别ID,属性ID,属性名称
1 1 CPU
1 2 内存
1 3 屏幕尺寸
2 1 容量
2 2 类型

第三、商品名称表,字段有:
商品ID,类别ID
1 1
2 1
3 2
4 2

第四、商品属性表,字段有:
商品ID,属性ID,属性值
1 1 P4
1 2 128M
1 3 CRT 14
2 1 P4
2 2 512M
2 3 LCD19
3 1 9公斤
3 2 滚筒
4 1 8公斤
4 2 波轮

上面定义了四个商品,商品ID为1~4,分别是128M、512M内存的电脑,和9公斤滚筒、8公斤的波轮洗衣机。

这样定义的数据库结构,可以包含任何商品,一般不会改变,那么程序也就无需改变,定义新的产品、或者修改现有商品只需要在程序界面有操作员点点鼠标。追问

tmd,你是复制来的,你的回答我在百度看见过,还要你来复制

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-03-07
一、概述
网上购物店的数据模型,主要模式有产品:product ,帐户:Account,定单:Order。和产品相关的表有category ,product,item, inventory, supplier;和用户相关表有的account ,signon,profile;和定单相关的表有orders,orderstatus,lineitem ,整体关系如下.
二、帐户模型
帐户模型,记录者用户的登录名称,密码。以及个人信息如地址,性名,电话等,还有它在系统中的profile信息。表有Account 主键是userID,它记录用户的基本信息,如email,name等。Signon 表记录者userID和password,Profile表记录者用户的登录系统的系统设置。可以根据用户的类型,显示不同的登录信息。
(1)account表
create table account (
userid varchar(80) not null,
email varchar(80) not null,
name varchar(80) not null,
status char(2) null,
addr1 varchar(80) not null,
addr2 varchar(40) null,
city varchar(80) not null,
state varchar(80) not null,
zip varchar(20) not null,
country varchar(20) not null,
phone varchar(80) not null,
constraint pk_account primary key (userid)
)
说明:primary key是userID,它记录帐户的基本信息。
(2)Signon 表
create table signon (
username varchar(25) not null,
password varchar(25) not null,
constraint pk_signon primary key (username)
)
说明:记录登录名和密码。
(3)Profile表
create table profile (
userid varchar(80) not null,
langpref varchar(80) not null,
favcategory varchar(30),
mylistopt int,
banneropt int,
constraint pk_profile primary key (userid)
)
说明:用户的登录信息,方便个性化定制。
(4)Bannerdata 表
create table bannerdata (
favcategory varchar(80) not null,
bannername varchar(255) null,
constraint pk_bannerdata primary key (favcategory)
)
说明:记录不同的登录信息。

三、产品模型
产品的模型主要有分类,它是产品的大类。表category 就是记录分类名称,描述信息。Product
记录每个产品的基本信息,包括产品名称,和产品的描述。它是一对多的关系。Supplier 表
记录产品的提供者信息,包括提供者的名称,地址,状态等。Item 记录产品的提供者,产
品ID,价格,状态。Inventory 表记录产品的数量。关系如下:
(1) category表
create table category (
catid char(10) not null,
name varchar(80) null,
descn varchar(255) null,
constraint pk_category primary key (catid)
)
(2)product表
create table product (
productid char(10) not null,
category char(10) not null,
name varchar(80) null,
descn varchar(255) null,
constraint pk_product primary key (productid),
constraint fk_product_1 foreign key (category)
references category (catid)
)
(3) item表
create table item (
itemid char(10) not null,
productid char(10) not null,
listprice decimal(10,2) null,.unitcost decimal(10,2) null,
supplier int null,
status char(2) null,
attr1 varchar(80) null,
attr2 varchar(80) null,
attr3 varchar(80) null,
attr4 varchar(80) null,
attr5 varchar(80) null,
constraint pk_item primary key (itemid),
constraint fk_item_1 foreign key (productid)
references product (productid),
constraint fk_item_2 foreign key (supplier)
references supplier (suppid)
)
(4) inventory 表
create table inventory (
itemid char(10) not null,
qty int not null
)
(5)supplier表
create table inventory (
suppid int not null
name varchar(80)
status char(2)
attr1 varchar(80)
attr2 varchar(80)
city varchar(80)
state varchar(80)
zip char(6)
phone varchar(80)
constraint pk_supplier primary key (suppid),
)
四、定单模型
定单记录用户的选择产品信息,数量,表主要有Orders,记录用户的地址,帐户信息,总金
额。Orderstatus 记录定单状态。Lineitem 记录定单中的产品数量,单位价格,产品ID。

(1)orders表
create table orders (
orderid int not null,
userid varchar(80) not null,
orderdate date not null,
shipaddr1 varchar(80) not null,
shipaddr2 varchar(80) null,
shipcity varchar(80) not null,
shipstate varchar(80) not null,
shipzip varchar(20) not null,
shipcountry varchar(20) not null,
billaddr1 varchar(80) not null,
billaddr2 varchar(80) null,
billcity varchar(80) not null,
billstate varchar(80) not null,
billzip varchar(20) not null,
billcountry varchar(20) not null,
courier varchar(80) not null,
totalprice number(10,2) not null,
billtoname varchar(80) not null,
shiptoname varchar(80) not null,
creditcard varchar(80) not null,
exprdate char(7) not null,
cardtype varchar(80) not null,
locale varchar(20) not null,
constraint pk_orders primary key (orderid),
constraint fk_orders_1 foreign key (userid)
references account (userid)
)
定单的信息。
(2)Orderstatus表
create table orderstatus (
orderid int not null,
linenum int not null,
timestamp date not null,
status char(2) not null,
constraint pk_orderstatus primary key (orderid, linenum),
constraint fk_orderstatus_1 foreign key (orderid)
references orders (orderid)
)
定单中的产品状态
(3)lineitem表
create table lineitem (
orderid int not null,
linenum int not null,
itemid char(10) not null,
quantity int not null,
unitprice number(10,2) not null,
constraint pk_lineitem primary key (orderid, linenum),
constraint fk_lineitem_1 foreign key (orderid)
references orders (orderid)
)
第2个回答  2011-08-07
问问题还骂人,没见过,谁会回答你
相似回答