将每一个实体类型转换成-个关系形式,实体的属性为关系形式的属性。 (1) 实体集转换为关系:
实体集对应于一个关系
关系名:与实体集同名。
属性:实体集的所有属性。
主码:实体集的主码。 (2) 联络转换为关系:
联络转换成为关系形式。 联络转换成为关系形式时, 要根据联络方式的不同采用不同的转换方式
二元联络转换: ① 1:1 联络的转换方法
a) 将1:1联络转换为一个独立的关系:与该联络相连的各实体的码以及联络自身的属性均转换为关系的属性,且每个实体的码均是该关系的候选码。
b) 将1:1联络与某一端实体集所对应的关系合并,则需要在被合并关系中增加属性,其新增的属性为联络自身的属性和与联络相关的另一个实体集的码。 ② 1:n 联络的转换方法
a)一种方法是将联络转换为一个独立的关系,其关系的属性由与该联络相连的各实体集的码以及联络自身的属性组成,而该关系的码为 n 端实体集的码;
b)另一种方法是在 n 端实体集中增加新属性,新属性由联络对应的 1 端实体集的码和联络自身的属性构成,新增属性后原关系的码不变。 ③ m:n 联络的转换方法
在向关系模型转换时,一个 m:n 联络转换为一个关系。转换方法为:与该联络相连的各实体集的码以及联络自身的属性均转换为关系的属性,新关系的码为两个相连实体码的组合(该码为多属性构成的组合码)。
三元联络转换: ① 1:1:1联络的转换方法
可以在三个实体类型转换成的三个关系形式中任意一个关系形式的属性中参与另两个关系形式的键(作为外键)和联络类型的属性 ② 1:1:N 联络的转换方法
1:1:N在N端实体类型转换成的关系形式中参与两个1端实体类型的键(作为外键)和联络类型的属性 ③ 1:M:N 联络的转换方法
将联络类型也转换成关系形式,其属性为M端和N端实体类型的键(作为外键)加上联络类型的属性,而键为M端和N端实体键的组合 ④ M:N:P 联络的转换方法
将联络类型也转换成关系形式,其属性为三端实体类型的键(作为外键)加上联络类型的属性,而键为三端实体键的组合。 3.依照第2题描绘的转换规则把E-R图转换成关系模型(多个关系形式),并指出主码、外码。
E-R中7个实体共有7个联络,其中二元联络6个,三元联络一个。
1:N 联络(5个):
①
1 地区(地区编号,地区名称,备注)
主码:地区编号。
N 国家(国家编号,国家名称,所属地区,备注)
主码:国家编号。外码:地区编号。
关系 附属(地区编号,国家编号)
主码:国家编号
地区(地区编号,地区名称,备注)
国家(国家编号,国家名称,所属地区,备注,地区编号
②
1 国家(国家编号,国家名称,所属地区,备注)
主码:国家编号。
N 供给商(供给商编号,供给商名称,地址,国籍,电话,备注)
主码:供给商编号。外码:国家编号。
关系 包含(国家编号,供给商编号)
主码:供给商编号
国家(国家编号,国家名称,所属地区,备注)
供给商(供给商编号,供给商名称,地址,国籍,电话,备注,国家编号)
③
1 国家(国家编号,国家名称,所属地区,备注)
主码:国家编号。
N 客户(客户编号,客户名称,地址,电话,国籍,备注)
主码:客户编号。外码:国家编号。
关系 拥有(国家编号,客户编号)
主码:客户编号
国家(国家编号,国家名称,所属地区,备注)
客户(客户编号,客户名称,地址,电话,国籍,备注,国家编号)
建库 create database IF NOT EXISTS WY; 查看库 show databases; 使用库 use WY; 查看库中表 show tables; 开端建表: 1.地区表
DROP TABLE IF EXISTS region;
CREATE TABLE region (
Region_Id INT PRIMARY KEY ,
Region_Name VARCHAR(20) ,
remarks VARCHAR(20) DEFAULT ‘该地区无备注’
); 2.国家表
DROP TABLE IF EXISTS country;
CREATE TABLE country (
Country_Id INT PRIMARY KEY,
Country_Name VARCHAR(20),
Area VARCHAR(20),
remarks VARCHAR(20) DEFAULT ‘该国家无备注’,
Region_Id int,
FOREIGN KEY (Region_Id) REFERENCES region(Region_Id)
); 3.零件表
DROP TABLE IF EXISTS part;
CREATE TABLE part (
Part_Id INT PRIMARY KEY,
Part_Name VARCHAR(20),
Manufacturer VARCHAR(20),
Brand VARCHAR(20),
Price INT,
remarks VARCHAR(20) DEFAULT ‘该零件无备注’
); 4.客户表
DROP TABLE IF EXISTS customer;
CREATE TABLE customer (
Customer_Id INT PRIMARY KEY,
Customer_Name VARCHAR(20),
Customer_Address VARCHAR(20),
Customer_Tel VARCHAR(20),
Customer_Nationality VARCHAR(20),
remarks VARCHAR(20) DEFAULT ‘该客户无备注’,
Country_Id int,
FOREIGN KEY (Country_Id) REFERENCES country(Country_Id)
); 5.供给商表
DROP TABLE IF EXISTS supplier;
CREATE TABLE supplier (
Supplier_Id INT PRIMARY KEY,
Supplier_Name VARCHAR(20),
Supplier_Address VARCHAR(20),
Supplier_Tel VARCHAR(20),
Supplier_Nationality VARCHAR(20),
remarks VARCHAR(20) DEFAULT ‘该供给商无备注’,
Country_Id int
); 6.订单表
DROP TABLE IF EXISTS torder;
CREATE TABLE torder (
Order_Id INT PRIMARY KEY,
Order_State VARCHAR(20),
Totalprice int,
Order_date VARCHAR(20),
priority VARCHAR(20),
Bookkeeper VARCHAR(20),
remarks VARCHAR(20) DEFAULT ‘该订单无备注’,
Customer_Id int,
FOREIGN KEY (Customer_Id) REFERENCES customer(Customer_Id)
);
订单项表,订单项表省略
查看库中表 show tables;
7.自行设计一些插入、删除、修改、查询的操作,并使用SQL语言实现这些操作。
如下对region地区表操作,
插入操作:
insert into region (Region_Id,Region_Name)values (1,‘亚洲’);
insert into region (Region_Id,Region_Name)values (2,‘美洲’);
insert into region (Region_Id,Region_Name)values (3,‘澳洲’);
select * from region;
修改操作:
update region set Region_Id=5,Region_Name=‘南极洲’ where Region_Id=3;