Oracle数据库表和表列讲解
如果将数据库比作一个存储东西的储物柜,表就像是储物柜上的各个抽屉,每个抽屉分门别类地存放了各种数据,在设计和规划数据库时,表的定义和规划往往相当重要,良好的表设计决定了程序人员编写程序的便利性与数据库的整体性能。现在讲理解Oracle中表的结构和设计的指南。
1、表和实体
曾经介绍过实体的概念。实体是对现实世界的抽象,在设计一个数据库时,首先需要考虑数据库需要涉及的实体。比如一个仓库数据库。如果进行现实世界的实体划分,可以具有如下实体:
- 仓库,存储仓库名称、位置。
- 仓库管理员,存储管理仓库的人员信息,比如工号、姓名、年龄等。
- 仓库类别,存储仓库的类型,比如是成品仓、半成品仓或原材料仓。
- 货位,存储仓库中物品的货位信息,比如货位位置、结构等。
在设计与规划表结构时,应该实现从现实世界的角度来分辨客观事物,将其划分为实体,然后规划出各个实体之间的关系,也就是说一般先绘制中实体关系(E-R)图,这个过程称为“数据库建模”。有了实体关系图后,数据库管理人员就可以进行表的创建,以仓库管理员中的仓管员领料为例,回执出了如图1.1的实体。

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

可以看到,实体向表的转换过程就是对二维表的转换过程,整个表由表行和表列组成,表列存储了实体的属性,多个表列组成了表的实体存储结构,一般提及表的结构时,实际上就是之的表列的组成。表行根据表列的定义具体的存储数据,形成一个具体的表存储结构。
在将实体转化为表时,一般建议通过3个步骤进行:
(1)将实体中的属性定义成表列,根据属性的不同性质为表的列指定不同的数据库类型。比如姓名一般存储字符类型的数据,年龄一般存储的是数据类型的数据。
(2)根据E-R关系图中的实体属性和关系,为表添加约束。比如姓名是唯一的,name可以添加主键约束;如果必须要指定性别,可以添加非空约束;表与表之间的关系可以通过外键约束来进行指定。
(3)在定义了表和表列之后,根据表列添加表行,实现一个具有二维结构的数据表。
在设计表和表列时,必须要符合在之前介绍的数据库范式设计,因此表的设计也是一个返回迭代的过程,需要数据中的设计人员进行多次反复迭带来实现结构最优化的数据库。
Oracle数据库表和表列讲解的更多相关文章
- 实例讲解Oracle数据库设置默认表空间问题
实例讲解Oracle数据库设置默认表空间问题 实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...
- Oracle数据库之创建表结构
Oracle数据库之创建表结构 主键与外键 主键:关系型数据库中的一条记录中有若干个属性,若其中的某一个属性组(可以是一个属性,也可以是多个)能唯一标识一条记录,那么该属性组就是主键. 外键:关系型数 ...
- Oracle数据库对象(表空间/同义词/序列/视图/索引)
数据库对象 Oracle数据库对象: 数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROP 执行删除操作. 种类: (1)表空间:所有的数据对 ...
- PowerDesigner生成Oracle数据库时,表名会带引号问题
使用PowerDesigner生成数据库建表SQL脚本时,尤其是Oracle数据库时,表名一般会带引号.其实加引号是PL/SQL的规范,数据库会严格按照""中的名称建表,如果没有& ...
- Oracle数据库之创建表空间与用户
Oracle数据库之创建表空间与用户 一.创建表空间 基本语法表述: CREATE TABLESPACE tablespace_name [DATAFILE datafile_spec1 [,data ...
- oracle数据库误删的表以及表中记录的恢复
oracle数据库误删的表以及表中记录的恢复 一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: --1.从flash bac ...
- Oracle 数据库中查看表空间的2种方法
在Oracle数据库中查看表空间使用状况是我们在实际应用中经常涉及到的,以下的内容就就是对Oracle 数据库中查看表空间使用状况时所要用到的SQL的描述,希望你能从中获得自己想要的东西. Oracl ...
- Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...
- oracle 数据库下所有表结构、数据量及缺失值统计
表结构 SELECT t1.TABLE_NAME, t1.COLUMN_NAME, t1.DATA_TYPE || '(' || t1.DATA_LENGTH || ')', t2.COMMENTS ...
- C# 代码往oracle数据库添加datetime格式列
C# 代码往oracle数据库添加datetime格式列时,不需要在insert语句中为datetime类型使用to_date函数
随机推荐
- 微信SEO怎么做-最新微信SEO干货
星辉信息科技进行微信SEO已经很多年了,结合多年的微信SEO经验通过浅谈微信SEO.微信SEO的3大优势.微信SEO的6个排名技巧.企业和个人微信SEO的4大优化战略来讲,可以完美解决B端C端微信获客 ...
- LoadRunner 11破解方法:
LoadRunner 11破解方法: 请严格安装顺序操作! a.用LR8.0中的mlr5lprg.dll.lm70.dll覆盖LR11安装目录下“bin”文件夹中的对应文件: b.运行deleteli ...
- h5 移动端适配方案思考
基础概念 CSS像素(CSS pixels) 这个是浏览器使用的抽象单位,用来精确度量网页上的内容.平时经常写的width:100px;height:100px;都是与设备无关的. 设备独立像素(de ...
- python 异步MySQL存库
对于异步框架而言,这些延迟是无法接受的.因此, Twisted 提供了 twisted.enterprise.adbapi, 遵循DB-API 2.0协议的一个异步封装. adbapi 在单独的线程里 ...
- C++ 随机函数/伪随机函数
使用rand()函数时,每次随机数都是固定(伪随机数),在前面加上以下函数,每次生成的随机数为随机, srand((int)time(NULL)); rand();
- touch事件中的touches、targetTouches和changedTouches
touches: 当前屏幕上所有触摸点的列表; targetTouches: 当前对象上所有触摸点的列表; changedTouches: 涉及当前(引发)事件的触摸点的列表; 通过一个例子来区分一下 ...
- codevs1743
http://codevs.cn/problem/1743/ splay区间翻转. 数字在原序列中的位置保存在splay的data[]中.splay中点的编号为原序列的数字大小. 每次pushdown ...
- Flask 偏函数、g对象、flask-session、数据库连接池、信号、自制命令、flask-admin
目录 一.偏函数 二.g对象 g对象和session的区别 三.flask-session 四.数据库连接池 pymsql链接数据库 数据库连接池版 utils/sql.py 五.信号 六.命令fla ...
- asp.net c# 通过消息队列处理高并发请求(以抢小米手机为例)
网站面对高并发的情况下,除了增加硬件, 优化程序提高以响应速度外,还可以通过并行改串行的思路来解决.这种思想常见的实践方式就是数据库锁和消息队列的方式.这种方式的缺点是需要排队,响应速度慢,优点是节省 ...
- img标签src="[object Moudle]"问题解决办法
在写组件的时候,按照如下方式来写,加载不出图片: 打开开发者工具,发现img标签对应位置显示如下: 我之前已经下载过 url-loader 解决方法如下: 加入 esModules:false 即可