第3章 创建数据类型和表

第3章 创建数据类型和表
第3章 创建数据类型和表

第3章创建数据类型和表

本章概述

在前面了解了SQL Server数据库的组成以及SQL Server数据库中的对象后,我们在本章中学习数据库中的数据类型和表的创建方法。通过本章的学习,我们已经能够利用SQL Server数据库为简单资料设计和实现最基本的存储方案了。

教学目标

●了解SQL Server支持的数据类型

●掌握创建和删除用户定义数据类型的方法

●掌握创建和删除用户表的方法

●掌握生成列值的方法

●掌握生成脚本的方法

教学重点

●SQL Server支持的类型,何时选用何种类型描述数据。用户定义类型的相关处理。

●用户表的增删以及相关操作,包括生成脚本和数据列的定义。

教学难点

●本章同样会设计到数据的底层存储结构,比如B树,为什么要这样设计,需要讲

清楚。

●企业项目流程同课程内容的结合。比如设计表结构属于项目什么阶段的任务,该

任务的实际进行方式是如何的(结合案例)。又比如生成SQL脚本对项目的作用。

数据库程序设计—SQL Server 2000 数据库程序设计教师参考手册

教学资源

先修知识

在正式开始学习本章内容以前,学生须具备下列知识基础。

2

第3章创建数据类型和表

建议学时

课堂教学(3课时)+实验教学(3课时)

教学过程

3.1创建数据类型

教学提示:

本节主要达到三个目的。

●掌握SQL Server支持的数据类型。(精讲)

●掌握用户自定义类型的创建。(精讲+演示)

●掌握选择数据类型的原则,这点在企业数据库应用中非常重要,因为正确的选择数据

列的类型将使数据库性能达到最优。(略讲)

3

数据库程序设计—SQL Server 2000 数据库程序设计教师参考手册

4

第3章创建数据类型和表

3.2创建表

教学提示:

本节主要达到两个目的。

●掌握SQL Server数据库表的存储结构。(精讲)

●掌握SQL Server数据库表的创建和相关操作。(精讲+演示)

5

数据库程序设计—SQL Server 2000 数据库程序设计教师参考手册

3.3生成列值

教学提示:

本节主要达到一个目的。

●掌握自动生成列值的方法,这在需要自动产生每列的唯一标识时非常重要。(精讲+演

示)

6

第3章创建数据类型和表

3.4生成脚本

教学提示:

本节主要达到一个目的。

●掌握将数据库对象的定义保存到脚本的方法,该技巧能够使开发组在环境出现问题时

重新创建数据库,并且能够在大型团队开发中精确的复制测试或者开发环境。(精讲+演示)

7

数据库程序设计—SQL Server 2000 数据库程序设计教师参考手册

3.5推荐操作

教学提示:

本节主要达到一个目的。

●让学生了解有经验的数据库程序员的一些通常的作法,这些作法在实际工作中证明是

高效的。(略讲)

总结

经过本章的学习,我们了解了下列的知识和内容。

●数据库程序员的首要任务就是设计数据库表结构,选择每列的数据类型就是基本工作。

数据类型及其长度的选取将极大地影响到数据库的性能。

●数据库表的创建、更改和删除等基本操作。

●生成列值的操作,这些操作保证每行数据拥有一个唯一的标号。

●生成SQL脚本,这些脚本保证SQL Server数据库中的对象结构能够被精确复制到其

他位置,从而确保项目的顺利进行。

在第四章中,我们学习如何通过诸如约束等手段保护数据完整性。

8

第3章创建数据类型和表

随堂练习

1.下图所示是一个大学的管理数据库中的三张数据表的数据字典结构:

如果想要提高数据查询的速度和加少数据冗余,应当如何做?

A.添加表Instructors,包含ID列、InstructorName列和OfficePhone列,将ID列

加入到Courses表中

B.将Classroom表与Course表的内容合并,删除Classroom表

C.将Courses表中的主键约束设在CourseID和CourseTitle上

D.删除ClassroomID列,将主键约束设在ClassNumber和ClassTime列上

正确答案:(A)

分析:

