【Microsoft SQL Server 2008 技术内幕:T-SQL语言基础】一、基础篇

sql2008 t-sql

[color=red][b][size=large]写在前边[/size][/b][/color]
这个系列的文章纯属个人学习笔记。仅仅针对自己不熟悉的部分进行简要摘录。
更多的倾向于sql2005,2008中的新概念和新特性,可能不太适合刚刚接触t-sql的同学:)
示例数据库:
[url=http://www.solidq.com/insidetsql/books/source_code/Inside%20T-SQL%20for%20SQL%20Server%202005%20and%202008.zip]原书提供的例子数据库创建脚本[/url]
[url=http://msftdbprodsamples.codeplex.com/releases/view/37109]AdventureWorksLT2008[/url]
[url=http://msftdbprodsamples.codeplex.com/releases/view/4004#DownloadId=11753]SQL2005示例数据库[/url]

[b][size=large]关系模型基础:[/size][/b]

[b]约束 (Constraint)[/b]
关系模型的最大优点之一就是将数据完整性定义为模型的一部分:
1. Domain integrity: (最简单的约束)就是设置是否允许为空(null)E
2. Entity integrity: candidate key, 可以唯一标示一条记录,候选键可以做为主键,否则就被称为备用关键字(alternate key)
3. Referential integrity: foreign key

[b]规范化 (Normalization)[/b]
形式化的数学处理过程,为了在不牺牲完整性的前提下,将数据冗余降低到最小。
[b]第一范式[/b]:表中的行必须是唯一的,属性应该是原子的。该范式对关系的定义来说是冗余的,关系数据库一定符合该范式。行的唯一性由主键保证
[img]http://zealotds.iteye.com/upload/picture/pic/56491/0ff4964c-4fa3-36a3-8215-b72780244d55.jpg[/img]
[b]第二范式[/b]:首先满足第一范式;其次对每一个候选键,每个非键属性必须完全依赖于整个(全部的属性)候选键。如上图,如果Orders保留了复合主键,则orderdate, customerid, companyname等属性可以通过orderid唯一决定。而orderid并不是某个候选键的全部属性(这里的复合主键即唯一候选键)。所以需要提取OrderDetails表。引入的数据冗余可以考虑以下情况:相同orderid时不同productid的订单会有orderdate, customerid, companyname三个字段的冗余。
[img]http://zealotds.iteye.com/upload/picture/pic/56495/698e8555-b371-3ea5-8f38-62599081b917.jpg[/img]
[b]第三范式[/b]:首先满足第二范式;其次,所有非键属性必须非传递依赖于候选键。就是说所有的非键属性必须相互独立,没有相互依赖。如上图,customerid和companyname都依赖于整个主键orderid,但companyname依赖于customerid,这样就形成了传递依赖:须知道orderid才能知道customerid, 须知道customerid才能知道companyname。提取Customers表后如下图:
[img]http://zealotds.iteye.com/upload/picture/pic/56493/bc3421d3-bcab-3d8a-986c-9ce8893d03ec.jpg[/img]
[b]第二、三范式总结[/b]:每个非键属性都必须仅依赖于全部的键,不能是其他东西。

[b][size=large]数据生命周期(环境):[/size][/b]

1. 联机事务处理OLTP (on line transactional processing)
[list]
[*]使用T-SQL进行增删改查的环境,注意控制数据冗余,保证完整性。
[*]不适合生成报表,因为可能涉及复杂的关联关系
[/list]
2. 数据仓库DW (data warehouse)
[list]
[*]针对数据检索和生成报表的环境。
[*]为查询进行设计和优化,有意保留部分冗余
[*]star schema:一个事实表(存储事实和measure),多个维度表(每个维度实现为一个包含冗余数据的表)。
[*]snowflake schema:如果规范化星形模式中的一个维度,生成表示该维度的多个表,得到就是雪花形维度(snowflake dimension),包含雪花维度的模式即雪花模式
[*]measure: A measure represents a column that contains quantifiable data, usually numeric, that can be aggregated. A measure is generally mapped to a column in a fact table.
[*]数据通过ETL(extract transform and load)工具被加载到DW, SQL server中由Integration Service响应ETL请求。
[/list]
3. 联机分析处理 OLAP (on line analytical processing)
[list]
[*]对聚合后的数据进行在线动态分析,通常涉及频繁地不同级别的聚合(包括切片slicing和切块dicing)。
[*]使用sql server analysis service计算不同级别的聚合并保存在多维结构(cube)中
[/list]
4. 数据挖掘 data mining

[b][size=large]SQL Server体系结构:[/size][/b]

[b]默认数据库:[/b]
[list]
[*]master: 保存数据库实例范围内的元数据信息,服务配置,所有数据库的信息,初始化信息
[*]model: 新数据库的模板。修改model数据库将影响其修改后所创建的数据库
[*]tempdb: 保存临时数据:work table, sort space, row versioning, etc. 服务重启后重置为model
[*]msdb: 保存Agent服务的数据。Agent负责job,schedule, replication和报警。另外还保存一些sql server功能的信息,如database mail和service broker。
[*]resource sql server 2005新增的。保存所有系统对象
[/list]
[b]架构(Schema)和对象:[/b]
[list]
[*]Schema可以看做是各种对象的容器,这些对象可以是table, view, sp等。一个数据库可以包含多个schema,每个schema又包含很多对象。
[*]可以在Schema的级别上制定访问权限控制
[*]Schema也是一个命名空间,可用作对象的前缀,如Sales.Orders表示Sales架构中的Orders表,这种表示方法称为架构限定(schema-qualified)名称。
[*]如果省略架构名,对象的搜索次序为:用户默认schema > dbo schema
[/list]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值