首页数据库数据库范式经典例题 数据库的范式

数据库范式经典例题 数据库的范式

编程之家2026-05-201024次浏览

各位老铁们,大家好,今天由我来为大家分享数据库范式经典例题,以及数据库的范式的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

数据库范式经典例题 数据库的范式

数据库范式的范式应用实例

下面以一个学校的学生系统为例分析说明,这几个范式的应用。数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。

首先我们确定一下要设计的内容包括那些。学号、学生姓名、年龄、性别、课程名称、课程学分、系别、学科成绩,系办地址、系办电话等信息。为了简单我们暂时只考虑这些字段信息。我们对于这些信息,所关心的问题有如下几个方面。

学生有那些基本信息

学生选了那些课,成绩是什么?

每个课的学分是多少

学生属于那个系,系的基本信息是什么。首先我们考虑,把所有这些信息放到一个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话)下面存在如下的依赖关系。

数据库范式经典例题 数据库的范式

(学号,课程名称)→(姓名,年龄,成绩,学分)

问题分析

因此不满足第二范式的要求,会产生如下问题

数据冗余:同一门课程由n个学生选修,学分就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。

更新异常:

1)若调整了某门课程的学分,数据表中所有行的学分值都要更新,否则会出现同一门课程学分不同的情况。

数据库范式经典例题 数据库的范式

2)假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有学号关键字,课程名称和学分也无法记录入数据库。

删除异常:假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。

解决方案

把选课关系表SelectCourse改为如下三个表:

学生:Student(学号,姓名,年龄,性别,系别,系办地址、系办电话);

课程:Course(课程名称,学分);

选课关系:SelectCourse(学号,课程名称,成绩)。接着看上面的学生表Student(学号,姓名,年龄,性别,系别,系办地址、系办电话),关键字为单一关键字学号,因为存在如下决定关系:

