当前位置:首页 > 网络教程 > php > HNU_数据库_实验5(2021级)-数据库设计实验

HNU_数据库_实验5(2021级)-数据库设计实验

一叶知秋2024-02-01 20:49:00php11

实验五 数据库设计实验

1.实验目的

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

         

2.实验内容和要求

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

3.实验重点和难点

实验重点:概念结构设计、逻辑结构设计。

实验难点:逻辑结构设计。逻辑结构设计虽然可以按照一定的规则从概念结构转换来,但是由于概念结构通常比较抽象,较少考虑更多细节,因此转换而成的逻辑结构还需进一步调整和优化。逻辑结构承接概念结构和物理结构,处于核心地位,因而是数据库设计的重点。

4.实验过程

设计一个简单的学生选课系统的数据库。

数据库包含学生信息,课程信息,学生选课信息。

(1)数据库概念结构设计

三个实体:学生,课程,选课。每个实体的属性、码如下:

①学生Student:
文字描述 标识符
学号(主码) Sno
姓名 Sname
性别 Ssex
年龄 Sage
班级 class
院号 Dno
②课程Course:
文字描述 标识符
课号(主码) Cno
课程名 Cname
学时数 Hours
学分 Credit
类型 Type
开设院系 Dno
③选课表SC:
文字描述 标识符
学号(主码) Sno
课号(主码) Cno
成绩
E-R图:

(2)数据库逻辑结构设计

按照数据库设计原理中概念结构转化成逻辑结构的规则,每个实体转换成一个关系,多对多的联系也转换成一个关系。

因此,根据上述画出的E-R图设计数据库逻辑结构。

①创建概念模型

在“文件”-“新建模型”中,创建一个概念模型Conceptual Diagram,并命名为ST:

②根据E-R图创建实体
a.建立新Enity-Student

单击paletee中的Enity

然后在空白处单击:

注:若没有看到palette工具栏,则打开“工具”->“自定义菜单和工具栏”

选中“Palette”即可。

b.修改Enity属性

空白处出现一个Enity后,再在paltee中单击“鼠标”按键恢复,双击空白处建立的Enity,如下图:

“常规”:书写name的时候,code自行补全,name可以是英文的也可以是中文的,但是code必须是英文的。

“属性”Attributes:

结果:

Name: 实体名字一般为中文

Code: 实体代号,一般用英文

Data Type:实体的数据类型

Length:实体的数据长度

Domain域表示属性取值范围如可以创建10个字符的地址域

M:Mandatory强制属性,表示该属性必填。不能为空

P:Primary Identifer是否是主标识符,表示实体唯一标识符

D:Displayed显示出来,默认全部勾选

c.创建Enity-Course

d.创建Association-SC
1)Palette中的Association图标灰色

问题:

解决:

Tools -> Model options ->Notation, 将Notation修改为E/R+Merise

解决:

2)创建选课SC-联系对象

1】单击Palette中的association,再单击空白处:(与创建Enity的步骤相同)

2】双击创建的“Association_1”,修改名字属性

3】结果

3)Association LInk建立联系

单击Palette中的Association Link,分别将学生表与选课联系、课程表与选课联系。

双击关系的“线”,改为一对多:

 

(3)数据库物理结构设计

①check model

工具-->check model:

②自动转换得到数据库物理结构
a.生成PDM

工具-->Generate Physical Data Model

b.运行结果

(4)生成SQL语句

①生成数据库

数据库-->生成数据库

设置生成sql语句的文件夹和文件名:

②查看生成结果

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2023/12/2 19:56:00                           */
/*==============================================================*/
​
​
drop table if exists Course;
​
drop table if exists Course2;
​
drop table if exists Student;
​
/*==============================================================*/
/* Table: Course                                                */
/*==============================================================*/
create table Course
(
   Cno                  char(12) not null,
   Cname                char(12),
   Hours                int,
   Credit               int,
   Type                 char(12),
   Dno                  char(12),
   primary key (Cno)
);
​
/*==============================================================*/
/* Table: Course2                                               */
/*==============================================================*/
create table Course2
(
   Sno                  char(12) not null,
   Cno                  char(12) not null,
   Grade                int,
   primary key (Sno, Cno)
);
​
/*==============================================================*/
/* Table: Student                                               */
/*==============================================================*/
create table Student
(
   Sno                  char(12) not null,
   Sname                char(12),
   Ssex                 char(2),
   Sage                 int,
   Class                char(12),
   Dno                  char(12),
   primary key (Sno)
);
​
alter table Course2 add constraint FK_Course foreign key (Sno)
      references Student (Sno) on delete restrict on update restrict;
​
alter table Course2 add constraint FK_Course2 foreign key (Cno)
      references Course (Cno) on delete restrict on update restrict;
③测试生成结果

在mysql workbench中运行上面生成的sql语句:

 

a.学生表:

b.课程表:

c.选课表:

5.实验总结

数据库的设计的基本步骤包括数据库概念结构设计、逻辑结构设计,物理结构设计。

其中概念结构设计通常用E-R图表示。

逻辑结构设计比较重要,需要从E-R图转换得到,并需要完成一些细节,进行调整优化。

物理结构设计则需要完成存储路径的设计和存储结构的设计,需要根据实际情况进行设计。例如每个关系的存储结构,具体的数据类型和长度都要符合实际,同时尽量减小开销。使

用类似PowerDesigner的工具可以辅助设计,方便的进行模型间的转化,并可以直接生成SQL语句,有必要掌握使用的基本方法。

扫描二维码推送至手机访问。

版权声明:本站部分文章来自AI创作、互联网收集,请查看免责申明

本文链接:https://www.yyzq.team/post/309414.html

分享给朋友: