现在的位置: 首页 >> 数据库 >> FoxPro >> SQL Server 6.5 基本图书馆应用程序示例数据
添加时间:2005-8-17 来源:网教中国 作者:
SQL Server 6.5 基本图书馆应用程序示例数据

第一节 示例数据

本文中使用的示例数据来自 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 的区别
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·使用FOXPRO编一个完整的软件
·Foxpro 程序的调试
·Foxpro 程序的测试与调试
·Foxpro 默认的工作环境
·Foxpro 创建你自己的向导
·附表:"选项"对话框的说明(2)
·附表:"选项"对话框的说明(3)
·foxpro 更新源表
·foxpro 多个本地数据
·使用视图 - 尝试一
相关文章
 
最新文章
·什么是项目管理器,数据库和表的
·见识一下面向对象的编程
·FOXPRO 对象、属性、事件、方法
·FOXPRO 常用的对象、属性、事件(
·FOXPRO常用编程命令及常用函数
·使用FOXPRO编一个完整的软件
·Foxpro 编程中的一些小技巧
·Foxpro 程序的调试
·Foxpro 软件的编译及制作安装盘
·Foxpro 更多对象
Google