一、ER设计介绍
数据库ER设计是数据库设计中最为重要的一个部分,ER是Entity-Relationship(实体-关系)的缩写。通俗的说,ER模型是一种描述现实世界的抽象模型,用来表示现实世界的实体以及它们之间的关系。
在数据库中,ER图描述了实体的属性和它们之间的联系,ER图是通过实体、关系和属性三个元素组成的。
下面是一个简单的示例,同时也是后续示例代码的基础。
/*创建学生表*/ CREATE TABLE student ( id INT NOT NULL , name VARCHAR(20) NOT NULL , age INT NOT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*创建课程表*/ CREATE TABLE course ( id INT NOT NULL , name VARCHAR(20) NOT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*创建选课表*/ CREATE TABLE course_selected ( id INT NOT NULL , student_id INT NOT NULL , course_id INT NOT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
二、实体和属性设计
在ER模型中,实体指的是现实世界中一个可以被独立标识的对象,例如在上述示例中的“学生”和“课程”就是两个实体。
属性则是描述实体特征的数据类型,例如学生实体就有姓名和年龄这两个属性。
下面是示例代码中学生实体的设计:
CREATE TABLE student ( id INT NOT NULL , name VARCHAR(20) NOT NULL , age INT NOT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
三、关系的处理
在ER模型中,关系是指实体之间相互联系的情况,例如示例中的“学生”和“课程”就存在选课这个关系。
在关系处理中,我们需要考虑两个方面:关系类型和关系的基数。
关系类型指的是实体之间的联系种类,常见的有一对一、一对多、多对一和多对多四种。
关系的基数则是指实体之间的关系数量,常见的有1、n、0..1、0n、1..n等。
下面是示例代码中选课关系的设计:
/*创建选课表*/ CREATE TABLE course_selected ( id INT NOT NULL , student_id INT NOT NULL , course_id INT NOT NULL , PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
四、ER图的绘制和使用
ER图是用来展示实体和关系的视觉化图表,使用ER图可以更加清晰的呈现数据库的结构。在实际项目中,我们通常使用UML工具来绘制ER图。
使用ER图可以进行数据库的逻辑设计,并且通过ER图可以更加清晰明了的表达关系的类型和基数。
下面是一张简单的ER图示例:
五、总结
数据库ER设计是数据库设计中最为重要的一个部分,通过实体、属性和关系的设计可以创建出一个合理、高效的数据库结构。在实际项目中,我们可以使用UML工具来绘制ER图,并且通过ER图可以更直观的展示数据库结构。