前言:不知道啥原因,最后设计出来少了一个表,无语

实验5 数据库设计实验

1.实验目的

掌握数据库设计基本方法及数据库设计工具。

2.实验内容和要求

掌握数据库设计基本步骤,包括数据库概念结构设计、逻辑结构设计,物理结构设计,数据库模式SQL语句生成。能够使用数据库设计工具进行数据库设计。

3.实验过程

设计一个采购、销售和客户管理应用数据库。其中,一个供应商可以供应多种零件,一种零件也可以有多个供应商。一个客户订单可以订购多种供应商供应的零件。客户和供应商都分属不同的国家,而国家按世界五大洲八大洋划分地区。请利用PowerDesigner或者ERwin 等数据库设计工具设计该数据库。

1.概念结构设计

识别出零件Part 、供应商Supplier,客户Customer,订单Order ,订单项Lineitem,国家Nation,地区Region等7个实体。每个实体的属性、码如下。

  • 零件Part:零件编号partkey,零件名称name,零件制造商mfgr,品牌 brand,类型type,大小Size,零售价格retailprice,包装container,备注comment。主码:零件编号partkey
  • 供应商Supplier:供应商编号suppkey,供应商名称name,地址address,国籍nation,电话 phone,备注comment等。主码:供应商编号suppkey
  • 客户Customer:客户编号custkey,客户名称name,地址address,电话phone,国籍nation,备注comment。主码:客户编号custkey
  • 订单Order:订单编号orderkey,订单状态status,订单总价totalprice,订单日期orderdate,订单优先级orderpriority,记账员clerk,运送优先级shippriority,备注comment。主码:订单编号orderkey
  • 订单项Lineitem:订单项编号linenumber,所订零件号partkey,所订零件供应商号suppkey,零件数量quantity,零件总价extendedprice,折扣 discount,税率tax ,退货标记returnflag等。主码:订单项编号 linenumber
  • 国家Nation:国家编号nationkey,国家名称name,所属地区region,备注comment主码:国家编号nationkey
  • 地区Region:地区编号regionkey,地区名称name,备注comment。主码:地区编号regionkey 。

根据实际语义,分析实体之间的联系,确定实体之间一对一,一对多和多对多联系。 画出实体-联系图(E-R图)。

2.逻辑结构设计

按照数据库设计原理中概念结构转化成逻辑结构的规则,每个实体转换成一个关系,多对多的联系也转换成一个关系。因此,根据上述画出的E-R图设计数据库逻辑结构。

1) 使用Power Designer数据库设计工具设计数据库逻辑结构,打开,并创建一个概念模型

2)根据E-R图,新建一个供应商的Entity(实体),这里需要注意,书写name的时候,code自行补全,name可以是英文的也可以是中文的,但是code必须是英文的。

然后选择Attributes框,将供应商表的每一列设计好

每列的含义如下:

  • Name: 实体名字一般为中文
  • Code: 实体代号,一般用英文
  • Data Type:实体的数据类型
  • Length:实体的数据长度
  • Domain域表示属性取值范围如可以创建10个字符的地址域
  • M:Mandatory强制属性,表示该属性必填。不能为空
  • P:Primary Identifer是否是主标识符,表示实体唯一标识符
  • D:Displayed显示出来,默认全部勾选

设置的主标识符可以在Identifiers(标识符)这个模块删除或添加主标识符。

创建完的实体如下:

根据上述步骤,完成其他六个实体的的逻辑结构设计

使用Relationship(关系)这个按钮可以连接七个表之间的关系,发生一对多或者多对一的关系。

修改好对应关系(1对多或多对多)点击确认后

根据E-R图完成数据库逻辑结构

3.物理结构设计

数据库物理结构首先根据逻辑结构自动转换生成,然后根据应用需求设计数据库的索引结构、存储结构。

1)检查CDM正确性

在CDM设计界面上选择Tools->Check Model命令,检查CDM正确性,如果存在错误,检查并更正。

2)将CDM转换成PDM(物理模型)

工具栏上选择Tools-Generate Physical Data Model命合,出现PDM Generation Options对话框,在General选项卡中,设置转换生成的PDM基本属性,包括使用哪种DBMS。

3)保存PDM

选择File->Save,保存该PDM。

4.数据库模式SQL语句生成

