数据库系统原理实验报告1 | E-R图设计

整理自博主2021级专业课《数据库系统原理》自己完成的实验报告。

目录

一、实验目的

二、实验内容

1、某个学校有若干个系

2、某工厂生产若干产品

3、某学校的田径运动会中设置了各类比赛

4、自己调查一个需要提供开发数据库应用系统的单位

三、实验结果总结

四、实验结果的运用

自己举一个应用实例,并绘制E-R图。


一、实验目的

1.熟悉数据库模型的概念,熟悉概念模型的表示方法:E-R图。将实体,属性和联系转化为E-R图。

2.根据数据库基本概念、关系模型基本要领、数据库设计概念,再根据需求确定实体、属性和联系。


二、实验内容

用E-R图画出概念模型,要求在图上注明属性及联系的类型。

1、某个学校有若干个系

某学校有若干个,系的属性有系编号和系名;每个系有若干班级教研室,班级的属性有班级号和班级名,教研室的属性有教研室号和教研室名;每个教研室有若干教师,每个班级有若干学生,学生的属性有学号,姓名,性别,出生年月,学历每个教师指导若干学生,每个学生只能被一个教师指导;教师的属性有:教师编号,教师姓名,教师职称。每个学生可以选修多门课程,每门课程可以被多个学生选修,学生选课会有成绩。课程的属性有课程编号,课程名,学分。

2、某工厂生产若干产品

某工厂生产若干产品,每种产品由不同的零件组成,有的零件可以在不同的产品上使用产品的属性有产品号和产品名称,零件的属性有零件号和零件名称;这些零件由不同的原材料制成,不同的零件所使用的原材料可以相同材料的属性有材料号、材料名和类别。这些零件按照所属的不同产品分别放在不同的仓库中,原材料按照类别放在若干仓库中,即一个编号的原材料只能放在一个仓库中,一个仓库可以放多种编号的原材料。仓库的属性有仓库号,仓库名,仓库容量。

补充:答案图(省略了实体的属性)

 

3、某学校的田径运动会中设置了各类比赛

某学校的田径运动会中设置了各类比赛,每一比赛类别有类别编号、类别名称和主管等属性,每一比赛类别包含很多比赛项目;每一比赛项目有项目编号、项目名称、比赛时间和级别等属性;各个院团队有团编号、团名称、领队等属性,每一代表团有多名运动员组成,运动员有编号,姓名,年龄,性别等属性;每一名运动员可以参加多个比赛项目,每一比赛项目也有多名运动员参加,运动员参加比赛会有成绩。

4、自己调查一个需要提供开发数据库应用系统的单位

自己调查一个需要提供开发数据库应用系统的单位,例如:超市、公司、酒店、社团、影院、机场、银行、饭店、图书馆、教务处、某个大学、小学或者中学、仓库、浴室、健身房、旅游团、书店等,你所能想到或者调查到的,写出他们的需求,找出数据库中将来要存储的数据中对应的实体、属性和联系,要求画出的E-R图中至少包含一个一对多的联系和一个多对多的联系,至少有一个联系上要包含属性。


三、实验结果总结

  1. 我能够正确从材料中提取出实体、实体的属性以及联系的属性。也基本能够画出E-R图的大致框架。
  2. 在判断联系类型这方面没有自己原先想的那么简单。对于简单、阐述十分明确的联系关系,我能够正确地判断出属于哪一类联系,但是对于一些没有那么明确的阐述,我往往就会比较纠结。比如本次实验二中的“不同的零件所使用的原材料可以相同”“零件按照所属的不同产品分别放在不同的仓库中”这样的表述,我就思考了很久。
  3. 在我多次遇到理不清联系类型的情况时,我想出了以下办法来帮助理解:在草稿纸上举例子、画草图。比如对于“不同的零件所使用的原材料可以相同”这个联系,我的思路是,先假设零件有A、B两种,原材料有a、b、c三种,套入对该联系表述的理解即是对于A和B两种不同的零件,它们可以都使用原材料a,这样一来一个原材料对应了不止一个零件,此时零件-原材料就是n←1;结合零件由不同的原材料构成,零件-原材料同时又是1→n。因此二者的联系是多对多的联系。

  4. 另外,在梳理一对多的联系时我遇到了一个小问题:在E-R图上标注多对多联系时,哪边写“1”,哪边写“n”?在重新翻书看例理解后,我明白了。若“一个实体A对应多个实体B,一个实体B对应一个实体A”时,实体A--- 1 ---联系--- n ---实体B,正着看是1→n;反着看把n取作1时,左边只能是1,这也就达到了1←1。通过这样的理解,我相信我不会再在这样的小问题上出错了。
  5. 在画E-R图之前,最好先在题干材料中标注,将实体、属性、联系用不同的记号标出来。读完题干且做好圈点勾画之后再画,要比直接上手更加不容易错,也更快。

四、实验结果的运用

自己举一个应用实例,并绘制E-R图。

医院管理系统:

实体:医生,科室,病人,病房,医疗费用

联系:

      ①一个医生主治多个病人,一个病人可以被多个医生主治(多对多)

      ②一个医生属于一个科室,一个科室里可以有多个医生(一对多)

      ③一个病人在一间病房里面,一间病房里有多个病人(一对多)

      ④一个病人支付一项医疗费用,一项医疗费用由一个病人支付(一对一)

      ⑤医生内部有领导和被领导的关系(实体间的一对多)

属性:

      ①医生:编号,年龄,专业

      ②病人:编号,性别,职业

      ③病房:病房号,规格,地址

            ④医疗费用:挂号费,取药费,手术费,住院费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/734297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中常用的集合及方法(2)

