数据库设计-笔记3
1.医疗的门诊流程ER图
ER 是实体 - 关系(Entity - Relationship)的简称,ER 模型是数据库设计中用于描述现实世界数据结构的一种概念模型,由美籍华裔计算机科学家陈品山在 1976 年提出。以下是对 ER 模型的基本元素、作用和表示方法的介绍:
基本元素
实体(Entity):是现实世界中具有独立存在意义的事物或概念,如学生、教师、课程等。在 ER 图中,实体通常用矩形框表示,框内写上实体的名称。
属性(Attribute):用于描述实体的特征或性质。例如,学生实体可能具有学号、姓名、年龄等属性。在 ER 图中,属性用椭圆框表示,通过连线与实体相连。
关系(Relationship):表示实体之间的联系。例如,学生与课程之间存在选课关系,教师与课程之间存在授课关系。在 ER 图中,关系用菱形框表示,框内写上关系的名称,并用连线将相关的实体连接起来。
作用
概念建模:ER 模型提供了一种直观、清晰的方式来描述现实世界中的数据结构和关系,帮助数据库设计人员更好地理解业务需求,将现实世界的问题转化为计算机可处理的数据模型。
沟通工具:它是数据库设计人员与业务人员、其他开发人员之间进行沟通的有效工具。通过 ER 图,不同领域的人员可以更方便地交流和讨论数据需求,确保数据库设计符合业务实际。
设计基础:基于 ER 模型,可以进一步进行数据库的逻辑设计和物理设计,将概念模型转化为具体的数据库表结构和存储方式,为数据库的实现和维护提供基础。
表示方法
ER 模型通常用 ER 图来表示。除了上述用矩形框表示实体、椭圆框表示属性、菱形框表示关系的基本表示方法外,还有一些其他的表示方式来更详细地描述模型。
实体与属性的连接:用直线将实体与它的属性连接起来,表示属性属于该实体。
关系的类型:在实体与关系的连线上,通常会标注关系的类型,如一对一(1:1)、一对多(1:n)或多对多(m:n)。例如,一个学生可以选多门课程,而一门课程可以被多个学生选,学生与课程之间的选课关系就是多对多关系。
关系的属性:有些关系本身也可能具有属性,例如学生与课程之间的选课关系可能具有成绩属性。关系的属性用椭圆框表示,通过连线与关系的菱形框相连。
通过 ER 模型及其表示方法 ER 图,数据库设计人员可以清晰地描述数据库中要存储的数据及其关系,为后续的数据库设计和开发工作奠定坚实的基础。
3.介绍一下mysql
历史与发展
MySQL 最初由瑞典的 MySQL AB 公司开发,于 1995 年正式发布。
2008 年,MySQL AB 公司被 Sun Microsystems 收购,之后 Sun 又被甲骨文(Oracle)公司收购,MySQL 成为 Oracle 旗下的产品。
尽管所有权发生了变化,但 MySQL 仍然保持着开源的特性,并在开源社区的推动下不断发展和完善。
特点
开源免费:任何人都可以自由使用、修改和分发 MySQL 的源代码,这使得它在成本敏感的项目中具有很大的优势。
性能卓越:MySQL 具有高效的存储引擎和查询优化器,能够快速处理大量的数据。它支持多线程和并发操作,能够同时处理多个用户的请求,提高系统的吞吐量。
稳定性高:经过多年的发展和广泛的应用,MySQL 已经成为一个非常稳定的数据库系统。它具有完善的事务处理机制和数据恢复功能,能够保证数据的一致性和完整性。
功能丰富:支持标准的 SQL 语言,提供了丰富的数据库对象,如表格、视图、存储过程、函数等。还支持多种数据类型,能够满足不同应用场景的需求。
易于使用和管理:MySQL 提供了简单易用的命令行工具和图形化管理工具,使得数据库的安装、配置、管理和维护都非常方便。即使是没有太多数据库经验的用户也能够快速上手。
应用场景
Web 应用:是 LAMP(Linux + Apache + MySQL + PHP/Perl/Python)架构的重要组成部分,广泛应用于各种动态网站和 Web 应用程序的开发,如 WordPress、Drupal 等内容管理系统,以及电子商务网站、社交媒体平台等。
企业级应用:许多企业在内部的业务系统中使用 MySQL,如财务管理系统、客户关系管理系统(CRM)、企业资源规划系统(ERP)等。它能够满足企业对数据存储和处理的高可靠性、高性能和安全性的要求。
大数据处理:虽然 MySQL 本身主要用于关系型数据的处理,但在一些大数据处理场景中,它也可以作为数据仓库的一部分,与其他大数据处理工具(如 Hadoop、Spark 等)结合使用,用于存储和管理元数据或一些结构化程度较高的小数据量数据。
存储引擎
InnoDB:是 MySQL 默认的存储引擎,支持事务、行级锁和外键约束,具有很好的事务处理能力和数据一致性保证,适用于对数据一致性要求较高的应用场景,如银行系统、电子商务等。
MyISAM:不支持事务和行级锁,但具有较高的查询性能,适用于以读操作为主的应用场景,如一些只读的数据库、数据仓库等。
Memory:将数据存储在内存中,速度非常快,但数据在服务器重启后会丢失,适用于对速度要求极高、数据量较小且不需要持久化存储的场景,如缓存、临时数据存储等。
社区与生态系统
活跃的社区:拥有庞大而活跃的开源社区,社区成员来自世界各地。开发者可以在社区中分享经验、交流技术、提交 Bug 报告和贡献代码。社区的力量推动着 MySQL 不断发展和完善,同时也为用户提供了丰富的技术支持和资源。
丰富的插件和工具:围绕 MySQL 形成了一个丰富的生态系统,有许多第三方的插件和工具可供使用。例如,MySQL Workbench 是一款功能强大的图形化数据库设计和管理工具,Navicat for MySQL 是一款流行的数据库管理工具,还有各种性能监控工具、数据备份恢复工具等,这些工具能够帮助开发者和管理员更好地使用和管理 MySQL 数据库。
MySQL目前属于Oracle甲骨文公司,MySQL称之为关系型数据库、微软的SQL Server。
MySQL数据库能够支持在多种操作系统上运行,包括Solaris、Mac OS、FreeBSD和Windows,Linux通通支持。核心功能就是处理数据,其中提供空间供数据存储又是其主要主要功能之一。
数据库一般也不直接面向数据存储,存储是交给表/索引这类对象完成的。
MySQL数据库是一种C/S模型(即客户端和服务端模型),客户端通过账号、密码来连接服务器,连接成功之后才可以进行数据库的操作(CRUD:增加、删除、变更、查询)。MySQL的服务端采用IO复用 + 可伸缩的连接池,实现了网络高并发的经典模型