生成MySQL数据库管理系统的SQL语句。

选择刚才生成的物理概念模型,在对象浏览区展开Tables,点击各个表格,可以在表格中看到对应DBMS的SQL语句。

至此,一个采购、销售和客户管理应用数据库就设计完毕。

此外还可以使用此生成的数据库生成sql源文件,使用mysql打开此源文件并编译便可创建一个数据库,最终生成的数据库mysql如下:

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2022/11/30 11:27:43                          */
/*==============================================================*/drop table if exists Customer;drop table if exists Lineitem;drop table if exists Nation;drop table if exists "Order";drop table if exists Part;drop table if exists Region;drop table if exists partsupp;/*==============================================================*/
/* Table: Customer                                              */
/*==============================================================*/
create table Customer
(custkey              int not null,nationkey            int,name                 varchar(25) not null,address              varchar(40) not null,phone                char(30) not null,nation               char(20) not null,comment              varchar(100),primary key (custkey)
);/*==============================================================*/
/* Table: Lineitem                                              */
/*==============================================================*/
create table Lineitem
(linenumber           int not null,Sup_suppkey          int,orderkey             int,Par_partkey          int,partkey              int not null,suppkey              int not null,quantity             int not null,tax                  bigint not null,discount             bigint not null,extendedprice        int not null,returnflag           char(1) not null,primary key (linenumber)
);/*==============================================================*/
/* Table: Nation                                                */
/*==============================================================*/
create table Nation
(nationkey            int not null,regionkey            int,name                 char(25) not null,region               char(25) not null,comment              varchar(100),primary key (nationkey)
);/*==============================================================*/
/* Table: "Order"                                               */
/*==============================================================*/
create table "Order"
(orderkey             int not null,custkey              int,status               char(1) not null,totalprice           int not null,orderdate            date not null,orderpriority        char(15) not null,clerk                char(16) not null,shippriority         char(1) not null,comment              varchar(100),primary key (orderkey)
);/*==============================================================*/
/* Table: Part                                                  */
/*==============================================================*/
create table Part
(partkey              int not null,name                 varchar(25) not null,mfgr                 char(50) not null,brand                char(50) not null,type                 varchar(50) not null,Size                 int not null,retailprice          int not null,container            char(10) not null,comment              varchar(100),primary key (partkey)
);/*==============================================================*/
/* Table: Region                                                */
/*==============================================================*/
create table Region
(regionkey            int not null,name                 char(25) not null,comment              varchar(100),primary key (regionkey)
);/*==============================================================*/
/* Table: partsupp                                              */
/*==============================================================*/
create table partsupp
(suppkey              int not null,partkey              int not null,primary key (suppkey, partkey)
);alter table Customer add constraint "FK_Belong.to" foreign key (nationkey)references Nation (nationkey) on delete restrict on update restrict;alter table Lineitem add constraint "FK_Belong-to" foreign key (orderkey)references "Order" (orderkey) on delete restrict on update restrict;alter table Lineitem add constraint "FK_Include." foreign key (Par_partkey)references Part (partkey) on delete restrict on update restrict;alter table Nation add constraint FK_Belong_to foreign key (regionkey)references Region (regionkey) on delete restrict on update restrict;alter table "Order" add constraint FK_Purchase foreign key (custkey)references Customer (custkey) on delete restrict on update restrict;alter table partsupp add constraint FK_partsupp2 foreign key (partkey)references Part (partkey) on delete restrict on update restrict;

4.思考题

试选择一个应用,练习数据库设计。

创建一个TPCH数据库

