数据库基础知识
SQL Server 中的数据库由表的集合组成,这些表用于存储一组特定的结构化数据。表中包含行(也称为记录或元组)和列(也称为属性)的集合。表中的每一列都用于存储某种类型的信息,例如,日期、名称、金额和数字。
表上有几种类型的控制(例如约束、触发器、默认值和自定义用户数据类型),用于保证数据的有效性。可以向表上添加声明性引用完整性 (DRI) 约束,以确保不同表中的相关数据保持一致。表上可以有索引(与书中的索引相似),利用索引能够快速找到行。数据库还可以包含使用 Transact-SQL 或 .NET Framework 编程代码的过程对数据库中的数据执行操作。这些操作包括创建用于提供对表数据的自定义访问的视图,或创建用于对部分行执行复杂计算的用户定义函数。
例如,创建一个名为 MyCompanyDB 的数据库来管理公司数据。在 MyCompanyDB 数据库中,创建一个名为 Employees 的表来存储有关每位雇员的信息。该表还包含名为 EmpId、LastName、FirstName、Dept 和 Title 的列。为了确保不存在两个雇员使用同一个 EmpId 的情况,并确保 Dept 列仅包含公司中的有效部门编号,必须向该表添加一些约束。
由于需要根据雇员 ID 或姓氏快速查找雇员的相关数据,因此可定义一些索引。必须向 Employees 表中针对每位雇员添加一行数据,因此还必须创建一个名为 AddEmployee 的存储过程。此过程被自定义为接受新雇员的数据值,并执行向 Employees 表中添加行的操作。可能会需要雇员的部门摘要。在这种情况下,需要定义一个名为 DeptEmps 的视图,用于合并 Departments 和 Employees 表中的数据并产生输出。下图显示了所创建的 MyCompanyDB 数据库的各个部分。
一个 SQL Server 实例可以支持多个数据库。每个数据库可以存储来自其他数据库的相关数据或不相关数据。例如,SQL Server 实例可以有一个数据库用于存储职员数据,另一个数据库用于存储与产品相关的数据。或者,一个数据库可以存储当前客户订单数据,而另一个相关数据库可以存储用于年度报告的历史客户订单。
重要提示 |
---|
不能在 master 数据库中创建任何用户对象(例如表、视图、存储过程或触发器)。master 数据库包含 SQL Server 实例使用的系统级信息(例如登录信息和配置选项设置)。 |
OLTP 数据库
联机事务处理 (OLTP) 关系数据库最适合于管理变化的数据。通常会有多个用户同时执行将会更改实时数据的事务。尽管用户发出的各个数据请求一般只引用几行,但是这些请求有许多是同时发生的。
OLTP 数据库旨在使事务应用程序仅写入所需的数据,以便尽快处理单个事务。OLTP 数据库通常具有以下特征:
支持大量并发用户定期添加和修改数据。
反映随时变化的单位状态,但不保存其历史记录。
包含大量数据,其中包括用于验证事务的大量数据。
具有复杂的结构。
可以进行优化以对事务活动做出响应。
提供用于支持单位日常运营的技术基础结构。
个别事务能够很快地完成,并且只需访问相对较少的数据。OLTP 系统旨在处理同时输入的成百上千的事务。
OLTP 系统中的数据主要被组织为支持如下事务:
记录来自销售点终端或通过网站输入的订单。
当库存量降到指定级别时,订购更多的货物。
在制造厂中将零部件组装为成品时对零部件进行跟踪。
记录雇员数据。
数据仓库
OLTP 数据库的目的是捕获高比率的数据更改和添加,而数据仓库与此相反,其目的是组织大量的稳定数据以便于分析和检索。数据仓库经常用作商业智能应用程序的基础。
下面列出了数据仓库的功能:
将来自异类数据源的数据组合为单个同类结构。
采用简化的结构组织数据,以便提高分析查询的效率,而不是为了进行事务处理。
包含已转换的数据,这些数据有效、一致并经过合并和格式化以进行分析。
提供代表业务历史记录的稳定数据。
定期进行更新,更新时只添加数据而不频繁触发事务。
简化安全性要求。