前两天,做了一个关于信息系统的综合索引。我用的sql语句拼接的方式,在这个过程中,我发现当我使用并和非逻辑的时候,一切正常。可是,当使用或逻辑的时候,发现全集变大了,就是查出来很多重复的记录(我是两个表联立,返回一个数据表的实体。),我就将sql语句拿到数据库中去直接查找,发现结果一样。去网上查阅了一些资料,发现是数据库的关联出现了问题。因为数据没有任何的关联约束。两个表联立形成的集合就是两个表的笛卡尔乘积,所以当你取并集的,就会将全集里面的数据取出来。所以集合看起来就是变大了,出现这种问题,其实就是表联合的时候出现了一些无意义的数据。这也是数据库外键约束的意义所在。最后我也没有再去更改表的属性,将所谓的外键约束写在sql语句里面,就是当你条件的逻辑运算运算完成后,在跟我认为的全集(表联合有意义的数据)取一个交集。
以上全是自己的见解,仅供参考。但是通过这次实践,我知道了数据库外键存在的意义。所以说,数据库原理还是很重要的。
原文地址:http://12863969.blog.51cto.com/12853969/1923827