CREATE TABLE region(regionkey INT PRIMARY KEY,name CHAR(25),comment VARCHAR(150)
);
CREATE TABLE nation(nationkey INT PRIMARY KEY,name CHAR(25),regionkey INT,comment VARCHAR(150),FOREIGN KEY(regionkey) REFERENCES region(regionkey)
);
CREATE TABLE supplier(suppkey INT PRIMARY KEY,name CHAR(100),address VARCHAR(100),nationkey INT,phone CHAR(30),acctbal NUMERIC(12,2),comment VARCHAR(100),FOREIGN KEY(nationkey) REFERENCES nation(nationkey)
);
CREATE TABLE part(partkey INT PRIMARY KEY,name VARCHAR(100),mfgr CHAR(50),brand CHAR(50),type VARCHAR(25),size INT,container CHAR(10),retailprice NUMERIC(8,2),comment VARCHAR(20)
);
CREATE TABLE partsupp(partkey INT,suppkey INT,availqty INT,supplycost NUMERIC(10,2),comment VARCHAR(200),PRIMARY KEY(partkey,suppkey),FOREIGN KEY(partkey) REFERENCES part(partkey),FOREIGN KEY(suppkey) REFERENCES supplier(suppkey)
);
CREATE TABLE customer(custkey INT PRIMARY KEY,name VARCHAR(25),address VARCHAR(40),nationkey INT,phone CHAR(30),acctbal NUMERIC(12,2),mktsegment CHAR(10),comment VARCHAR(100),FOREIGN KEY(nationkey) REFERENCES nation(nationkey)
);
CREATE TABLE orders(orderkey INT PRIMARY KEY,custkey INT,orderstatus CHAR(1),totalprice NUMERIC(10,2),orderdate DATE,orderpriority CHAR(15),clerk CHAR(16),shippriority CHAR(1),comment VARCHAR(60),FOREIGN KEY(custkey) REFERENCES customer(custkey)
);
CREATE TABLE lineitem(orderkey INT,partkey INT,suppkey INT,linenumber INT,quantity INT,extendedprice NUMERIC(8,2),discount NUMERIC(3,2),tax NUMERIC(3,2),returnflag CHAR(1),linestatus CHAR(1),shipdate DATE,commitdate DATE,receiptdate DATE,shipinstruct CHAR(25),shipmode CHAR(10),comment VARCHAR(40),PRIMARY KEY(orderkey,linenumber),FOREIGN KEY(partkey,suppkey) REFERENCES partsupp(partkey,suppkey)
);

5.实验总结

本次实验的重点在于概念结构的设计以及逻辑结构的设计;逻辑结构设计虽然可以按照一定的规则从概念结构 转换而来,但是由于概念结构通常比较抽象,较少考虑更多细节较少考虑更多细节,因此转换而成的 逻辑结构还需要进一步调整和优化。
e DATE,
commitdate DATE,
receiptdate DATE,
shipinstruct CHAR(25),
shipmode CHAR(10),
comment VARCHAR(40),
PRIMARY KEY(orderkey,linenumber),
FOREIGN KEY(partkey,suppkey) REFERENCES partsupp(partkey,suppkey)
);

#### 5.实验总结本次实验的重点在于概念结构的设计以及逻辑结构的设计;逻辑结构设计虽然可以按照一定的规则从概念结构 转换而来,但是由于概念结构通常比较抽象,较少考虑更多细节较少考虑更多细节,因此转换而成的 逻辑结构还需要进一步调整和优化。
这次的概念结构选择了实验指导书中一直使用的采购、销售和客户管理应用数据库,较为复杂,但是比较更能学好概念结构设计和逻辑结构设计。

