资源描述
认识,MySQL,数据库,MySQL,数据库技术与项目应用,01,目录,/,Contents,01,02,03,认识数据库,安装与配置,MySQL,数据库,设置,MySQL,字符集,任务,1,认识数据库,在设计和使用,MySQL,数据库之前,需要了解数据库的基本概念,、数据库的发展以及,关系型数据库数据的存储方式。,任务场景,数据库的基本概念,数据,(,Data,),用来记录信息的可识别符号,是信息的具体表现形式。数据是对现实世界的事物采用计算机能够识别、存储和处理的方式进行描述,其具体表现形式可以是数字、文本、图像、音频、视频等。,数据库,(,Database,,,DB,),用来存放数据的仓库。,数据库管理系统,(,Database Management System,,,DBMS,),是操纵和管理数据库的软件,为应用程序提供访问数据库的方法,包括数据的定义、数据操纵、数据库运行管理及数据库建立与维护等功能。,数据库的基本概念,数据库系统,数据库系统(,Database System,,,DBS,)由软件、数据库和数据,库,管理员组成。,数据库技术的发展,数据库技术的发展演变,人工管理,文件系统管理,数据库系统管理,数据库系统管理的发展演变,层次,/,网状数据库系统,关系数据库系统,新一代数据库系统,新一代数据库系统,I,T,D,T,关系型数据库,在关系模型中,实体和实体间的联系均由单一的关系来表示。在关系型数据库中,关系就是表,一个关系型数据库就是若干个二维表的集合。,关系型数据库产品,Oracle,Oracle,是商用关系型数据库管理系统中的典型代表,是甲骨文公司的旗舰产品。,MySQL,MySQL,是当下最流行的开源和多线程的关系型数据库管理系统,它具有快速、可靠和易于使用的特点。,SQL,Server,SQL Server,是微软推出的关系型数据库管理系统,广泛应用于电子商务、银行、电力、教育等行业,它使用,Transact-SQL,语言完成数据操作。,SQL,语言,SQL,(,Structured Query Language,,结构化查询语言)是关系型数据库语言的标准。,数据定义语言(,Data Definition Language,DDL,),用于创建数据库和数据库对象,为数据库操作提供对象。例如,数据库、表、存储过程、视图等都是数据库中的对象,都需要通过定义才能使用。,DDL,中主要的,SQL,语句包括,CREATE,、,ALTER,、,DROP,,分别用来实现数据库及数据库对象的创建、更改和删除操作。,数据操纵语言(,Data Manipulation Language,DML,),主要是用于操纵数据库中的数据。包括,INSERT,、,SELECT,、,UPDATE,、,DELETE,等语句。,数据控制语言(,Data Control Language,DCL,),主要实现对象的访问权限及对数据库操作事务的控制,包括,GRANT,、,REVOKE,、,COMMIT,和,ROLLBACK,。,数据库中的操作都是通过执行,SQL,语句来完成,它,可以方便的嵌套在,Java,、,C#,、,PHP,等程序语言,中,以实现应用程序对数据的查询、插入、修改和删除等操作。,大数据时代的数据库,NoSQL,(,Not,Only,SQL,),泛指非关系型数据库,采用键值对(,key-value,)方式存储数据。,主要应用于分布式数据处理环境,用于解决大规模数据集合下数据种类,的,多样性,问题。,当下流行的,NoSQL,数据库主要有,Redis,、,MonogoDB,、,HBase,等。,NewSQL,为了将传统关系型数据库事务的,ACID,特性和,NoSQL,的高性能和可扩展性进行有机结合,以提升传统关系数据库在数据分析方面的能力。,主要代表的数据库有,TiDB,、,VoltDB,、,MemSQL,等。,在大数据时代,适用,事务处理的的传统关系型数据库,、适用于,高性能应用的,NoSQL,和适用于,数据分析应用的,NewSQL,三种形式不会单一存在,“多种架构支持多类应用”会成为数据库行业应用的基本思路。,任务,2,安装与配置,MySQL,数据库,要使用,MySQL,来存储和管理数据库,首先要安装和配置,MySQL,数据库。本任务介绍了,MySQL,的安装和配置过程,并使用命令行和,Navicat,工具操作,MySQL,数据库。,任务场景,MySQL,概述,MySQL,作为关系型数据库的重要产品之一,由于其体积小、开放源码、成本低等优点,被广泛的应用在,Internet,的中小型网站上。,MySQL,的,主要特点,可移植性好,强大的数据保护功能,强大的业务处理能力,支持大型数据库,运行速度快,MySQL8.0,简介,自,2009,年,MySQL5.1,发布后,,MySQL5.x,系列延续了多年,直到,2018,年,4,月,MySQL,首个正式版,8.0.11,发布。,MySQL8.0,版本在功能上进行较大的增加和改进,。,MySQL8.0,的部分新特性,事务性数据字典,安全与帐户管理,InnoDB,增强,字符集支持,优化器,窗口函数,安装,MySQL,服务器,下载,MySQL,,其官网下载地址为,default-character-set,#,服务器参数配置,#SERVER SECTION,mysqld,#,服务器参数配置,#MySQL,服务程序,TCP/IP,监听端口,默认为,3306,port=3306,#,服务器安装路径,basedir=C:/Program Files/MySQL/MySQL Server 8.0/,#,服务器中数据文件的存储路径,读者可以根据需要修改些参数,datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data/,#,设置服务器端的字符集,#character-set-server,#,设置默认的存储引擎,当创建表时若不指定存储类型,则为,INNODB,default-storage-engine=INNODB,#,设置,MySQL,服务器的最大连接数,max_connections=151,使用命令行操作,MySQL,使用,net,命令,启动和停止,MySQL,服务,net start mysql80,net stop mysql80,使用,Windows,服务管理器启动和停止,MySQL,服务。,使用命令行操作,MySQL,登录,MySQL,数据库,【例,1.1,】用户,root,,登录,MySQL,服务。,mysql,为登录命令名,存放在,MySQL,的安装目录下,-h,表示后面的参数,hostname,为服务器的主机地址,当客户端与服务器在同一台机器上时,,hostname,可以使用,localhost,或,127.0.0.1,。,-u,表示后面的参数,username,为登录,MySQL,服务的用户名。,-p,则表示后面的参数为指定用户的密码。,mysql h hostname u username-p,mysql h localhost u root-p,MySQL,的相关命令,命令名,简写,说明,?,(?),显示帮助信息,clear,(c),清除当前输入语句,connect,(r),连接到服务器,可选参数数据库和主机,delimiter,(d),设置语句分隔符,exit,或,quit,(q),退出,MySQL,help,(h),显示帮助信息,prompt,(R),改变,MySQL,提示信息,source,(.),执行,SQL,脚本文件,status,(s),获取,MySQL,的状态信息,tee,(T),设置输出文件,并将信息添加所有给定的输出文件,use,(u),切换数据库,charset,(C),切换字符集,【例,1.2,】查看,MySQL,命令帮助。,mysql help,使用,Navicat,图形化管理工具操作,MySQL,【,例,1.3】,使用,Navicat,连接到,MySQL,服务器。,使用,Navicat,图形化管理工具操作,MySQL,【,例,1.4】Navicat,中执行查询语句,查看,MySQL,内置的系统变量。,任务,3,设置,MySQL,字符集,MySQL8,将默认字符集设为,utf8mb4,,解决了长期困扰程序员因字符集产生的乱码问题。本任务详细介绍了,MySQL8.0,中常用字符集,并结合实际应用阐述如何设置和选择合适的字符集。,任务场景,MySQL,常用字符集,字符集是一套符号和编码的规则。,MySQL,的字符集包括字符集(,CHARACTER,)和校对规则(,COLLATION,)两个概念,其中字符集是用来定义,MySQL,存储字符串的方式,校对规则则是定义了比较字符串的方式。,(,1,),utf8,:也称为通用转换格式(,8-bit Unicode Transformation Format,),是针对,Unicode,字符的一种变长字符编码,,,在,MySQL,中是,utf8mb3,的别名。,utf8,编码对英文使用,1,个字节、中文使用,3,个字节来编码。,utf-8,包含了全世界所有国家,日常,需要用到的字符,是一种国际编码,通用性强。在,Internet,应用中广泛使用。,(,2,),utf8mb4,(,most bytes 4,):,MySQL8.0,默认字符集,是,utf8,的超集。专门用于兼容,4,个字节的字符,包括,Emoji,表情、不常用的汉字,、,新增的,Unicode,字符,等,。,(,3,),latin1,:,MySQL5.x,默认字符集,占,1,个字节,主要用于西文字符及基本符号的编码,使用该字符集对中文编码会出现乱码。,(,4,),gb2312,和,gbk,:,gb2312,是简体中文集,而,gbk,是对,gb2312,的扩展,,,,是中国国家编码。,gbk,的文字编码采用双字节表示,即不论中文和英文字符都使用双字节,为了区分中英文,,gbk,在编码时将中文每个字节的最高位设为,1,。,查看字符集和校对规则,【例,1.5,】查看,MySQL,支持的字符集。,mysql SHOW CHARACTER SET;,查看字符集和校对规则,【例,1.6,】查看,uft8mb4,相关字符集的校对规则。,mysql SHOW COLLATION LIKE utf8mb4_0900%;,查看字符集和校对规则,【例,1.7,】查看“,SQL,语言,”,在指定字符集下的转换结果,其中“,”为,emoji,字符。,SELECT CONVERT(SQL,语言,USING utf8mb4),CONVERT(SQL,语言,USING utf8),CONVERT(SQL,语言,USING gbk),CONVERT(SQL,语言,USING latin1);,设置,MySQL,字符集,MySQL,支持服务器(,Server,)、数据库(,Database,)、数据表(,Table,)、字段(,Field,)和连接层(,Connection,)五个层级的字符集设置。,数据库进行存取数据时,会根据各层级字符集寻找对应的编码,进行转换,若转换失败则显示为乱码。,系统变量名,说明,character_set_server,默认的内部操作字符集,标识服务器的字符集。服务器启动时通过该变量设置字符集,当未设置值时,系统默认为,utf8mb4,。该变量为,create database,命令提供默认值,character_set_client,客户端来源数据使用的字符集,该变量用来决定,MySQL,如何解释客户端发到服务端的,SQL,命令,character_set_connection,连接层字符集。用来决定,MySQL,如何处理客户端发来的,SQL,命令,character_set_results,查询结果字符集。当,SQL,返回结果时,这个变量的值决定了发给客户端的字符编码,character_set_database,当前选中数据库的默认字符集,character_set_system,系统元数据,(,字段名等,),字符集。数据库、表和字段都用这个字符集,character_set_filesystem,文件系统的编码格式,默认值为,binary,,表示不对字符编码进行转换,character_set_dir,指示字符集的安装目录,设置,MySQL,字符集,【例,1.8,】使用,SHOW,语句查看字符集变量。,mysql SHOW VARIABLES LIKE char%;,设置,MySQL,字符集,【,例,1.9】,使用,SET,语句修改字符集变量。,mysql SET character_set_client=utf8mb4;,mysql SET character_set_connection=utf8mb4;,mysql SET character_set_results=utf8mb4;,项目实践,实践任务,(,1,)安装、配置和访问,MySQL,服务器。,(,2,)安装,Navicat,图形化管理工具,并使用该工具操作,MySQL,服务器。,(,3,)使用,SHOW,语句查看,MySQL,服务器的字符集、校对规则及状态信息等。,(,4,)了解,MySQL,服务器配置文件(,my.ini,)的常用参数。,实践内容,(,1,)安装、配置和访问,MySQL,服务器。,(,2,)安装,Navicat,图形化管理工具,并使用该工具操作,MySQL,服务器。,(,3,)使用,SHOW,语句查看,MySQL,服务器的字符集、校对规则及状态信息等。,(,4,)了解,MySQL,服务器配置文件(,my.ini,)的常用参数。,拓展实训,1.,打开,Windows,服务组件,将,MySQL,服务器改为自动启动。,2.,使用“,SHOW STATUS;,”命令查看,MySQL,服务器的状态信息。,3.,使用“,SHOW DATABASES;,”命令查看,MySQL,服务器下的默认数据库。,4.,打开“,my.ini,”文件,记录,port,、,datadir,、,basedir,、,default-storage-engine,、,character-set-server,等参数值,了解其各自含义。,您的关注是我们前行的动力,Keep on going never give up,PPT,模板下载:,PPT,素材下载:,PPT,图表下载:,PPT,教程:,Excel,教程:,PPT,课件下载:,PPT,论坛:,网上商城,系统数据库建模,MySQL,数据库技术与项目应用,02,引言,/,FOREWORD,一个成功的应用管理系统,是由,50%,的业务,+50%,的软件所组成,而,50%,的成功软件又是由,25%,的数据库,+25%,的程序所组成。因此,一个应用管理系统的成功与否,系统数据库设计的好坏是关键,它将直接影响到系统的功能性和可扩展性。,数据库设计,(,Database Design,)是指对于给定的应用环境,构造最优的数据模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各类用户的应用需求。数据库建模是指在数据库设计阶段,对现实世界进行分析和抽象,进而确定应用系统的数据库结构。本项目通过分析网上商城系统的需求,,以网上商城中购物和信息管理两大模块为对象,结合数据库设计理论,使用系统建模工具演绎网上商城系统的数据库设计过程。,目录,/,Contents,01,02,03,理解系统需求,建立系统数据模型,使用,PowerDesigner,建立系统模型,任务,1,理解系统需求,B2C,是电子商务的典型模式,是企业通过,Internet,开展的在线销售活动,它直接面向消费者销售产品和服务。本任务分析网上商城中购物和信息管理两大模块的具体功能,使读者对网上商城系统有初步了解。,任务场景,网上商城系统介绍,系统概述,B2C,(,Business-to-Customer,,,商家,对顾客)是,电子商务,的典型模式,,企业直接面向消费者销售产品和服务。消费者在网上选购商品和服务、发表相关评论及电子支付等。由于这种模式节省了客户和企业的时间和空间,大大提高了交易效率,是目前广泛流行的商品交易模式。,B2C,网上商城系统通常会包括购物和信息管理这两大功能模块,其中,用户购物主要面向用户,一般也称为系统前台,其功能主要有浏览商品、个人中心、添加购物车、提交订单等;而信息管理主要面向管理员,也称为系统后台,主要包括维护商品、会员及系统设置等功能。,系统面向的用户群体,管理员,会员,游客,系统功能说明,前台用户购物主要包括的功能模块,浏览商品:游客或会员都可以通过商品展示页面了解商品基本信息;可以通过商品详细页面获知商品的详细情况;可以根据商品名称、商品类别、价格等条件进行商品的查询;可对商品价格或销售量排序,了解商品的销售情况。,购买商品:会员在浏览商品的过程中,可以将商品添加到自己的购物车,会员在提交订单前,可对购物车中的商品进行修改和删除,确认购买后,系统将生成订单,会员支付订单后,可以查看自己的订单的基本信息和订单详情。,个人中心:在实际应用中,游客只能浏览商品信息,不能进行购买活动。游客可以通过注册成为系统会员。会员成功登录系统后,可以进行商品购买活动,也可以查看和维护个人信息,购物结束后可以注销账号。,系统功能说明,后台信息管理主要包括的功能模块,维护商品信息:管理员维护商品类别,根据需要添加、修改、删除商品信息。,维护会员信息:管理员维护会员信息、统计会员的购买情况,分析会员的购买力。,维护订单:管理员可以查询、撤销订单或对订单数据进行统计,生成商品销售报表。,维护管理员信息:系统管理员可以根据需要添加、修改和删除一般管理员。,其他管理功能:包括系统设置、系统数据备份和恢复等。,系统功能说明,系统用例图,任务,2,建立系统数据模型,要实现网上商城系统的数据库管理,必须在系统需求分析的基础上建立网上商城系统的数据模型。本任务在阐述关系数据库基本理论的基础上,详细描述网上商城系统实体关系模型的设计过程。,任务场景,数据模型,数据模型是对现实世界的抽象,关系型数据库的基础是,数据模型(,Date,Model,),数据模型是一组向用户提供的规则,这些规则定义了数据如何组织及允许进行何种操作。数据模型包括数据结构、数据操作和数据约束,3,个要素。,数据模型应满足三个方面要求,能比较真实的模拟现实世界,容易为人所理解,便于在计算机上实现,数据模型,数据模型,数据,结构,Data Model,定义,:模型是对现实世界的抽象,表示对象(实体)与对象之间关系的模型,在关系数据库系统中,使用数据模型描述数据库的结构和语义。,数据,操作,数据,约束,数据模型,数据模型的组成要素,数据结构,数据结构是数据模型的基础,不同的数据结构具有不同的操作和约束。描述数据库系统的静态特征,如数据库中表的结构定义、视图定义等。,数据操作,描述系统的动态特征,主要是在数据库中对每个数据对象允许执行的操作集合主要包括数据的添加、更改、删除和查询等。,数据约束,用来描述数据结构内数据间完整性规则的集合。完整性规则是数据及其关系所具有的制约和储存规则,用来限定符合数据库的语法、关系和它们间的制约与依存及数据动态的规则,以保证数据的正确性、有效性和兼容性。,数据模型的分类,数据模型,概念,模型,Data Model,逻辑,模型,物理,模型,概念模型,概念,模型,定义:,是面向用户的数据模型,它是用户容易理解的现实世界特征的数据抽象。最常用的概念模型是,实体,-,关系模型,。,实体,(Entity),实体集,(Entity Set),属性,(Atrribute),标识符,(Identifier,),逻辑模型,逻辑,模型,定义:,是用户在数据库中所看到的数据模型,它由概念数据模型转换得到。,字段,(Field),记录,(Record),关键字,(Keyword),表,(Table,),物理模型,物理,模型,定义:,是描述数据在物理存储介质上的组织结构,它与具体的数据库管理系统(,DBMS,)相关,也与操作系统和硬件相关,是物理层次上的数据模型。,实体和关系,实体,:是一个数据对象,是客观存在且相互区分的事物。,例:商品、会员、订单等,实体集,:具有相同属性实体的所有实例集合,例:数据库中存储的所有用户,在,E-R,模型中,实体表示:,会员实体,实例,1,实例,2,登录名,13809112312,17134324389,用户名,李明,刘立,性别,男,女,会员积分,200,120,实体和关系,实体通过一组属性来表示。属性是实体集中成员所拥有的特性,不同的实体其属性值不同。,在,E-R,模型中,实体属性的表示:,实体和关系,关系是指多个实体间的相互关联。,例:商品“紫竹洞箫”和商品类别“乐器”之间的联系,关系集(,Relationship Set,)是同类联系的集合,是,n,(,n2,)个实体集上的数学关系。,在,E-R,模型中,,商品实体和会员实体间的关系,表示:,添加购物车,商品,会员,实体和关系,关系属性:,关系同实体一样也具有描述性的属性,在,E-R,模型中,,“添加购物车”关系及其属性,:,添加购物车,商品,会员,购买数量,实体和关系,现实世界中,事物内部及事物之间存在一定的联系,这些联系在信息世界中反映为实体内部的联系和实体间的关系。,关系数据模型主要研究实体间的关系,它是指不同实体集之间的关系。这种关系通常有一对一、一对多和多对多,3,种。,概念模型设计,抽象,实体,标识,实体间的,关系,标识,实体,属性,确定,主关键字,1,2,3,4,标识,实体,概念模型设计,抽象,实体,确立,实体间的,关系,标识,实体,属性,确定,主关键字,1,2,3,4,标识,实体间的,关系,概念模型设计,抽象,实体,确立,实体间的,关系,标识,实体,属性,确定,主关键字,1,2,3,4,标识,实体,属性,概念模型设计,抽象,实体,确立,实体间的,关系,标识,实体,属性,确定,主关键字,1,2,3,4,确定,主关键字,网上商城系统,E-R,图,逻辑模型设计,关系数据库设计过程中,概念模型确定了系统中应有的实体和实体关系,为了创建用户所需的数据库,还需要将实体和实体关系转换成对应的关系模式,也就是建立系统逻辑模型。逻辑模型是用户在数据库中所看到的数据模型,它由概念模型转换得到。,(,1,)实体转换原则,将,E-R,模型中的每一个实体转换成一个关系,即二维表;实体的属性转换为,表,的字段,实体的标识符转换成,表,的主关键字。,(,2,)关系转换原则,由于实体间存在,1:1,、,1:n,和,n:m,3,种,关系,所以实体关系在转换成逻辑模型时,不同的关系作不同的处理。,若实体间联系为,1:1,时,,可选择实体关系中的任意一个关系模式(表),将其主关键字作为另一个关系模式的属性。,若实体间联系为,1:n,时,,则在,n,端实体类型的关系模式中加入,1,端实体类型的主关键字作为属性。,若实体间联系为,n:m,时,,则要将实体关系转换成新的关系模式,两端实体集中的主关键字作为新关系模式的属性。,逻辑模型设计,根据网上商城系统的,E-R,模型和转换原则,其中会员、商品、商品类别和订单等实体及添加购物车和订单详情的关系模式设计如下。,商品类别(类别,id,,类别编号)。,商品(商品,id,,类别,id,,商品编号,名称,价格,库存量,销售量,上架时间,是否热销)。,会员(会员,id,,用户名,密码,性别,联系电话,积分,注册时间)。,订单(订单,id,,会员,id,,订单金额,下单时间)。,购物车(购物车,id,,会员,id,,商品,id,,购买数量)。,订单详情(详情,id,,订单,id,,商品,id,,购买数量)。,关系模式的规范化,范式,定义:,范式是符合某一级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。,第一范式,(,1NF,),第二范式,(,2NF,),第三范式,(,3NF,),Boyee-Codd,范式,(,BCNF,),范式可以有效避免数据冗余,减少数据库的空间,减轻维护数据完整性等优点。但是随着范式的级别越高,其操作难度越大,性能降低。,第一范式,不符合,1NF,的会员信息表,定义:,第一范式(,1NF,)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。,会员,id,用户名,联系方式,1,李明,手机:,13689070000;,邮箱:,liming,2,刘立,手机:,13980600000,13567809000;,邮箱:,liuli,会员,id,用户名,邮箱,手机,手机,1,李明,liming,13689070000,2,刘立,liuli,13980600000,13567809000,第一范式,符合,1NF,的模型设计,会员,id,用户名,1,李明,2,刘立,会员表,联系,id,会员,id,联系方式,联系值,1,1,邮箱,liming,2,1,手机,13689070000,3,2,邮箱,liuli,4,2,手机,13980600000,5,2,手机,13567809000,联系方式表,第二范式,会员,id,用户名,商品,id,商品名称,价格,购买数量,1,李明,1,曾国藩全集,255,1,1,李明,2,平凡的世界全三集,98,1,2,刘立,2,平凡的世界全三集,98,5,2,刘立,3,SSD,固态硬盘,400,2,3,张三,2,平凡的世界全三集,98,1,不符合,2NF,的学生选课表,从上表中可以看出,会员,id,不能唯一标识一行记录,且属性值存在如下关系:,会员,id,,商品,id,用户名,商品编号,商品名称,价格,购买数量,定义,:第二范式要求数据库表中的每个实例或行必须被唯一区分。,第二范式,这时需要通过会员,id,和商品,id,作为复合主关键字,决定非主关键字的情况。因此,该购物车表不符合第二范式的要求,在实际操作中会出现如下问题。,数据冗余:如同一件商品被,n,个用户购买,则商品,id,,商品名称,价格就要重复,n-1,次;当一个会员购买,m,件商品时,其用户名就要重复,m-1,次。,更新异常:若某件商品的价格要进行折扣销售,则整个表中该商品的价格都要进行修改,否则会出现同一件商品价格不同的情况。,对上述购买关系进行拆分后形成的关系模式包含如下,3,张表。,会员:,Users,(会员,id,,用户名),商品:,Goods,(商品,id,,商品名称,价格),购物车:,Scar,(会员,id,,商品,id,,购买数量),商品,id,商品名称,价格,1,曾国藩全集,255,2,平凡的世界全三集,98,3,SSD,固态硬盘,400,会员,ID,商品,id,购买数量,1,1,1,1,2,1,2,2,5,2,3,2,3,2,1,会员,id,用户名,1,李明,2,刘立,3,张三,第三范式,从表可以看出,在此关系模式中存在如下关系。,商品,id,商品编号,商品名称,价格,类别,id,,类别名称,商品,id,作为该关系中的唯一关键字,符合第二范式的要求,但不符合第三范式,因为还存在,商品,ID,类别,ID,类别名称,的关系。,定义:,第三范式是在第二范式的基础上建立起来,即满足,3NF,必须满足,2NF,。,3NF,要求关系表中不存在非关键字列对任一候选关键字的传递函数依赖。,传递函数依赖,指的是如果存在“,A,B,C,”的决定关系,则,C,传递函数依赖于,A,。也就是说,第三范式要求关系表不包含其他表中已包含的非主关键字段信息。,商品,id,商品名称,价格,类别,id,类别名称,1,曾国藩全集,255,1,图书,2,平凡的世界全三集,98,1,图书,3,SSD,固态硬盘,400,2,电脑及配件,第三范式,即存在非,关键,字段“类别名称”对关键字“商品,id,”的传递依赖,这种情况下也会存在数据冗余、更新异常、插入异常和删除异常。,数据冗余:一个类别有多种商品,类别名称会重复n-1次。,更新异常:若要更改某类别名称,则表中所有该类别的类别名称的值都需要更改,否则就会出一件商品对应多种类别。,插入异常:若新增了一种商品类别,如果还没有指定到商品,则该类别名称无法,插入,到数据库中。,删除异常:当要删除一种商品类别时,那就应该删除它在数据库中的记录,而此时与,其,相关的商品信息也会被删除。,对上述选课关系进行拆分后可形成如下,2,个关系。,商品:,Goods,(,商品,id,,商品名称,价格,类别,id,),商品类别:,GoodsType,(,类别,id,,类别名称),商品,id,商品名称,价格,类别,id,1,曾国藩全集,255,1,2,平凡的世界全三集,98,1,3,SSD,固态硬盘,400,2,类别,id,类别名称,1,图书,2,电脑及配件,关系代数,数据模型通过对现实世界抽象来优化数据存储,其目的是为了有效使用数据。在关系数据模型中,通过关系代数建立数据操纵模型。关系代数是一种抽象的查询语言,是关系数据库中数据操纵语言(,DML,)的传统表达方式,它用关系运算来表示数据查询。,类别,运算符,说明,类别,运算符,说明,传统集合运算符,交,并,差,比较运算符,CREATE DATABASE onlinedb,;,Query OK,1 row affected(0.01 sec),查看数据库,查看数据库,SQL,语句,mysql SHOW DATABASES;,+-+,|Database,|,+-+,|information_schema,|,|mysql,|,|onlinedb,|,|performance_schema,|,|sys|,+-+,5 rows in set(0.06 sec),SHOW DATABASES;,查看数据库,查看,指定,数据库信息的,SQL,语句,mysql SHOW CREATE DATABASE onlinedb;,+-+-+,|Database|Create Database,|,+-+-+,|onlinedb|CREATE DATABASE onlinedb/*!40100 DEFAULT CHARACTER SET,utf8mb4 COLLATE utf8mb4_0900_ai_ci*/*!80016 DEFAULT ENCRYPTION=N*/|,+-+-+,1 row in set(0.00 sec),SHOW CREATE DATABASE,数据库名;,修改数据库,修改数据库的,基本语法为:,【例,3.5,】使用,SQL,语句,修改数据库,onlinedb,的字符集设置为,uft8,,排序规则设置为,utf8_bin,。,ALTER DATABASE,数据库名,DEFAULT CHARACTER SET,字符集名,|DEFAULT COLLATE,排序规则,名,;,mysql ALTER DATABASE onlinedb CHARACTER SET utf8 COLLATE utf8_bin;,Query OK,1 row affected(0.00 sec),删除数据库,删除,数据库,的基本语法,;,【例,3.6,】删除数据库服务器中名为,onlinedb,的数据库,执行结果如下。,mysql DROP DATABASE onlinedb;,Query OK,0 rows affected(0.16 sec),学习提示,:,删除数据库会删除该数据库中所有的表和所有数据,且不能恢复,因此在执行删除数据库操作时要慎重。,DROP DATABASE,数据库名;,MySQL,的存储引擎,存储引擎就是数据的存储技术。针对不同的处理要求,对数据采用不同的存储机制、索引技巧、读写锁定水平等,。,MySQL,现提供有,InnoDB,、,MyISAM,、,CSV,、,Memory,等,。,查看,MySQL,支持的存储引擎,【例,3.7,】查看,MySQL,服务器系统支持的存储引擎。,SHOW ENGINES;,MySQL,的存储引擎,【例,3.8,】查看,MySQL,服务器系统支持的默认存储引擎。,mysql SHOW VARIABLES LIKE default_storage_engine;,+-+-+,|Variable_name|Value|,+-+-+,|default_storage_engine|InnoDB|,+-+-+,1 row in set(0.00 sec),MySQL,的存储引擎,InnoDB,存储引擎,InnoDB,是,MySQL,的默认事务型引擎,也是最重要、使用最广泛的存储引擎。,InnoDB,的性能和自动崩溃恢复特性,使得它在非事务型存储的需求中也很流行,,MySQL,一般优先考虑,InnoDB,引擎。,InnoDB,具有提交、回滚和崩溃恢复能力的事物安全(,ACID,兼容)。,InnoDB,是为处理巨大数据量的最大性能设计,被用在众多需要高性能的大型数据库站点上。,InnoDB,支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有在表定义时指定主键,,InnoDB,会为每一行生成一个,6,字节的,ROWID,列,并以此作为主键。,MySQL,数据库的组成,MySQL,数据库文件,MySQL,中每一个数据库,在,data,目录下都会有一个与数据库同名的文件夹,用于存储该数据库的表文件。,MySQL,数据库文件的组成取决于该数据库使用的存储引擎,。,InnoDB,存储引擎采用表空间来管理数据,其主要文件如,下表。,文件名,说明,Ibdata*,MySQL,中共享表空间文件,存储,InnoDB,系统信息和用户数据表数据和索引,为所有表共用。,如,ibdata,1,、,ibdata,2,等,*.ibd,ibd,文件表示单表表空间文件,每个表使用一个表空间文件,存储用户数据表数据和索引。不能直接读取,Ibtmp*,MySQL,临时独立的表空间文件,。,如,ibtmp,1,、,ibtmp,2,等,ib_logfile*,MySQL,的日志文件,如,ib_logfile0,、,ib_logfile1,等,*.err,MySQL,的错误日志文件,记录,MySQL,服务器运行或启停时发生的错误信息。可用记事本打开,*_bin.00000n,二进制日志文件,,n,是,1,开始的自然数。用于记录数据库中对象和数据的添加和更改操作,undo_00*,MySQL,中的,undo,日志文件,主要记录事务异常时的数据,以实现数据回滚操作,如,undo_001,、,undo_002,等,*.pid,用来记录当前,mysqld,进程的,pid,值,即,Process ID,*.pem,MySQL,中的证书文件,用于,SSL,认证。包括,MySQL,服务器的公钥、私钥及客户端和服务器端的证书和密钥等。如,private_key.pem,、,public_key.pem,等,系统数据库,MySQL,的数据库包括系统数据库和用户数据库,用户数据库是用户创建的数据库;,系统数据库是由,MySQL,安装程序自动创建的数据库,用于存放和管理用户权限和其他数据库的信息,包括数据库名、数据库中的对象及访问权限等信息。,MySQL,中共有,4,个可见的系统数据库,数据库名,说明,mysql,包含用于存储,MySQL,服务的系统信息表,包括授权系统表、系统对象信息表、日志系统表、服务器端辅助系统表等。此数据库中的表默认情况下多为,MYASIM,引擎。,information_schema,用于保存,MySQL,服务器所维护的所有其他数据库的信息,包括数据库名、数据库的表、表中列的数据类型与访问权限等。此数据库中的表均为视图,因此在用户或安装目录下无对应用数据文件。,performance_schema,主要用于收集数据库服务器的性能参数。此数据库中所有表的存储引擎为,performance_schema,,用户不能创建存储引擎为,performan
展开阅读全文