(学号)→(姓名,年龄,性别,系别,系办地址、系办电话

但是还存在下面的决定关系

(学号)→(系别)→(系办地点,系办电话)

即存在非关键字段系办地点、系办电话对关键字段学号的传递函数依赖。

它也会存在数据冗余、更新异常、插入异常和删除异常的情况。(数据的更新,删除异常这里就不分析了,可以参照2.1.1进行分析)

根据第三范式把学生关系表分为如下两个表就可以满足第三范式了:

学生:(学号,姓名,年龄,性别,系别);

系别:(系别,系办地址、系办电话)。

上面的数据库表就是符合I,Ⅱ,Ⅲ范式的,消除了数据冗余、更新异常、插入异常和删除异常。

数据库范式习题

下面是关于oracle的题目:===========================1.解释冷备份和热备份的不同点以及各自的优点

解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2.你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?

解答:重建控制文件,用带backup control file子句的recover命令恢复数据库。 3.如何转换init.ora到spfile?解答:使用create spfile from pfile命令. 4.解释data block, extent和 segment的区别(这里建议用英文术语)

解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent.一个数据库对象拥有的所有extents被称为该对象的segment. 5.给出两个检查表结构的方法

解答:1.DESCRIBE命令

2.DBMS_METADATA.GET_DDL包 6.怎样查看数据库引擎的报错

解答:alert log. 7.比较truncate和delete命令

解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment.而Delete是DML操作,需要rollback segment且花费较长时间. 8.使用索引的理由

解答:快速访问表中的data block 9.给出在STAR SCHEMA中的两种表及它们分别含有的数据

解答:Fact tables和dimension tables. fact table包含大量的主要的信息而 dimension tables存放对fact table某些属性描述的信息 10. FACT Table上需要建立何种索引?

解答:位图索引(bitmap index) 11.给出两种相关约束?

解答:主键和外键 12.如何在不影响子表的前提下,重建一个母表

解答:子表的外键强制实效,重建母表,激活外键 13.解释归档和非归档模式之间的不同和它们各自的优缺点

解答:归档模式是指你可以备份所有的数据库 transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高. 14.如何建立一个备份控制文件?

解答:Alter database backup control file to trace. 15.给出数据库正常启动所经历的几种状态?

解答:STARTUP NOMOUNT数据库实例启动

STARTUP MOUNT数据库装载

STARTUP OPEN数据库打开 16.哪个column可以用来区别V$视图和GV$视图?

解答: INST_ID指明集群环境中具体的某个instance。 17.如何生成explain plan?

解答:运行utlxplan.sql.建立plan表

针对特定SQL语句,使用 explain plan set statement_id='tst1' into plan_table

运行utlxplp.sql或 utlxpls.sql察看explain plan 18.如何增加buffer cache的命中率?

解答:在数据库较繁忙时,适用buffer cache advisory工具,查询v$db_cache_advice.如果有必要更改,可以使用 alter system set db_cache_size命令 19. ORA-01555的应对方法?

解答:具体的出错信息是snapshot too old within rollback seg,通常可以通过增大rollback seg来解决问题。当然也需要察看一下具体造成错误的SQL文本 20.解释$ORACLE_HOME和$ORACLE_BASE的区别?

解答:ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。

21.如何判断数据库的时区?

解答:SELECT DBTIMEZONE FROM DUAL;22.解释GLOBAL_NAMES设为TRUE的用途

解答:GLOBAL_NAMES指明联接数据库的方式。如果这个参数设置为TRUE,在建立数据库链接时就必须用相同的名字连结远程数据库23。如何加密PL/SQL程序?

解答:WRAP24.解释FUNCTION,PROCEDURE和PACKAGE区别

解答:function和procedure是PL/SQL代码的集合,通常为了完成一个任务。procedure不需要返回任何值而function将返回一个值在另一方面,Package是为了完成一个商业功能的一组function和proceudre的集合25.解释TABLE Function的用途

解答:TABLE Function是通过PL/SQL逻辑返回一组纪录,用于普通的表/视图。他们也用于pipeline和ETL过程。26.举出3种可以收集three advisory statistics

解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics27. Audit trace存放在哪个oracle目录结构中?

解答:unix$ORACLE_HOME/rdbms/audit Windows the event viewer28.解释materialized views的作用

解答:Materialized views用于减少那些汇总,集合和分组的信息的集合数量。它们通常适合于数据仓库和DSS系统。29.当用户进程出错,哪个后台进程负责清理它

解答: PMON30.哪个后台进程刷新materialized views?

解答:The Job Queue Processes.31.如何判断哪个session正在连结以及它们等待的资源?

解答:V$SESSION/ V$SESSION_WAIT32.描述什么是 redo logs

解答:Redo Logs是用于存放数据库数据改动状况的物理和逻辑结构。可以用来修复数据库.

33.如何进行强制LOG SWITCH?

解答:ALTER SYSTEM SWITCH LOGFILE;34.举出两个判断DDL改动的方法?

解答:你可以使用 Logminer或 Streams35. Coalescing做了什么?

解答:Coalescing针对于字典管理的tablespace进行碎片整理,将临近的小extents合并成单个的大extent.36. TEMPORARY tablespace和PERMANENT tablespace的区别是?

解答:A temporary tablespace用于临时对象例如排序结构而 permanent tablespaces用来存储那些'真实'的对象(例如表,回滚段等)37.创建数据库时自动建立的tablespace名称?

解答:SYSTEM tablespace.38.创建用户时,需要赋予新用户什么权限才能使它联上数据库。

解答:CONNECT39.如何在tablespace里增加数据文件?

解答:ALTER TABLESPACE<tablespace_name> ADD DATAFILE<datafile_name> SIZE<size>40.如何变动数据文件的大小?

解答:ALTER DATABASE DATAFILE<datafile_name> RESIZE<new_size>;41.哪个VIEW用来检查数据文件的大小?

解答: DBA_DATA_FILES42.哪个VIEW用来判断tablespace的剩余空间

解答:DBA_FREE_SPACE43.如何判断谁往表里增加了一条纪录?

解答:auditing 44.如何重构索引?

解答: ALTER INDEX<index_name> REBUILD;45.解释什么是Partitioning(分区)以及它的优点。

解答:Partition将大表和索引分割成更小,易于管理的分区。46.你刚刚编译了一个PL/SQL Package但是有错误报道,如何显示出错信息?

解答:SHOW ERRORS47.如何搜集表的各种状态数据?

解答: ANALYZE

The ANALYZE command.48.如何启动SESSION级别的TRACE

解答: DBMS_SESSION.SET_SQL_TRACE

ALTER SESSION SET SQL_TRACE= TRUE;49. IMPORT和SQL*LOADER这2个工具的不同点

解答:这两个ORACLE工具都是用来将数据导入数据库的。

区别是:IMPORT工具只能处理由另一个ORACLE工具EXPORT生成

的数据。而SQL*LOADER可以导入不同的ASCII格式的数据源50。用于网络连接的2个文件?

解答: TNSNAMES.ORA and SQLNET.ORA=======================================================================

数据库范式一道习题

(1)符合第一范式,每一列都是不可分割的基本数据项。

不符合第二范式,因为主键应该是图书编号+读者号(假设一个人只节某本书一次,否则主键还要加借出日期),但书名和作者只有图书编号决定,这就不符合第二范式的属性完全依赖于主键。

(2)要把拆分成三个关系:

1图书(图书编号,书名,作者)

2读者(读者号,读者名)

3图书管理(图书编号,读者号,借出日期,应还日期)

关于本次数据库范式经典例题和数据库的范式的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

java运行环境安装 怎么给电脑安装java环境random函数用法?女生用random暗示什么