数据库实验5 数据库设计实验相关推荐

  1. android常用控件实验报告,ui设计实验报告.doc

    ui设计实验报告 ui设计实验报告 篇一:UI设计实验报告 实验项目四:UI设计 一. 实验目的和要求 1.熟练运用Eclipse软件中的swing设计. 2.掌握UI编写的软件. 3.能都熟练的进行 ...

  2. 闹钟Android实验报告,闹钟设计实验报告.doc

    闹钟设计实验报告 闹钟设计实验报告 院系: 计算机与通信学院 专业: 计算机科学与技术 班级: 01154 班 姓名: 伍晨曦 (13号) 指导老师: 杨 华 实验目的: 学会VHDL语言的并发执行的 ...

  3. 微机原理与接口技术实验:子程序设计实验

    学生实验报告 实验课名称:微机原理与接口技术 实验项目名称:子程序设计实验 实验名称:单指令功能的实现 一. 实验目的 1.掌握汇编语言源程序子程序设计方法:. 二.实验内容 设计一个程序,将所有的小 ...

  4. 自控实验——直流电机转速设计实验报告

    自控原理-直流电机转速控制设计实验报告 实验报告 一.实验目的 了解直流电机转速测量与控制的基本原理 掌握LabVIEW图形化编程方法,编写电机转速控制系统程序 熟悉PID参数对系统性能的影响,通过调 ...

  5. 计算机控制实验PID数字控制器设计,实验二数字PID控制器的设计

    <实验二数字PID控制器的设计>由会员分享,可在线阅读,更多相关<实验二数字PID控制器的设计(13页珍藏版)>请在人人文库网上搜索. 1.实验二 数字PID控制器的设计直流闭 ...

  6. 计算机网络虚拟局域网实验报告,课程设计实验报告-虚拟局域网VLAN的配置.doc

    文档介绍: 设计 中北大学电子与计算机科学技术学院 实验报告 组号________ 学号____ ___ 姓名____ 实验时间__2012-_______ 课程名称:网络设备与集成 辅导教师:王东 ...

  7. 计算机网络实验六 综合设计实验

    一.实验目的 1.掌握因特网的配置相关工作 二.实验要求 1.构建一个如下图3所示拓扑图(或简化图,去掉R4): 图3 网络互联拓扑图 2.要求PC1和PC3 是同一单位内部的不同子网(例如B类网络的 ...

  8. 计算机组成原理分时传送电路设计,计算机组成原理和系统结构实验仪,FPGA设计,上海求育...

    原标题:计算机组成原理和系统结构实验仪,FPGA设计,上海求育 上海求育QY-JXSY46计算机组成原理与系统结构实验箱 上海求育QY-JXSY46计算机组成原理与系统结构实验箱是采用八位机主板和十六 ...

  9. logisim 快速加法器设计实验报告_基于Logisim平台的《计算机组成原理》实验教学探究...

    邵雄凯 杨习伟 摘要:在分析现有<计算机组成原理>实验教学现状的基础上,针对软件类专业学生硬件基础知识薄弱.一般地方高校硬件设备不足等实际情况,提出基于Logisim平台的<计算机组 ...

  10. mysql实验报告四_实验报告四

    实 实 验 报 告 课程名称 数据库实验及课程设计 实验项目 数据查询 实验 仪器 ___________________________ 系 别______信息管理学院______ 专 业_____ ...

最新文章

  1. 最长递增子序列的两种解法
  2. 动态规划中的多段图问题
  3. 剑指offer:扑克牌顺子
  4. linux c printf 不能输出
  5. java ee核心技术与应用_Java EE核心技术与应用(全面覆盖Java EE 6) 郝玉龙等著 pdf扫描版[103MB]...
  6. 值得推荐的中文版WF/WCF图书
  7. Qt学习笔记之类继承关系图
  8. Linux中ELF格式 可执行文件+动态链接器 的加载
  9. 一定质量的封闭气体被压缩后_多晶硅氯氢化装置补充氢隔膜压缩机十字头铜套磨损原因分析与改善探讨...
  10. Android播放器之SurfaceView与GLSurfaceView
  11. 《用户故事与敏捷方法》阅读笔记三
  12. php中explorer,explorer.php
  13. linux系统下制作启动u盘,在Linux系统下如何制作创建win10启动盘U盘启动?
  14. 史上最全人工智能英文原版PDF教材1.03G资源包Artificial Intelligence
  15. 基于TI Davinci架构的多核/双核开发高速扫盲(以OMAP L138为例),dm8168多核开发參考以及达芬奇系列资料user guide整理...
  16. firefox被hao.360劫持的处理方法
  17. 十年测试老司机带你应对68道面试题---文章转载自 TesterHome
  18. android+反调试+方案,Android反调试笔记
  19. Fluid Motion by Curl Noise
  20. el-tree组件说明汇总,实现过滤筛选、添加、编辑、删除、选中节点功能等

热门文章

  1. 数字电子钟 1Hz 秒脉冲信号的设计
  2. 存储学习之--StarWind虚拟存储配置和Linux客户端连接
  3. 一招搞定GitHub下载加速!
  4. 适用于2019的最佳WordPress Form Builder插件
  5. 西宁计算机二级辅导班,西宁的计算机二级去哪里考啊?
  6. 你在B站弹幕玩过哪些梗?
  7. u盘安装浪潮服务器_浪潮NF5280M5服务器安装windows2008R2
  8. android+汽车零部件企业的供应商质量管理体系有待完善,汽车零部件采购质量管理的相关探讨论文...
  9. memcpy函数实现(c语言)
  10. 【侯捷】C++STL标准库与泛型编程(第四讲)