77家的会客2010

数据库的关系及父子表的应用
Weather:大雨 ,南风 7-8级 ,最低气温22 ℃

本来是昨天晚上要写的,但实在是太累了,占好位儿,现在才写,下班时间到:17:30

“关系型数据库”是现在学动态网页制作者听到的最多的关于数据库的词了,那么这个关系表现在哪儿,这里面就有很多值得深究的东西了。关系是个好东西,虽然有时候被缠上的话,会很麻烦,但是大多情况下,我们可以利用关系,极大的简化我们的操作。

拿一个日志系统来讲,最基本的数据表无非三个:分类表,日志内容表,回复表

在日志进行管理时,我们如果要删除日志的话,就得先操作一遍数据库,先把回复表中的相关的回复给删除了,这两个表间通过一个关联字段进行联接。同理,如果要删除一个分类的话,那就得先用个循环把回复先删除再来一个操作把此分类下的日志删除,最后才来进行分类的删除操作。是不是很乱很麻烦?

“关系”这个词现在用上场了,各个数据表间的关联字段,就是我们想要的关系。得用这个“关系”,我们的操作就不必那么“麻烦”,只要我们想进行的最基本的操作,其它的操作,让数据库靠这个“关系”自己去完成。OK,下面开始,以SQL2000和ACESS为例

先打开数据库的关系视图,创建新的关系图(怎么创建不要问我,自己试去)

先看图吧。SQL2000的

默认状态下“对INSERT和UPDATE强制关系”是选中状态,下面两个选项就可以按照我们的要求来进行选择了,如果在实现我前面所说的功能,那就选中“级联删除相关的记录”选项。

当然,有时候我们需要同步更新,比如说动网的贴子表和贴子回复表就是分开的,这两个表有一个需要关联的字段就是贴子的标题,那么在贴子主题更新的状态下,回复表里的标题自然也要更新,这时就需要把“级联更新相关的字段”选中喽,在上面的主键表和外键表里选中关联的字段就可以了。

这里的主键表,是指发出动作的表,而外键表,就是要数据库自己根据你的动作来进行操作的对象,也就是不用你管的被操作表。

再来看一下ACCESS数据库的,稍有不同

默认状态下,ACCESS数据库是不会自动强制关系的,也就是说“实施参照完整性”未选中,我们要实现强制关系,就只有把它选中喽,然后下面的两个功能就同SQL2000里面的啦。只是这里和SQL2000的不同还在于其对于主从表的称呼,SQL2000里的主键表在这里直接称做“表”,对应的外键表则被称为“相关表”,可能这里的“相关表”这个词会更利于你理解吧。

当然,关系型数据库的“关系”利用远不止于此,这里只是介绍了一下我们在开发动态程序中最可能用到的,如果你有更好的办法,欢迎讨论。

历史上的今天: [2008/08/08]加奥运班

[数据库的关系及父子表的应用]的回复

Post a Comment~