产品分类数据库设计
产品分类数据库表设计文档 北京联动北方科技有限公司 2012 年 3 月 7 日 系统数据库设计 (所作修改已用红色部分标出) 一.系统 ER 图 1-1 分析 实体集:公司、产品、组件、产品类别 联系: 生产:描述公司和产品之间的关系,是一种多对多的关系。一个公司可以生产多种产品, 一个产品也可能有多个公司生产。 组成:描述产品与组件之间的关系,是一种多对多的关系,一个产品由多个组件组成,一 个组件也可能出现在多个产品中。 兼容:描述各个公司产品之间的兼容性,是一种多对多的关系,一个产品可以与多个产品 兼容。 拥有:描述公司和产品类别之间的关系,是一种多对多的关系。一个公司可以拥有很多类 别的产品,一个产品类别里面也可以包含很多公司的产品。 包含:描述产品类别和产品之间的关系,是一对多的关系。一个产品类别里面可以包含多 个产品,但一个产品只能属于一个产品类别。 1-2 处理 1. 公司这个实体可以独立作为一个关系,建立一张表:公司(公司编号,名称,描述) 2. 产品这个实体可以独立作为一个关系,建立一张表: (产品编号,名称,类别,版本,描 述) 3. 组件这个实体可以作为一个独立的关系,建立一张组件表: (组件编号,名称,描述) 4. 生产联系转变成一个关系:生产表,记录不同公司生产的不同产品。生产表: 生产(公司 编号,产品编号) 5. 组成联系转变成一个关系: 组成表, 记录产品和组件之间的关系。 产品组成表: 组成 (组 件编号,产品编号) 6. 兼容联系转变成一个关系,是产品到产品的一个自身映射问题,记录产品与产品之间的 兼容性信息。兼容表:兼容(产品 1 编号,产品 2 编号) 7.产品类别这个实体可以独立作为一个关系,建立一张表:产品列表(编号,名称,描述) 8.拥有联系转变成一个关系:拥有表,记录公司和产品类别之间的关系。拥有表: (公司编号, 产品类别编号) 9.包含联系转变成一个关系,是产品类别和产品之间的关系。建立一张表:包含表(产品类 别编号,产品编号) 二、数据表: 1. 公司表(company) 主要用来记录公司信息。 字段 字段名称 数据类型 可否为空 备注 compa_id 公司编号 varchar(10) 不允许为空 主键 compa_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 产品名称 varchar(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 组件编号 varchar(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) 不允许为空 外键 (作为主键) 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) 主要用来存放组件和产品之间的组成信息。 字段 字段名称 数据类型 可否为空 备注 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 (compo_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) REFERENCES product (prod_id), FOREIGN KEY(prod2_id) REFERENCES product (prod_id)) 7. 产品类别表(category) 主要用来存储产品类别信息。 字段 字段名称 数据类型 是否为空 备注 categ_id 产品类别编号 varchar(10) 不允许为空 主键 cat