`
zealotds
  • 浏览: 123496 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

阅读更多
sql2008 t-sql

写在前边
这个系列的文章纯属个人学习笔记。仅仅针对自己不熟悉的部分进行简要摘录。
更多的倾向于sql2005,2008中的新概念和新特性,可能不太适合刚刚接触t-sql的同学:)
示例数据库:
原书提供的例子数据库创建脚本
AdventureWorksLT2008
SQL2005示例数据库

关系模型基础:

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

规范化 (Normalization)
形式化的数学处理过程,为了在不牺牲完整性的前提下,将数据冗余降低到最小。
第一范式:表中的行必须是唯一的,属性应该是原子的。该范式对关系的定义来说是冗余的,关系数据库一定符合该范式。行的唯一性由主键保证

第二范式:首先满足第一范式;其次对每一个候选键,每个非键属性必须完全依赖于整个(全部的属性)候选键。如上图,如果Orders保留了复合主键,则orderdate, customerid, companyname等属性可以通过orderid唯一决定。而orderid并不是某个候选键的全部属性(这里的复合主键即唯一候选键)。所以需要提取OrderDetails表。引入的数据冗余可以考虑以下情况:相同orderid时不同productid的订单会有orderdate, customerid, companyname三个字段的冗余。

第三范式:首先满足第二范式;其次,所有非键属性必须非传递依赖于候选键。就是说所有的非键属性必须相互独立,没有相互依赖。如上图,customerid和companyname都依赖于整个主键orderid,但companyname依赖于customerid,这样就形成了传递依赖:须知道orderid才能知道customerid, 须知道customerid才能知道companyname。提取Customers表后如下图:

第二、三范式总结:每个非键属性都必须仅依赖于全部的键,不能是其他东西。

数据生命周期(环境):

1. 联机事务处理OLTP (on line transactional processing)
  • 使用T-SQL进行增删改查的环境,注意控制数据冗余,保证完整性。
  • 不适合生成报表,因为可能涉及复杂的关联关系

2. 数据仓库DW (data warehouse)
  • 针对数据检索和生成报表的环境。
  • 为查询进行设计和优化,有意保留部分冗余
  • 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请求。

3. 联机分析处理 OLAP (on line analytical processing)
  • 对聚合后的数据进行在线动态分析,通常涉及频繁地不同级别的聚合(包括切片slicing和切块dicing)。
  • 使用sql server analysis service计算不同级别的聚合并保存在多维结构(cube)中

4. 数据挖掘 data mining

SQL Server体系结构:

默认数据库:
  • 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新增的。保存所有系统对象

架构(Schema)和对象:
  • Schema可以看做是各种对象的容器,这些对象可以是table, view, sp等。一个数据库可以包含多个schema,每个schema又包含很多对象。
  • 可以在Schema的级别上制定访问权限控制
  • Schema也是一个命名空间,可用作对象的前缀,如Sales.Orders表示Sales架构中的Orders表,这种表示方法称为架构限定(schema-qualified)名称。
  • 如果省略架构名,对象的搜索次序为:用户默认schema > dbo schema

0
1
分享到:
评论

相关推荐

    MicroSoft Sql Server2005:T-Sql查询

    本篇文章将深入探讨T-SQL查询在SQL Server 2005中的应用,以"sqlserver2005 技术内幕:T-SQL查询第一章"为引,带你走进T-SQL的世界。 ### 1. T-SQL基础 T-SQL是SQL的扩展,它是SQL Server的标准查询语言,包含了...

    微软研发探秘系列课程(5):微软研发揭秘之贺岁版——2006年程序员书籍畅谈 (技术篇)

    例如,《SQL Server 2005技术内幕》可能会被提及,以帮助开发者更好地理解和运用这一新版本的数据库管理系统。 在软件设计和架构方面,可能探讨了《设计模式:可复用面向对象软件的基础》这样的经典作品,强调了...

    NET compact FrameWork移动开发指南 绝对清晰版

    第4篇主要介绍了移动Web应用程序的开发以及移动智能设备所支持的网络技术。第5篇主要介绍了移动应用高级功能,如P/Invoke、POOM、资源与本地化、多线程编程、性能优化和移动安全策略等的开发。第6篇从实际... 目录 *...

    ADO.NET入门与深入研究

    ADO.NET是微软.NET框架的一部分,主要用于数据库访问和数据处理。它是C#和其他.NET语言进行数据库操作的核心技术。本文将从入门基础到深入研究,详细解析ADO.NET的相关知识点。 **入门篇** 1. **数据提供者(Data ...

    ASP.NET 2.0 电子书 VS2005学习资料大全

    24.SQL.Server.数据库设计与管理.pdf 12.8MB 25.SQL.完全手册.pdf 46.6MB 26.Visual.C#.NET.网络核心编程.pdf 19.1MB 27.Windows应用高级编程——C#编程篇.pdf 18MB 28.你必须知道的.NET.pdf 3.5MB 29....

Global site tag (gtag.js) - Google Analytics