`

数据库基础知识 一:数据库 表

阅读更多
一  数据库
数据库:由存储特定结构化数据集的表集合组成。
是包含行(记录或元组)和列(特性)的集合。
表中的每一列都设计为存储某种类型的信息(例如,日期、名称、美元金额或数字)。
表有几种控制(约束、规则、触发器、默认值和自定义用户数据类型)用于确保数据的有效性。
表有索引,利用索引可以快速地找到行。可将声明引用完整性 (DRI) 约束添加到表上,以确保不同表中相互关联的数据保持一致。
数据库还可以存储过程,这些过程使用 Transact-SQL 编程代码对数据库中的数据执行操作,如存储对表数据提供自定义访问的视图。
例如,创建名为 MyCoDB 的数据库来管理公司的数据。在 MyCoDb 数据库中,可以创建一个名为 Employees 的表来存储每个职员的信息,该表可以包含名为 EmpId、LastName、FirstName、Dept 和 Title 的列。必须给表添加一些约束,以确保没有两个职员使用同一 EmpId,同时确保 Dept 列仅包含贵公司中有效的部门编号。您可以定义索引,以确保能够根据职员 ID 或姓氏快速地找到职员的数据。对于每一个职员,都需要向 Employees 表添加一行数据,所以可以创建名为 AddEmployee 的存储过程,将该过程自定义为接受新职员的数据值,并执行向 Employees 表中添加行的操作。可能需要一份部门职员的概要,这种情况下定义一个名为 DeptEmps 的视图,合并 Departments 和 Employees 表中的数据并产生输出。
设计数据库时,应考虑以下事项:
• 数据库的用途及该用途将如何影响设计。应创建符合用途的数据库计划。
• 数据库规范化规则,防止数据库设计中出现错误。
• 对数据完整性的保护。
• 数据库和用户权限的安全要求。
• 应用程序的性能需求。设计数据库时必须利用 Microsoft® SQL Server™ 2000 中能够提高性能的功能。对于性能而言,在数据库大小和硬件配置之间权衡也是很重要的。
• 维护。
• 估计数据库大小。

二 表
设计表时应注意:
• 表所包含的数据的类型。
• 表的各列及每一列的数据类型(如果必要,还应注意列宽)。
• 哪些列允许空值。
• 是否要使用以及何时使用约束、默认设置或规则。
• 所需索引的类型,哪里需要索引,哪些列是主键,哪些是外键。
列的数据类型:二进制数据由十六进制数表示为binary、varbinary 和 image。
              字符数据由字母、符号和数字组成。char、varchar 和 text。
              Unicode 数据使用 SQL Server 中的 nchar、varchar 和 ntext 数据类型进行存储。
              日期和时间数据由有效的日期或时间组成。datetime 和 smalldatetime。
              数字数据包括正数、负数、小数、分数和整数。整型数据使用 bigint、int、smallint 和 tinyint。小数数据使用 decimal 或 numeric。近似数字数据以 float 和 real存储。
              货币数据表示正的或负的货币值。money 和 smallmoney。

强制中数据完整性的机制:
PRIMARY KEY 约束:一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。
FOREIGN KEY 约束:通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。第二个表的这个列就成为第一个表的外键。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
级联引用完整性约束:
ON DELETE NO ACTION
指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则产生错误并回滚 DELETE。
ON UPDATE NO ACTION
指定如果试图更新某行中的键值,而该行含有由其它表的现有行中的外键所引用的键,则产生错误并回滚 UPDATE。
ON DELETE CASCADE
指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则也将删除所有包含那些外键的行。如果在目标表上也定义了级联引用操作,则对从那些表中删除的行同样采取指定的级联操作。
ON UPDATE CASCADE
指定如果试图更新某行中的键值,而该行的键值由其它表的现有行中的外键所引用,则所有外键值也将更新成为该键指定的新值。如果在目标表上也定义了级联引用操作,则对在那些表中更新的键值同样采取指定的级联操作。
例如,假设有一个数据库包含三个表:TableA、TableB 和 TableC。针对 TableA 中的主键,用 ON DELETE CASCADE 定义 TableB 中的外键。针对 TableB 中的主键,用 ON DELETE CASCADE 定义 TableC 中的外键。如果 DELETE 语句删除 TableA 中的行,则该操作也将删除 TableB 中具有与 TableA 中所删除的主键匹配的任何外键中的所有行,然后删除 TableC 中具有与 TableB 中所删除的主键匹配的任何外键中的所有行。
UNIQUE 约束:使用 UNIQUE 约束确保在非主键列中不输入重复值。
CHECK 约束:CHECK 约束通过限制输入到列中的值来强制域的完整性。
DEFAULT 定义:若没有指定列值,则是隐性要求将默认值装载到该列中。
为空性:空值或 NULL 并不等于零 (0)、空白或零长度的字符串(如""),NULL 意味着没有输入。NULL 的存在通常表明值未知或未定义。
CREATE TABLE Parts
  (PartID            int PRIMARY KEY,
   PartName          char(10),
   PartMaterial      char(10),
   PartColor         char(10),
   PartDescription   AS PartMaterial + PartColor
  )
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics