产品分类数据库设计

上传人:豆浆 文档编号:19955642 上传时间:2017-11-20 格式:DOC 页数:6 大小:1.94MB
返回 下载 相关 举报
产品分类数据库设计_第1页
第1页 / 共6页
产品分类数据库设计_第2页
第2页 / 共6页
产品分类数据库设计_第3页
第3页 / 共6页
产品分类数据库设计_第4页
第4页 / 共6页
产品分类数据库设计_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《产品分类数据库设计》由会员分享,可在线阅读,更多相关《产品分类数据库设计(6页珍藏版)》请在金锄头文库上搜索。

1、产品分类数据库表设计文档北京联动北方科技有限公司2012 年 3 月 7 日系统数据库设计(所作修改已用红色部分标出)一系统 ER 图1-1 分析实体集:公司、产品、组件、产品类别联系:生产:描述公司和产品之间的关系,是一种多对多的关系。一个公司可以生产多种产品,一个产品也可能有多个公司生产。组成:描述产品与组件之间的关系,是一种多对多的关系,一个产品由多个组件组成,一个组件也可能出现在多个产品中。兼容:描述各个公司产品之间的兼容性,是一种多对多的关系,一个产品可以与多个产品兼容。拥有:描述公司和产品类别之间的关系,是一种多对多的关系。一个公司可以拥有很多类别的产品,一个产品类别里面也可以包含

2、很多公司的产品。包含:描述产品类别和产品之间的关系,是一对多的关系。一个产品类别里面可以包含多个产品,但一个产品只能属于一个产品类别。1-2 处理1. 公司这个实体可以独立作为一个关系,建立一张表:公司(公司编号,名称,描述)2. 产品这个实体可以独立作为一个关系,建立一张表:(产品编号,名称,类别,版本,描述)3. 组件这个实体可以作为一个独立的关系,建立一张组件表:(组件编号,名称,描述)4. 生产联系转变成一个关系:生产表,记录不同公司生产的不同产品。生产表:生产(公司编号,产品编号)5. 组成联系转变成一个关系:组成表,记录产品和组件之间的关系。产品组成表:组成(组件编号,产品编号)6

3、. 兼容联系转变成一个关系,是产品到产品的一个自身映射问题,记录产品与产品之间的兼容性信息。兼容表:兼容(产品 1 编号,产品 2 编号)7.产品类别这个实体可以独立作为一个关系,建立一张表:产品列表(编号,名称,描述)8.拥有联系转变成一个关系:拥有表,记录公司和产品类别之间的关系。拥有表:(公司编号,产品类别编号)9.包含联系转变成一个关系,是产品类别和产品之间的关系。建立一张表:包含表(产品类别编号,产品编号)二、数据表:1. 公司表(company)主要用来记录公司信息。 字段 字段名称 数据类型 可否为空 备注compa_id 公司编号 varchar(10) 不允许为空 主键com

