数据库-面试题
2016-07-06 16:34
204 查看
范式
第一范式(1NF)
所谓第一范式(1NF)是指在关系模型中,所有的域都应该是原子性的,而不能是集合、数组、记录等非原子数据项。
第二范式(2NF)
在1NF基础上消除非主属性对主码的部分函数依赖。
第三范式(3NF)
在2NF基础上消除非主属性对主码的传递函数依赖。
巴斯-科德范式(BCNF)
在3NF基础上消除主属性对主码的部分与传递依赖。关系模式R<U,F>∈1NF。若函数依赖集合F中的所有函数依赖X→Y(Y不包含于X)的左部都X都是主码而不是主码的子集,则R∈BCNF。关系型数据库设计中,达到BCNF就可以了!
什么是索引?SQL Server里的索引类型?
索引是一个数据结构,用来快速访问数据库表里的数据。SQL Server中,有两种类型的索引:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据(行),并按照聚集键的大小顺序存储行数据,物理顺序和逻辑顺序一致,由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符(用于标识行的位置),它允许每个表格有多个非聚集索引。
什么是主键?什么是外键?
主键是表格里的(一个或多个)字段,只用来唯一标识表格里的行。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表(可能是同一表)里的字段。那么这些相连的字段就是外键。
触发器的作用?
触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
什么是存储过程?用什么来调用?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。
索引的作用?和它的优点缺点是什么?
索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?
我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。
什么是事务?什么是锁?
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
锁:在DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。
什么叫视图?
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
第一范式(1NF)
所谓第一范式(1NF)是指在关系模型中,所有的域都应该是原子性的,而不能是集合、数组、记录等非原子数据项。
第二范式(2NF)
在1NF基础上消除非主属性对主码的部分函数依赖。
第三范式(3NF)
在2NF基础上消除非主属性对主码的传递函数依赖。
巴斯-科德范式(BCNF)
在3NF基础上消除主属性对主码的部分与传递依赖。关系模式R<U,F>∈1NF。若函数依赖集合F中的所有函数依赖X→Y(Y不包含于X)的左部都X都是主码而不是主码的子集,则R∈BCNF。关系型数据库设计中,达到BCNF就可以了!
什么是索引?SQL Server里的索引类型?
索引是一个数据结构,用来快速访问数据库表里的数据。SQL Server中,有两种类型的索引:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据(行),并按照聚集键的大小顺序存储行数据,物理顺序和逻辑顺序一致,由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符(用于标识行的位置),它允许每个表格有多个非聚集索引。
什么是主键?什么是外键?
主键是表格里的(一个或多个)字段,只用来唯一标识表格里的行。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表(可能是同一表)里的字段。那么这些相连的字段就是外键。
触发器的作用?
触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
什么是存储过程?用什么来调用?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。
索引的作用?和它的优点缺点是什么?
索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?
我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。
什么是事务?什么是锁?
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
锁:在DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。
什么叫视图?
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
相关文章推荐
- iOS进阶面试题
- iOS之基础面试题
- 黑马程序员:2016互联网大会告诉你前端开发的前景
- 10个值得深思的PHP面试问题
- 面试题20:顺时针打印矩阵
- 软件测试工程师面试(一)
- 华为公司面试题
- Java程序员修炼之路
- 剑指Offer:面试题16——反转链表(java实现)
- java面试中的高并发的问题
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
- 黑马程序员:Android实战升级课震撼上线
- PHP 程序员的技术成长规划
- 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
- 动态规划 解决打印所有和为s的连续整数序列 剑指offer 之 面试题41_2
- 剑指Offer:面试题14——调整数组顺序使奇数位于偶数前面(java实现)
- 【转】面向程序员的数据库访问性能优化法则
- 深入理解Java之《突破程序员基本功》之类集框架 ---------读书笔记------持续更新
- 面试题19:二叉树镜像
- 面试题18:二叉树与子结构