Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > SQL Server 6.5 基本图书馆应用程序示例数据
【标  题】:SQL Server 6.5 基本图书馆应用程序示例数据
【关键字】:程序,SQL,Server,应用,SQL Server,Serv,SQL,Server
【来  源】:网络

SQL Server 6.5 基本图书馆应用程序示例数据

Your Ad Here

第一节 示例数据

本文中使用的示例数据来自 SQL Server 6.5 基本图书馆应用程序。该图书馆应用程序用于跟踪它的成员,它的图书和借出。图书馆的数据库方案如下图所示。

图书馆数据库方案:

表结构

图书馆应用程序的主要的表之一是 Member 表,图书馆中的每一个成员具有一条记录。一个有趣的情况是少年成员(其信息保存于 Juvenile 表中)必须有成人(其信息保存于 Adult 表中)担保。对于少年和成年人,分别设计两个单独的表 Adult 和 Juvenile。这种设计方法节约了磁盘空间,因为一但你知道担保人,所有的少年的地址信息就是多余的。另外,少年的期满日期与成年人的相同。将来,你不必介意成年人的出生日期而只需注意少年的出生日期,因为在他们的第18个生日后他们就成为了成年人。

以下 SQL Server 语句用于创建 Member,Adult 和 Juvenile 表:

CREATE TABLE member
  ( member_no        member_no    NOT NULL IDENTITY(1,1),
    lastname         shortstring  NOT NULL ,
    firstname        shortstring  NOT NULL ,
    middleinitial    letter           NULL ,
    photograph       image            NULL )

CREATE TABLE adult
  ( member_no        member_no    NOT NULL ,
    street           shortstring  NOT NULL ,
    city             shortstring  NOT NULL ,
    state            statecode    NOT NULL ,
    zip              zipcode      NOT NULL ,
    phone_no         phonenumber      NULL ,
    expr_date        datetime     NOT NULL )

CREATE TABLE juvenile
  ( member_no        member_no    NOT NULL ,
    adult_member_no  member_no    NOT NULL ,
    birth_date       datetime     NOT NULL )

Member 表中的 member_no 字段在添加新记录时会由 SQL Server 自动生成。该字段是一个 Identity 列。起始值为 1 ,增量值也是 1。这样在表中输入的第一条记录的 member_no 值就是 1。对于后来插入到表中的记录 member_no 的值自动增加 1。当添加一条记录时如果客户没有指定 member_no 的值。SQL Server 自动维护它并询问客户使用什么值。

在 Adult 和 Juvenile 表中的 member_no 不是 Identity 列。这些记录中的值必须与 Member 表中相应的 member_no 值相匹配。当新记录添加到图书馆库时,一个记录首先会添加到 Member 表中。SQL Server 的全局变量 @@Identity 包含了自动生成的 member_no。然后添加到 Adult 或 Juvenile 表中的记录的 member_no 值将使用 @@Identity 中的值。

申明参照完整性

在早期版本的 SQL Server 参照完整性是通过使用触发器强制执行,这与 Visual FoxPro 强制参照完整性相同。SQL Server 6.0 添加了可申明的参照完整性,这允许你定义你自己的作为数据结构一部分的参照完整性规则。第一步是在各表中创建基本关键字约束,如以下代码所示:

ALTER TABLE member
  ADD CONSTRAINT member_ident PRIMARY KEY CLUSTERED 
    (member_no) 
ALTER TABLE adult
  ADD CONSTRAINT adult_ident PRIMARY KEY CLUSTERED
    (member_no) 
ALTER TABLE juvenile
  ADD CONSTRAINT juvenile_ident PRIMARY KEY CLUSTERED 
      (member_no) 

基本关键字约束创建一个唯一索引,用于强制 member_no 的唯一性。在示例中创建一组索引用于对数据进行物理排序。

定义可申明的参照完整性的第二步是在相关表之间创建外部关键字约束,如以下代码所示:

ALTER TABLE adult
  ADD CONSTRAINT adult_member_link FOREIGN KEY (member_no) 
      REFERENCES member (member_no)
ALTER TABLE juvenile
  ADD CONSTRAINT juvenile_member_link FOREIGN KEY
     (member_no) REFERENCES member (member_no)
ALTER TABLE juvenile
  ADD CONSTRAINT juvenile_adult_link FOREIGN KEY 
    (adult_member_no) REFERENCES adult (member_no)

第一个 Alter Table 定义了一个 Member 和 Adult 表之间的关系。这是一个一对一关系,虽然这里没有代码指明或强制是这种类型的关系。第二个 Alter Table 在 Member 和 Juvenile 表部定义了一个关系。最后一个 Alter Table 在 Adult 和 Juvenile 表之间定义一个关系。这是一个一对多关系。

要意识到 SQL Server 当前不支持级联更新或删除。如果你想那样做就应该用触发器代替约束。

使用视图 - 尝试一:【上一篇】
远程视图与 SQL pass-through 的区别:【下一篇】
【相关文章】
  • 使用 SQL pass-through
  • select - SQL的工作流程
  • group by分组的应用
  • Foxpro 程序的调试
  • SQL数据库的恢复
  • SQL 语言
  • Transact-SQL 语言概述
  • SQL Server 2000 与Internet-支持Web 应用的新特性
  • SQL Server 2000 的关键字
  • SQL Server 2000 的全局变量
  • 【随机文章】
  • 全光交换机的新功能
  • PHP4 & ORACLE8i & NES3.6 for Solaris2.6编译和远程连接指南
  • 使用squid加速多个WEB站点
  • 《数据精灵》(DataFairy)?
  • 用C#实现文件下载器(1)
  • ORACLE SGA 的分配
  • strnicmp ( )
  • 安装程控电话交换机/集团电话与电话虚拟网的区别
  • swt大杂合
  • Visual Studio 2005 Extensions for SharePoint 下载地址
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.