当创建表时,必须指定表名、列名及数据类型。图4.5创建表stuinfo创建完表以后可使用show tables命令来查看当前数据库中可用的表。图4.7创建表item在图4.7中创建了一个名为item的表。在字段other中,null表示允许该列为空,若没有特别指定该列为null或not null,默认情况下该列允许为空。图4.8查看表item的表结构要查看注释标识可通过show create table命令。......
2023-10-29
E-R图是用来描述现实世界的模型,通过E-R图可以更准确、更方便地了解用户的需求。E-R图与具体的数据库无关,在实际开发中,最终要用一个具体的数据库来实现ER图所描述的数据需求。本节将介绍如何将E-R图转换为关系型数据库中的表,在1.4节将介绍如何审核表的结构是否规范。
1.一个实体转换为一张表
把E-R图转换为数据库中的表时,每种实体都要转换为一张表,实体的属性就是表的字段,实体的关键字就是表的关键字。例如,可将“学员”实体转换为一个表,如图1.6所示。
图1.6 一个实体转换为一个张表
为了描述方便,上图的箭头表示转换,箭头右边列出了转换后的表,括号中为表的字段,其中带实线下划线的字段为主键。
2.一对一关系(1∶1)的转换
一对一关系有以下两种转换方式:
(1) 把关系转换为一个独立的表。关系名为表名,与该关系相连的两个实体的关键字及关系本身的属性为表的字段,其中每个实体的关键字均是该表的候选键。
(2) 与任意一端的实体所对应的表合并。可将相关的两个实体分别转换为两张表,并在任意一张表中加入另一张表的主键。
例如,若某工厂的每个仓库只配备了一名管理员,那么仓库实体与管理员实体之间便为1∶1关系。根据以上介绍的原则,可以进行如图1.7所示的转换。
图1.7 1∶1关系的转换
(www.chuimin.cn)
图1.7、图1.8、图1.9中带实线下划线的字段为主键,带虚线下划线的字段为外键。
在实际设计中究竟采用哪种方案可视具体的应用而定。如果经常要在查询仓库的同时查询此仓库管理员的信息,就可选用前一种转换(只包含两张表),以减少查询时的连接操作。反之,如果在查询管理员时要频繁查询仓库信息,则选用后一种转换(包含三张表)。总之,在模型转换出现较多的方案时,效率是最重要的取舍因素。
3.一对多关系(1∶N)的转换
一对多关系也有两种转换方式:
(1) 将1∶N关系转换为一个独立的表。关系名为表名,与该关系相连的两个实体的关键字及关系本身的属性为表的字段,该表的关键字为N端实体的关键字。
(2) 将1∶N关系与N端实体所对应的表合并。1端的关键字及关系本身的属性并入N端实体所对应的表中即可。
在图1.8中,实体“专业”和“学生”之间的关系为1∶N,使用以上的原则进行转换。
图1.8 1∶N关系的转换
4.多对多关系(M∶N)的转换
M∶N关系必须转换为一个独立的表。关系名为表名,与该关系相连的两个实体的关键字及关系本身的属性为表的字段,该表的关键字为关系相连的两个实体关键字的并集。
例如,在学校中,一名学生可以选修多门课程,一门课程也可为多名学生选修,则实体“学员”与“课程”之间的关系为多对多的关系,其转换方法如图1.9所示。
图1.9 M∶N关系的转换
有关MySQL数据库设计与实现的文章
当创建表时,必须指定表名、列名及数据类型。图4.5创建表stuinfo创建完表以后可使用show tables命令来查看当前数据库中可用的表。图4.7创建表item在图4.7中创建了一个名为item的表。在字段other中,null表示允许该列为空,若没有特别指定该列为null或not null,默认情况下该列允许为空。图4.8查看表item的表结构要查看注释标识可通过show create table命令。......
2023-10-29
由于不是所有的用户都习惯于用命令行程序,所以开发了GUI程序。下面就介绍一下SQLyog。SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。图2.19SQLyog连接数据库进入管理界面,如图2.20所示。图2.22SQLyog查询视图结果视图,如图2.23所示。图2.23SQLyog结果视图数据库选择、常用工具栏,如图2.24所示。图2.25SQLyog菜单栏SQLyog常用技巧: Ctrl+Enter代码提示。......
2023-10-29
向表中插入数据通过INSERT命令来完成,该命令的语法格式如下:“insert …values”这种格式是目前最常用的,下面是对该格式中各属性的介绍。table_name:要插入数据的表名。ON DUPLICATE KEY UPDATE:当插入的记录会引发主键冲突或者违反唯一约束时,就会对发生冲突的列进行更新操作,使用该条件的前提是要插入的表存在主键或唯一索引。图4.18使用ON DUPLICATE KEY UPDATE条件的例子2.使用“insert…set”插入数据使用“insert…set”格式的语句可根据明确指定的值插入数据。......
2023-10-29
单语句存储过程非常有用,但存储过程的真正功能在于它能够封装和执行多个语句。因为这两个应用程序都需要能够计算奖金数额,所以这个任务非常适合使用存储函数实现。本节余下部分主要介绍创建多语句存储过程时常用的语法。......
2023-10-29
这一节将重点讨论促使MySQL风行的一些关键特性。接下来,还将提供有关MySQL产品两个主要里程碑版本的重要信息。庞大的开源社区:MySQL之所以如此流行和受欢迎,很大一部分功劳要归功于开源社区的积极支持。在开源社区中不仅能了解到MySQL的最新发展动态,还能快速地解决一些问题和难题。......
2023-10-29
表示索引为唯一性索引。指索引的长度,必须是字符串类型才可以使用。如果在创建索引时没写索引名称,MySQL会自动用字段名作为索引名称。其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。......
2023-10-29
事实上,这有很多用处,但是如果需要从一些不同的MySQL服务器上聚合数据,其中有些服务器可能位于网络之外甚至归另外的公司所有,这时该怎么办?为缓解此问题,可以使用MySQL 5.0.3可用的FEDERATED存储引擎,创建远程表的本地指针。因为创建FEDERATED表的过程与其他表稍有不同,所以需要做一些补充解释。为此,在服务器B上创建一个相同的表结构,唯一的区别是该表引擎类型应当为FEDERATED,而不是MyISAM。减少连接管理的麻烦并不是FEDERATED表的唯一目的。......
2023-10-29
不属于1NF的关系称为非规范化关系,见表1.4;经过转化形成规范化的关系,记作关系模式SCD,见表1.5。表1.4非规范化关系表1.5规范化关系第一范式还可以理解为:每一个数据项都不能拆分成两个或两个以上的数据项。表1.6SC表表1.7SD表这两个表都不存在部分依赖,它们都是第二范式。表1.8S表表1.9D表可以看出,S表和D表各自描述单一的现实事物,都不存在传递依赖关系,都是第三范式。......
2023-10-29
相关推荐