4、pa_name 公司名称 varchar(50) 不允许为空compa_desc 公司描述 varchar(2000 ) 允许为空create table company(compa_id varchar(10) not null,compa_name varchar(50) not null,compa_desc varchar(2000),PRIMARY KEY(compa_id)2. 产品表(product)主要用来存储产品信息,方便用户查询。字段 字段名称 数据类型 可否为空 备注prod_id 产品编号 varchar(10) 不允许为空 主键prod_name 产品名称 varch

5、ar(50) 不允许为空prod_desc 产品描述 varchar(2000) 允许为空prod_vers 产品版本 varchar(10) 不允许为空create table product(prod_id varchar(10) not null,prod_name varchar(50) not null,prod_desc varchar(2000),prod_vers varchar(10) not null,PRIMARY KEY(prod_id) 3. 组件表(component)主要用来存放组件信息。字段 字段名称 数据类型 可否为空 备注compo_id 组件编号 varc

6、har(10) 不允许为空 主键compo_name 组件名称 varchar(50) 不允许为空compo_desc 组件描述 varchar(2000) 允许为空create table component(compo_id varchar(10) not null,compo_name varchar(50) not null,compo_desc varchar(10),PRIMARY KEY(compo_id)4. 生产表(production)主要用来存放不同公司生产不同产品信息。字段 字段名称 数据类型 可否为空 备注compa_id 公司编号 varchar(10) 不允许为空

7、 外键(作为主键)prod_id 产品编号 varchar(10) 不允许为空 外键(作为主键)create table production(compa_id varchar(10) not null,prod_id varchar(10)not null,PRIMARY KEY(compa_id,prod_id),FOREIGN KEY(compa_id) REFERENCES company (compa_id),FOREIGN KEY(prod_id) REFERENCES product (prod_id)5. 组成表(makeup)主要用来存放组件和产品之间的组成信息。字段 字段名

8、称 数据类型 可否为空 备注prod_id 产品编号 varchar(10) 不允许为空 外键(作为主键)compo_id 组件编号 varchar(10) 不允许为空 外键(作为主键)create table makeup (prod_id varchar(10) not null,compo_id varchar(10)not null,PRIMARY KEY(prod_id,compo_id),FOREIGN KEY(prod_id) REFERENCES product (prod_id),FOREIGN KEY(compo_id) REFERENCES component (comp

9、o_id)6. 版本兼容表(compatibility)主要用来存储各种产品之间的兼容性信息。字段 字段名称 数据类型 可否为空 备注prod1_id 产品 1 编号 varchar(10) 不允许为空 外键(作为主键)prod2_id 产品 2 编号 varchar(10) 不允许为空 外键(作为主键)create table compatibility (prod1_id varchar(10) not null,prod2_id varchar(10)not null,PRIMARY KEY(prod1_id,prod2_id),FOREIGN KEY(prod1_id) REFEREN

10、CES product (prod_id),FOREIGN KEY(prod2_id) REFERENCES product (prod_id)7. 产品类别表(category)主要用来存储产品类别信息。字段 字段名称 数据类型 是否为空 备注categ_id 产品类别编号 varchar(10) 不允许为空 主键categ_name 产品类别名称 varchr(50) 不允许为空categ_desc 产品类别描述 varchar(2000) 允许为空create table category (categ_id varchar(10) not null,Categ_name varchar

11、(50) not null,Categ_desc varchar(2000),PRIMARY KEY(cate_id)8. 拥有表(have)用来存储公司和产品类别之间的关系信息。字段 字段名称 数据类型 是否为空 备注compa_id 公司编号 varchar(10) 不允许为空 外键(作为主键)categ_id 产品类别编号 varchar(10) 不允许为空 外键(作为主键)create table have(compa_id varchar(10),categ_id varchar(10),FOREIGN KEY(compa_id) REFERENCES company (compa_

12、id),FOREIGN KEY(categ_id) REFERENCES company (categ_id),)9. 包含表(contain)用来存储产品类别和产品之间的关系信息。字段 字段名称 数据类型 是否为空 备注categ_id 产品类别编号 varchar(10) 不允许为空 外键(作为主键)prod_id 产品编号 varchar(10) 不允许为空 外键(作为主键)create table contain(categ_id varchar(10),prod_id varchar(10),FOREIGN KEY(categ_id) REFERENCES category (cat

13、eg_id),FOREIGN KEY (prod_id) REFERENCES product(prod_id)在对版本兼容表进行插入操作时,要防止两个产品的兼容信息重复存储,使用触发器来防止信息重复。CREATE OR REPLACE TRIGGER compatibility_check_trigbefore insert on compatibilityREFERENCING OLD as old_compare_id NEW as new_compare_idFOR EACH ROWBEGINIF :old_compare_id.prod1_id=:new_compare_id.pro

14、d2_id THENIF :old_compare_id.prod2_id=:new_compare_id.prod1_id THENUPDATE compatibilitySET prod1_id=:new_compare_id.prod1_id,prod2_id=:new_compare_id.prod2_idWHERE prod1_id=:old_compare_id.prod1_idAND prod2_id=:old_compare_id.prod2_id;commit;END IF;END IF;END考虑到一旦出现收购现象,被收购的公司编号要改为收购公司的编号,涉及到公司编号的两个表 production 和 have 的相应列也要随之更改,使用触发器实现:create or replace trigger company_updateafter update of compa_id on company REFERENCING OLD as old_comp NEW as new_compFOR EACH ROWBEGINIF :old_pa_id!=new_pa_id THENUPDATE productionSET compa_id:=new_pa_id;UPDATE haveSET compa_id:=new_pa_id;COMMIT;END IFEND

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号