如果将数据库比作一个存储东西的储物柜,表就像是储物柜上的各个抽屉,每个抽屉分门别类地存放了各种数据,在设计和规划数据库时,表的定义和规划往往相当重要,良好的表设计决定了程序人员编写程序的便利性与数据库的整体性能。现在讲理解Oracle中表的结构和设计的指南。

1、表和实体

曾经介绍过实体的概念。实体是对现实世界的抽象,在设计一个数据库时,首先需要考虑数据库需要涉及的实体。比如一个仓库数据库。如果进行现实世界的实体划分,可以具有如下实体:

  • 仓库,存储仓库名称、位置。
  • 仓库管理员,存储管理仓库的人员信息,比如工号、姓名、年龄等。
  • 仓库类别,存储仓库的类型,比如是成品仓、半成品仓或原材料仓。
  • 货位,存储仓库中物品的货位信息,比如货位位置、结构等。

在设计与规划表结构时,应该实现从现实世界的角度来分辨客观事物,将其划分为实体,然后规划出各个实体之间的关系,也就是说一般先绘制中实体关系(E-R)图,这个过程称为“数据库建模”。有了实体关系图后,数据库管理人员就可以进行表的创建,以仓库管理员中的仓管员领料为例,回执出了如图1.1的实体。

在图中矩形表示实体,椭圆形表示实体的属性,菱形表示实体与实体之间的关系。关系型数据库管理系统将实体转换为二维结构的二维表,表由表行和表列组成。表列带哦表实体中的属性,而表行则用来存储实体属性的具体的数值,一个数据库表的结构通常如表1.1所示。

可以看到,实体向表的转换过程就是对二维表的转换过程,整个表由表行和表列组成,表列存储了实体的属性,多个表列组成了表的实体存储结构,一般提及表的结构时,实际上就是之的表列的组成。表行根据表列的定义具体的存储数据,形成一个具体的表存储结构。

在将实体转化为表时,一般建议通过3个步骤进行:

(1)将实体中的属性定义成表列,根据属性的不同性质为表的列指定不同的数据库类型。比如姓名一般存储字符类型的数据,年龄一般存储的是数据类型的数据。

(2)根据E-R关系图中的实体属性和关系,为表添加约束。比如姓名是唯一的,name可以添加主键约束;如果必须要指定性别,可以添加非空约束;表与表之间的关系可以通过外键约束来进行指定。

(3)在定义了表和表列之后,根据表列添加表行,实现一个具有二维结构的数据表。

在设计表和表列时,必须要符合在之前介绍的数据库范式设计,因此表的设计也是一个返回迭代的过程,需要数据中的设计人员进行多次反复迭带来实现结构最优化的数据库。

Oracle数据库表和表列讲解的更多相关文章

  1. 实例讲解Oracle数据库设置默认表空间问题

    实例讲解Oracle数据库设置默认表空间问题   实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...

  2. Oracle数据库之创建表结构

    Oracle数据库之创建表结构 主键与外键 主键:关系型数据库中的一条记录中有若干个属性,若其中的某一个属性组(可以是一个属性,也可以是多个)能唯一标识一条记录,那么该属性组就是主键. 外键:关系型数 ...

  3. Oracle数据库对象(表空间/同义词/序列/视图/索引)

    数据库对象 Oracle数据库对象: 数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROP 执行删除操作. 种类: (1)表空间:所有的数据对 ...

  4. PowerDesigner生成Oracle数据库时,表名会带引号问题

    使用PowerDesigner生成数据库建表SQL脚本时,尤其是Oracle数据库时,表名一般会带引号.其实加引号是PL/SQL的规范,数据库会严格按照""中的名称建表,如果没有& ...

  5. Oracle数据库之创建表空间与用户

    Oracle数据库之创建表空间与用户 一.创建表空间 基本语法表述: CREATE TABLESPACE tablespace_name [DATAFILE datafile_spec1 [,data ...

  6. oracle数据库误删的表以及表中记录的恢复

    oracle数据库误删的表以及表中记录的恢复 一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: --1.从flash bac ...

  7. Oracle 数据库中查看表空间的2种方法

    在Oracle数据库中查看表空间使用状况是我们在实际应用中经常涉及到的,以下的内容就就是对Oracle 数据库中查看表空间使用状况时所要用到的SQL的描述,希望你能从中获得自己想要的东西. Oracl ...

  8. Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...

  9. oracle 数据库下所有表结构、数据量及缺失值统计

    表结构 SELECT t1.TABLE_NAME, t1.COLUMN_NAME, t1.DATA_TYPE || '(' || t1.DATA_LENGTH || ')', t2.COMMENTS ...

  10. C# 代码往oracle数据库添加datetime格式列

    C# 代码往oracle数据库添加datetime格式列时,不需要在insert语句中为datetime类型使用to_date函数

随机推荐

  1. springboot连接redis错误 io.lettuce.core.RedisCommandTimeoutException:

    springboot连接redis报错 超时连接不上  可以从以下方面排查 1查看自己的配置文件信息,把超时时间不要设置0毫秒 设置5000毫秒 2redis服务长时间不连接就会休眠,也会连接不上 重 ...

  2. 无刷新上传图片,ajax 和 iframe

    iframe 上传 upload.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...

  3. ECMAScript进化史(1):​话说Web脚本语言王者JavaScript的加冕历史

    互联网起火-Web时代的来临 在行文之前,反手就安利一下<浏览器史话中chrome霸主地位的奠定与国产浏览器的割据混战>. 浏览器始祖NCSA Mosaic在1993年1月发布(于1992 ...

  4. 有关于python内置函数exec和eval一些见解笔记

    eval是将函数内的字符串以计算式的方式进行计算并给与外部一个值. 例: a=eval('1+1') print(a) >>>>2 但是如果出现在函数内部字符串中进行赋值会抛出 ...

  5. 修改js文件,引发的404问题

    记录一个bug,本地测不出来,客户后台却404,web测试可参考.(不知道是不是通用的) 先介绍下背景 我们是web产品,存在发布机.管理机.js文件,页面会引用到这些js文件.出于安全考虑,规定js ...

  6. CSS 权重图

    关系图 图片出处我找不到了. 结论 权重从高到低排序 1. !important 2. style 3. #id 4. .class .child-class 5. .class1.class2 6. ...

  7. Vue2.0 【第一季】第7节 v-bind指令

    目录 Vue2.0 [第一季] 第7节 v-bind指令 第7节 v-bind指令 v-bind缩写 绑定CSS样式 Vue2.0 [第一季] 第7节 v-bind指令 第7节 v-bind指令 v- ...

  8. Java POI 实现Excel相同数据同一颜色,不同数据颜色交替显示

    目录 1.效果图 2.具体代码实现 excel 读取工具类 excel写入和测试类 1.效果图 2.具体代码实现 excel 读取工具类 package utils; import java.io.F ...

  9. Nginx双机主备(Keepalived实现)

    前言 首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,起初是专为LVS负载均衡软件设计的,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的 ...

  10. 【短道速滑一】OpenCV中cvResize函数使用双线性插值缩小图像到长宽大小一半时速度飞快(比最近邻还快)之异象解析和自我实现。

    今天,一个朋友想使用我的SSE优化Demo里的双线性插值算法,他已经在项目里使用了OpenCV,因此,我就建议他直接使用OpenCV,朋友的程序非常注意效率和实时性(因为是处理视频),因此希望我能测试 ...