学习
实践
活动
专区
工具
TVP
写文章

Oracle第二章-表的概念及设计

第一节

表的概念表设计的原则

2.1 表

数据库中以表为组织单位存储数据。表用来存储一些事物的信息,首先需要有一个表名,以及存储的信息。

2.2 设计原则

好的数据库表设计会影响数据库操作效率。特别是数据特别多的时候,如果表结构不好的话,操作的时候条件会变得非常复杂。所以为了以后操作简单,表的关系(内部和外部)要尽量合理的设计。

步骤:

1)找出表要描述的东西

2)列出你想通过这个表得到的相关信息的列表

3)通过上面的信息列表,将信息划分成一块块的小部分,通过这个小块来建表中的字段;

所以为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:

第一范式(确保每列保持原子性),属性不可再分

第二范式(确保表中的每列都和主键相关),实体唯一

第三范式(确保每列都和主键列值直接相关,而不是间接相关),字段没有冗余

基本表及其字段之间的关系,应尽量满足第三范式。但是,满足第三范式的数据库设计,往往不是最好的设计。为了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的目的。

更合理的表设计会给每条记录加上一个唯一的识别,就是加上主键。

1)将一个表字段设为主键要求在表创建的时候就进行设置。

2) 一个表里被设为主键的字段的值必须是唯一的,也就是说如果一个字段被设为主键,这个表所有的数据列表里这个字段的值不可能有重复的。

3) 被设为主键的字段不能插入空值。

4) 被设为主键的字段的值是不能更改的。

5) 如果字段被设为是自增长的,主键只能设置一个且它必须是主键。如果表中没有自增长的字段,则可以设多个字段为主键。

6) 主键最好是一个和表里数据无关的值。比如说另建一个字段:id;而不要设在:name 等这些字段上。

两个表关联.两个表之间数据的关系有三种:

1)一对一;两个表里数据唯一对应;

2)一对多;表A在表B里对应多条数据,但表B里的一条数据绝对只对就A中的一条数据;

3)多对多;A里的一条数据对应B里的多条数据,B里一条数据也对应A中的多条数据。

一对一的表设计用的不多.可能用到的情况有:

a)对一个表中大多数时候不查的字段,放到另一个表中对应起来.这样可以提高大多数时候查询的效率;

b)若表中记录还有些字段的值未知,可以将这些字段分出来放.这样可以让主表中不存在NULL;

c)不想轻易就查出来的数据,比如一个人的工资详情,等.可以在主另一表中放着;

d)大文本,通过一个外键关联,这样可以提高查询效率;

一对多的情况可以如下: 有一个人员信息表info,里面包括一个外键:email;这个字段里存的是邮箱表emailBox里的主键:id;因为一个人可以对应多个邮箱,但一个邮箱只能属于一个人(他自己要共用木有办法)

多对多对优化表设计的用处最大,效果最显著;一个多对多的关系是由一个连接表有两个一对多的表关系组成的;

另外,同一个表里的各字段之间不要有复杂的依赖关系.各字段只能和主键有依赖关系.如果非主键和非主键间有依赖关系,就要将它们从主表分离出去,放在另一个表中,并通过外键进行关联

2.3 约束

对于存储的每一个信息,都应该使用相应的数据进行表示,并且这些数据应该是合法的(包括实际和业务逻辑),在数据库中我们通过约束来对每个字段中的数据的合法性进行规范。

•主键约束(PRIMARY KEY)•唯一性约束(UNIQUE)•非空约束(NOT NULL)•外键约束(FOREIGN KEY)•检查约束(CHECK)主键

主键是定位表中单个行的方式,可唯一确定表中的某一行,关系型数据库要求所有表都应该有主键,不过Oracle没有遵循此范例要求,Oracle中的表可以没有主键(这种情况不多见)。关于主键有几个需要注意的点:

1.键列必须必须具有唯一性,且不能为空,其实主键约束 相当于 UNIQUE+NOT NULL

2.一个表只允许有一个主键

3.主键所在列必须具有索引(主键的唯一约束通过索引来实现),如果不存在,将会在索引添加的时候自动创建

唯一键

唯一性约束可作用在单列或多列上,对于这些列或列组合,唯一性约束保证每一行的唯一性。 允许值,约束的列可存在多个。

非空约束

非空约束作用的列也叫强制列。顾名思义,强制键列中必须有值,当然建表时候若使用default关键字指定了默认值,则可不输入。

外键约束

外键约束定义在具有父子关系的子表中,外键约束使得子表中的列对应父表的主键列,用以维护数据库的完整性。不过出于性能和后期的业务系统的扩展的考虑,很多时候,外键约束仅出现在数据库的设计中,实际会放在业务程序中进行处理。外键约束注意以下几点:

1.外键约束的子表中的列和对应父表中的列数据类型必须相同,列名可以不同

2.对应的父表列必须存在主键约束(PRIMARY KEY)或唯一约束(UNIQUE)

3.外键约束列允许NULL值,对应的行就成了孤行了

检查约束

检查约束可用来实施一些简单的规则,比如列值必须在某个范围内。

2.4 客户端的安装使用

操作详见视频内容,这里不赘述。

2.5 准备表和数据

操作简单,所有准备都在视频中,若是没有请联系老师获取资料

2.6 SQL语言介绍

为数据库的语言,在1974年由Boyce【博伊斯】和Chamberlin【钱伯林】提出的一种介于关系代数与关系演算之间的结构化查询语言,是一个通用的、功能极强的关系型数据库语言。它包含三部分:

语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create、drop、alter等。

语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。

语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,主要的语句关键字包括grant、revoke等。

Oracle命令不区分大小写,但是数据|内容 是区分大小写的。

表和表的设计原则

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190125A11YD300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券