为什么数据库上存在"关系"而不仅仅是使用SQL的连接?

Jua*_*uan 3 database database-design

我总是在数据库文章或教程中看到或者......在他们使用数据库的任何地方,他们都使用称为关系的东西.我立即想到那些带有字段名称列表和一个字段连接到另一个带有一行的框中的字段的小框.

我不是数据库方面的专家(你可能已经知道了)但是我用过的一点点,我从不需要关系.它们似乎总是多余的,因为我总是可以使用JOIN来实现它对我来说的效果.他们是多余的还是你可以做任何与JOIN无关的关系?或者我只是胡说八道?

Sha*_*rde 5

关系不仅仅是关于SQL查询的连接.关系提供许多好处:

  • 数据的完整性
  • 查询方便
  • 第三方工具集成的好处
  • 使用数据库的未来dbas /开发人员的"自我描述"数据模型
  • 等等

数据完整性:例如,如果没有"客户记录",关系有助于确保您的"订单记录"不存在.只需定义客户和订单之间的关系,数据库就可以确保不会发生这种情况.这有助于确保您的数据库不会成为一大堆垃圾数据

查询便利性:关系可以使执行某些类型的查询变得更容易.由于客户和订单之间的关系,删除客户记录可以自动同时删除客户的订单

第三方工具集成的好处许多第三方工具(O/R工具浮现在脑海中)依赖关系才能正常工作

真的,这个清单可以继续......你应该使用它们,它们非常有益.即使您今天没有意识到这一点,如果您正在开发一个将在很长一段时间内继续增长的数据库项目,那么从一开始就建立关系对您有利.

我认为它们对于小型项目/一次性数据模型并不是那么重要......但对于任何实质内容,你最好不要使用它们.


nvo*_*gel 5

关系是一组域的笛卡尔积的子集(http://mathworld.wolfram.com/Relation.html)。在日常情况下,关系(或更具体地说是一个关系变量)是大多数人称为表的数据结构(尽管SQL中的表不一定符合关系的条件)。

关系是关系数据库模型的基础。

关系是不同的。关系是语义上的“事物之间的关联”。

我认为您实际上是在询问参照完整性约束(外键)。外键是一种数据完整性规则,通过防止向数据库中添加不一致的数据来确保数据库的一致性。不要将外键与关系混淆,因为它们是完全不同的东西。