荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Jobs (温少), 信区: Visual
标  题: Re: 好冷清啊!
发信站: BBS 荔园晨风站 (Tue Mar 28 18:47:58 2000), 转信

【 在 tang (独孤九剑〖玄铁重剑〗) 的大作中提到: 】
: 【 在 Jobs (温少) 的大作中提到: 】
: : 经常设计数据库的时候,通常为不同的实体建立不同的表。
: : 例如,我们的bbs上信息是用数据库管理的。所有斑竹的信息包含在一个表BMADMs中,
: : BMADMs包含的字段有:id、name等。
: : 所有的文章的标题用一个表来管理,而文章的内容也用一个表管理。
: : 所有的文章标题做一个表titles,
: : 这个表包含文章的标识ID和文章的标题title和作者id。而另一个表contents包含
: : 文章的标识ID和具体文章内容content。
: : 如果我要查询所有斑竹所发表过的所有文章的标题,就要使用outer join。如:
: : select name,title
: :    from BMADMs as a left join as b
: 语法错了吧?                   ^^ titles as b (我手上没手册,你查一下)

: :    on ( a.id = b.id)
 不好意思,写漏了一些,的确应该是
 select name,title
    from BMADMs as a left join title as b
         on (a.id=b.id)
 其实这里例子举得不是很恰当。我举过另外一个例子吧。
 就是上面的表中,我要查找所有斑竹发表的文章标题包含"数据库"字样的文章的
 情况,我就应该这样写一个查询:
 select name,title
    from BMADMs as a left join title as b
        on (a.id=b.id)
        where b.title like '%数据库%'
 这只是一个简单的外连接查询。如果在一个符合3NF(The Third Normal Form)以上
 的数据库中,很多的查询应该是多个连接一起使用的。多个连接一起使用,比较复杂,
 我还没有用过,我只是看过一些例子,觉得实现了,功能很强大,但是应该也很容易
 出错。
    的确是这样,查询的结果存在NULL,outer join得出的结果很多情况下都包
 含NULL,但是这个不成问题,在客户端做个判断就是了。当然也可以在server端
 做判断。
: 这样选出来的结果集需要客户端在对结果集对某些字段进行判断是否为NULL!
: 也可以用服务器方:SQL Server用CASE,Oracle用if……
: (有时这个任务就交给人干了,让用户看到许多空白)
: : 我觉得使用outer join是一种技巧,而不是数据库设计失误的救命草。在OLAP系统中
: 哈哈!我没有说是救命草,我是说不要当它是救命草!(查查前面的文章就知道了)
: 我也觉得外连接挺有用的!但我在实际项目中看到了一些错误的使用,导致当库里
: 的数据增长后,使许多经由外连接得出的结果集跟实际所需的结果集差距很大!
: 如你上面的例子,如果BMADMS中有ID同为两个版的斑竹,出于某种考虑(为了某部分编码
: 的方便),该表中存在了两条该ID的记录,那样如果在Titles中该斑竹又有两条记录,那
: 样笛卡儿乘积的结果集就有4条记录跟该ID相关,其实应该只有两条才对!
: 其实这样的设计错误,在不用外连接时是容易发现的,但用了外连接后往往会使人糊涂!
: : 使用outer join是大量的,当然我还没有OLAP方面的经验,我所谈的只能是理论上的。
: : 经常对数据库进行规范化后,即让它符合1NF(The First Normal Form)或2NF
: : (The Second Normal)或3NF......或更高。当数据库越规范化的时候,数据库的表
: : 就会越多,数据库就会越复杂,通常一般的开发人员不能很好掌握这些复杂的查询关
: : 系,这时候,就可以使用View来隐藏数据库的复杂性,而建立视图的时候,通常大量
: : 使用inner join和outer join甚至cross join。........
: :    这是我的一些看法,欢迎师兄指教!


--


   我想超越这平凡的生活,注定我暂时漂泊!

   我无法停止我内心的狂热,对未来的执着!

※ 修改:·Jobs 於 Mar 28 18:49:45 修改本文·[FROM: 192.168.11.111]
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.11.111]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店