学号姓名性别年龄班级省份19201张琳女211班江西19202赵敏女201班山东29204刘林男222班四川
(1)关系(Relation)
一个关系对应通常说的二维表,如表41所示。
(2)元组(Tuple)
表中的一行即为一个元组,例如,表41中学生(19201,张琳,女,21,1班,江西)就是关系(表)中的一个元组,所有学生的值构成了关系的元组的集合,在关系中,两个元组的次序无关,但不能允许有相同的两个元组。
(3)属性(Attribute)
表中的一列即为一个属性,用来描述事物特征,如表41中学生的姓名、年龄和性别等。
(4)主键(PrimaryKey)
如果关系的某一个属性或属性组的值可以唯一地标识元组,则这个属性或属性组称为该关系的键。如果这样的键有不止一个,那么这些键都叫候选键,为什么呢?因为从这些候选键中挑一个出来作标识,它就叫主键。例如,在课程表(U课程号U,课程名,学分)中“课程号”这个属性就是主键;在选课关系表(U学号,课程号U,成绩)中“学号+课程号”这个属性组就是主键,它们都能唯一地标识元组。还有一个重要的概念,如果一个属性(或属性组),它不是键,但它是别的表的键,那么它就是外键。
(5)域(Domain)
属性的取值范围,例如,表41中姓名的取值范围是合法姓名的集合,性别的域是{男},{女}。
总结一下,在关系模型中,对关系的描述,一般表示为:关系名(属性1,属性2,…,属性n),关系对应表,属性对应列,元组对应行。
2.关系模型的数据操作
关系数据模型的数据操纵主要包括查询、插入、删除和更新数据,而且这些数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合。在关系数据库中专门有一种数据操作的语言,这就是SQL语言,其全称是结构化查询语言(StructuredQueryLanguage)。根据ANSI(美国国家标准学会)的定义,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有Oracle、Sybase、MicrosoftSQLServer和Access等。虽然绝大多数的数据库系统使用SQL,但是这些数据库系统会自立另外的专有扩展功能用于它们的系统(如TSQL)。但是,标准的SQL命令,如SELECT、INSERT、UPDATE、DELETE、CREATE和DROP常常被用于完成绝大多数数据库的操作。因此下面主要介绍这些标准的SQL语句。
(1)数据检索(SELECT)
在SQL中SELECT语句通常用于检索数据库,或者检索满足设定条件的数据,以下是简单的SELECT语句的格式:
SELECT列名1\(,列名2,…\?FROM表名\(WHERE条件\?;
代表可选项
其中列的名字跟着SELECT关键字,它决定了哪一列将被作为结果返回。可以任意指定多个列,或者可以使用“”来选择所有的列。表的名字是紧跟着FROM关键字的,它指出了哪个表格将作为最后结果被查询。而WHERE子句(可选)指出哪个数据或行将被返回或显示,它是根据关键字WHERE后面描述的条件而来的。在WHERE子句中可以有以下的条件选择:=等于、大于、小于、=大于等于、=小于等于和不等于。
例如,要查看所有女生的学号和姓名,可以用下面的语句:
SELECT学号,姓名
FROM学生
WHERE性别=女;
其中,学生是个表的名字,学号、姓名和性别是学生表中的列名。
(2)数据插入(INSERT)
INSERT语句用于往表格中插入或增加一行数据,它的格式为:
INSERTINTO表名[(第一列,…,最后一列)]VALUES(第一个值,…,最后一个值);
代表可选项
例如,要插入一个新生的记录,可用下面的语句:
INSERTINTO学生
VALUES(19207,王民,男,21,2班,河南);
(3)更新记录(UPDATE)
UPDATE语句用于更新或改变匹配指定条件的记录,它是通过构造一个WHERE语句来实现的。其语句格式如下:
UPDATE表名SET列名=新值\(,其他列名=新值2…\?
WHERE列名OPERATOR值\(AND|OR其他列名OPERATOR值\?;
代表可选项
其中OPERATOR代表=等于、大于、小于、=大于等于、=小于等于和不等于。
例如,学号为19207的学生的姓名王民登记出错,现在要更改成王明,可以用下面的语句:
UPDATE学生SET姓名=王明
WHERE学号=19207;
(4)删除记录(DELETE)
DELETE语句是用来从表中删除记录或行,其语句格式为:
DELETEFROM表名WHERE列名OPERATOR值\(AND,OR列名OPERATOR值\?;
代表可选项
其中OPERATOR代表=等于、大于、小于、=大于等于、=小于等于和不等于。
例如,这个班的学生都毕业了,要删除所有的记录,可以用下面的语句:
DELETEFROM学生;
这条语句没有WHERE语句,所以它将删除所有的记录,因此如果没有使用WHERE的时候,要千万小心。
但是如果赵敏退学了,要删除她的记录,可以用下面的语句:
DELETEFROM学生
WHERE姓名=赵敏;
这条语句是从“学生”表中删除姓名为“赵敏”的行。
(5)创建表(CREATE)
这个CREATETABLE语句是用于创建一个新的表格。以下是一个简单创建表格语句的格式:
CREATETABLEtablename
(列名1数据类型,
列名2数据类型,
列名3数据类型);
例如,要创建一个老师表,可以用下面的语句:
CREATETABLE老师
(姓名varchar(25),
年龄number(3),
性别varchar(30),
院系varchar(20),
住址varchar(20));
以下是几种常见的数据类型。
char(size):固定长度的字符串型。size是圆括号中指定的参数,它可以由用户随意设置,但是不能超过255个字节。
varchar(size):变长度的字符串型。它的最大长度是由括号中的参数size设定的。
number(size):数值型。最大数字的位数由括号中的参数size设置。
date:日期数值型。
number(size,d):数值型。它的最大数字的位数由括号中的参数size设定,而括号中的参数d是设置小数点的位数。
(6)删除表(DROP)
DROPTABLE命令用于删除一个表格或表中的所有行。其语法格式为:
DROPTABLE表名;
例如,如果不需要老师表了,可以用下面的语句:
DROPTABLE老师;
为了删除整个表(包括所有的行),可以使用DROPTABLE命令后加上表名。DROPTABLE命令跟从表中删除所有记录是不一样的。删除表中的所有记录是留下表格(只是它是空的)及约束信息;而DROPTABLE是删除表的所有信息,包括所有行、表格及约束信息等。
4.4.3数据库设计
一个成功的电子商务系统中,数据库设计的好坏是一个关键。如果把企业的数据比作生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。因此,数据库设计是电子商务系统开发和建设中的核心技术。
1.概念和步骤
数据库设计(DataBaseDesign)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。数据库的设计主要包括6个阶段。
(1)需求分析阶段
准确了解与分析用户需求(包括数据与处理),是整个设计过程的基础,是最困难、最耗费时间的一步。
(2)概念结构设计阶段
是整个数据库设计的关键,通过对用户需求进行综合、归纳与抽象分析,形成一个独立于具体DBMS的概念模型。
(3)逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型。如果是关系数据模型,则就是通常所说的二维表。
(4)数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
(5)数据库实施阶段
运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果,建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
(6)数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
2.概念结构设计
由于各个机器上实现的RDBMS(RelationalDataBaseManagementSystern,关系型数据库管理系统)软件都是基于关系数据模型的,但是在具体机器上实现的模型都有许多严格的限制。而现实应用环境是复杂多变的,如果把现实世界中的事物直接转换为机器中的对象,就非常不方便。因此,人们研究把现实世界中的事物抽象为不依赖于具体机器的信息结构,又接近人们的思维,并具有丰富语义的概念模型,然后再把概念模型转换为具体机器上RDBMS支持的关系数据模型。因此概念模型是现实世界到机器世界的一个中间层次,其描述工具通常是使用ER(EntityRelationship)模型图。
构成ER模型图的基本要素是实体、属性和联系,如图413所示。
①实体(Entities)用矩形表示,矩形框内写明实体名,如学生、课程、宿舍和教师。
②属性(Attributes)用椭圆形表示,并用无向边将其与相应的实体连接起来,如学生实体中的年龄和姓名,课程实体的课程编号。