规范化的数据库是最有效率的。这个数据库没有规范化。Courses数据表中包含导师(Instructor)信息。当一位导师有多门课程时,InstructorName和OfficePhone在每门课程记录中都会出现。

我们可使用下面的步骤规范化数据库

●创建表Instructors

●创建数据库列ID作为主键

9

数据库程序设计—SQL Server 2000 数据库程序设计教师参考手册

10●在Instructors表上添加InstructorName和OfficePhone ●在Course表上去除InstructorName和OfficePhone

●将ID列加入到Courses表中

2.在某个数据库中,为了产生一些查询信息,需要连接四五张数据表。假设该数据库在设计时做到了高度的规范化。在这种情况下应当如何提高数据查询的响应速度?

A.在这四五张数据表上创建视图并在视图上创建索引

B.降低数据库设计的规范化程度

C.提高规范化程度

D.在连接列上创建索引

正确答案:(B)

分析:

如果数据库过度规范化,数据库就会由数量众多,数据列很少且相互关联的数据表构成,那么数据库的性能会下降。这是因为当数据库处理分散在数量众多,数据列很少且相互关联的数据表中的数据时,数据库必须将多张表连接,而这将导致数据库的负载增加。在这种情况下,少许降低数据库的规范化程度将能够提到性能。

3.在为仓储公司开发的SQL Server 2000数据库中,需要创建一张数据表存放了订单数据。

其中OrderID必须是数据库自动生成的具备唯一性的数据列,CustomerID和CargoID 分别是在另外的数据表Customers和Cargos中已有的数据中选取,OrderDate不能为空,下面四个选项中的SQL语句能实现创建功能?

A.CREATE TABLE Orders

{

OrderID int identity(1,1) PRIMARY KEY NOT NULL,

OrderDate datetime NULL,

CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES

Customers(CustomerID),

CargoID int NOT NULL FOREIGN KEY REFERENCES Cargos(CargoID) ,

ShipDate datetime NULL

}

B.CREATE TABLE Orders

{

第3章创建数据类型和表OrderID int identity(1,1) PRIMARY KEY NOT NULL,

OrderDate datetime NOT NULL,

CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES

Customers(CustomerID),

CargoID int NOT NULL FOREIGN KEY REFERENCES Cargos(CargoID),

ShipDate datetime NULL

}

C.CREATE TABLE Orders

{

OrderID int identity(1,1) PRIMARY KEY NOT NULL,

OrderDate datetime NOT NULL,

CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES

Customers(CustomerID),

CargoID int NOT NULL,

ShipDate datetime NULL

}

D.CREATE TABLE Orders

{

OrderID int PRIMARY KEY NOT NULL,

OrderDate datetime NOT NULL,

CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES

Customers(CustomerID),

CargoID int NOT NULL FOREIGN KEY REFERENCES Cargos(CargoID),

ShipDate datetime NULL

}

正确答案:(B)

4.在一个客户端/服务器结构的系统中,用户在客户端输入数据。每次输入后就产生一个唯一的纪录编号,平均每天有10000条记录输入到数据库中,应当如何设计数据库实现该需求?

11

数据库程序设计—SQL Server 2000 数据库程序设计教师参考手册

12A.将数据记录的一列设为唯一表示符

B.将数据记录的一列设置IDENTITY属性

C.使用函数操作数据,保证唯一性

D.使用存储过程保证数据的唯一性

正确答案:(B)

5.在公司人事管理数据库中使用数据表Employees来记录员工信息。为了保证该数据表中的HomePhone和BusinessPhone两个列中至少有一列不为空,请问应当在下列选项中选择哪一个?

A.创建规则绑定到这两列上,不允许两列为空

B.创建规则绑定到这两列上,不允许输入为空

C.在这两列上添加CHECK约束防止空值输入

D.在这两列上添加CHECK约束验证输入的两列中至少有一列不为空

正确答案:(D)

布置作业

1.完成书后习题1-8

2.预习书中所有实验,并填写操作步骤。在实验课上准备操作

案例教学

本章介绍了数据库表的设计和创建过程。学生已经可以根据案例说明创建数据库中的数据类型和表,但是其它对象,比如约束,需要通过下一章的学习才能掌握。

相关主题
相关文档
最新文档