在Java(JDK8)中,集合(Collection)是数据结构的实现,用于存储和操作对象集合。 集合(Collection)中包含的一般类或接口: 在这其中呢,我们经常使用的其实就是L…

API 设计的原则

我在 Thoughtworks 上曾经读到过一篇文章《API 设计的几条原则》我觉得写得非常不错,链接我放底下,推荐阅读。 在我多年的工作历程中,我深刻意识到 API 的设计至关重要,但是我发现,在一般的组织中,API 的设…

K8S - 在任意node里执行kubectl 命令

当我们初步安装玩k8s (master 带 2 nodes) 时 正常来讲kubectl 只能在master node 里运行 当我们尝试在某个 node 节点来执行时, 通常会遇到下面错误 看起来像是访问某个服务器的8080 端口失败了。 原因 原因很简单 , 因为k8s的各个组建&…

外包干了6天后悔了,技术明显进步。。。。。

先说一下自己的情况,本科生,19年通过校招进入广州某软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

chrome高内存占用问题

chrome号称内存杀手不是盖的,不设设置的话,经常被它内存耗尽死机是常事。以下自用方法 1 自带的memory saver chrome://settings/performance PerformanceMemory Saver When on, Chromium frees up memory from inactive tabs. This gives active tab…

基于Springboot的在线租房和招聘平台(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的在线租房和招聘平台(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结…

python基础——条件判断和循环【if,while,for,range】

📝前言: 这篇文章主要讲解一下条件判断语句if和循环语句while,for在python中需要注意的地方。 建议已有一定了解(对语句的执行逻辑清楚)的读者观看,如果对条件判断和循环的执行逻辑不太清楚,也可…

bug_java

文章目录 1.创建Maven时: idea报错为:java:错误:不支持发行版本52. Springbot启动报错-类文件具有错误的版本 61.0, 应为 52.0 1.创建Maven时: idea报错为:java:错误:不支持发行版本…

遗传算法GA求解机器人栅格地图最短路径规划,可以自定义地图及起始点(提供MATLAB代码)

一、原理介绍 遗传算法是一种基于生物进化原理的优化算法,常用于求解复杂问题。在机器人栅格地图最短路径规划中,遗传算法可以用来寻找最优路径。 遗传算法的求解过程包括以下几个步骤: 1. 初始化种群:随机生成一组初始解&…

小程序网页view多行文本超出隐藏或显示省略号

实现效果: 限制两行,超出即显示省略号 实现:话不多说,展示代码 关键代码 .box{ width:100rpx; overflow:hidden; text-overflow: ellipsis;//超出省略号 display:-webkit-box; -webkit-line-clamp: 2;//显…

RabbitMQ - 03 - Work消息模型

目录 部署demo项目 什么是Work消息模型 实现Work消息模型 1.创建队列 2.生产者代码 3.消费者代码 4.配置yml 部署demo项目 通过消息队列demo项目进行练习 相关配置看此贴 http://t.csdnimg.cn/hPk2T 注意 生产者消费者的yml文件也要配置好 什么是Work消息模型 工作…

Arcgis小技巧【20】——属性表有东西,缩放至图层却看不到?

一、问题分析 这是一个看似正常的要素类数据,打开它的属性表,里面有一行要素: 说明这不是空数据。 回到地图界面,在图层列表中,右键单击,点击【缩放至图层】。 使用过这个功能的应该知道,点击…

快速上手:使用Hexo搭建并自定义个人博客

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

Linux常用操作命令-防火墙常用操作

一、防火墙常用操作 1、查看防火墙的状态; systemctl status firewalld 2、启动防火墙 systemctl start firewalld.service 3、开启某个端口,如8081端口,输入命令 firewall-cmd --zonepublic --add-port8088/tcp --permanent 4、删除某个…

Linux第74步_“设备树”下的LED驱动

使用新字符设备驱动的一般模板,以及设备树,驱动LED。 1、添加“stm32mp1_led”节点 打开虚拟机上“VSCode”,点击“文件”,点击“打开文件夹”,点击“zgq”,点击“linux”,点击“atk-mp1”&am…

AHU 数据库 实验四

【实验名称】 实验4 数据库的嵌套查询和集合查询 【实验目的】 1. 理解并掌握子查询的概念和作用; 2. 掌握DBMS 实现嵌套查询的基本方法和应用; 3. 掌握DBMS 实现集合查询的基本方法和应用; 4. 学习、掌握并熟练…

selenium-java 通过配置xml文件并发运行类或者方法

1、打开idea允许某个class类,可以在控制台看到运行路径的下的配置文件如下图: 2、将路径复制到本地路径中找到temp-testng-customsuite.xml文件 3、复制该文件到项目的根目录下,可以修改文件名称,如下图 4、如图所示,通…

Unity UGUI之InputField(TMP)基本了解

Unity的InputField组件是用于在Unity中创建可供用户输入文本的输入框的UI组件。通过InputField组件,可以让用户在运行时输入文本,比如用户名、密码、搜索关键字等。其中TMP版本的InputField是基于TextMeshPro的InputField组件,提供了更多的文…

C++字符串操作【超详细】

零.前言 本文将重点围绕C的字符串来展开描述。 其中,对于C/C中字符串的一些区别也做出了回答,并对于C的(string库)进行了讲解,最后我们给出字符串的不同表达形式。 开发环境: VS2022 一.字符串常量跟字…

运维随录实战(12)之node版本管理工具nvm

1,下载安装nvm 可以去其 github 主页下在,地址为 github.com/coreybutler…会看到有很多个文件可供选择: 这里稍做下解释: nvm-noinstall.zip: 这个是绿色版本,不需要安装,但是使用之前需要配置环境变量;nvm-setup.zip:推荐下载这个包,无需配置就可以使用;Source …