“关系数据库”中的“关系”对我们意味着什么?

时间:2009-11-06 19:39:30

标签: relational-database database

我知道,关系数据库是一个数据库,其中一个表中的字段链接到其他表中的行,就像这样。

但我无法理解作为网络开发者对我来说意味着什么!

据我所知,带有连接和嵌套选择的查询可以降低性能(尤其是具有数十个连接的drupal风格查询)。更重要的是,对DB的任何查询都是瓶颈,然后你有很多用户需要缓存每个选择请求。

如果缓存每个选择请求,最好缓存简单请求而不是复杂请求。您可以缓存“select * from tbl1 where id = 123”和“select * from tbl2 where id = 456”或“select * from tbl1,tbl2 where ...”,但是如果你选择第二种方式,你将会需要缓存每个对象组合 - 这并不酷。

好的,现在我们只使用非常简单的查询,例如“select * from tbl1 where id = 123”“select id from tbl1 order by id limit 0,30”并缓存它们(或者我们只能缓存第一种类型的查询,等等)。有查询,而不是简单的INSERT,DELETE和UPDATE都是我们需要的以及我们使用的所有内容!

正如我们所看到的,所有关系逻辑都是应用程序的主要语言,而不是SQL。那么,为什么我们需要所有这些关系的东西呢?他们的意思是什么? “关系型”有什么样的东西,其他类型没有,但需要它?如果我们不使用关系特性,为什么每个人仍然使用MySQL或任何关系数据库,即使他关心性能?

此类数据库已成为标准。为什么?我没有线索。我几乎没有听说有人使用非关系数据库,除了GAE中的on。

我错过了什么吗?

7 个答案:

答案 0 :(得分:11)

如果您想了解关系的含义,我推荐C. J. Date的书“SQL and Relational Theory”。

此上下文中的关系指关系。它指的是关系,它们基​​本上是导致relational model的数学理论中的表。

关系数据库普遍存在的原因在于它们是用于以最小冗余组织数据的最通用的解决方案。

使用非关系解决方案有正当理由。他们经常很好地解决数据管理的具体任务,但在其他领域却很薄弱。 SQL和关系数据库达成妥协,充分解决了更多问题,减少了弱点。

The Next-Gen Databases”中列出了当前可用的非基于关系模型的其他技术。

答案 1 :(得分:0)

它允许您规范化数据并消除重复。不是将所有数据存储在平面表中(如excel电子表格),而是将不同的数据存储在单独的表中,然后将它们相互关联。

例如,您可以将用户存储在Users表中,将产品存储在Products表中,然后使用关系表来关联哪个用户订购了哪些产品。

  

UserA - > ProductA

     

UserA - >产品B

     

UserB - > ProductA

     

UserC - >产品B

对于标准化数据,这意味着如果数据发生变化,则只需要在一个地方进行更新。如果用户更改其名称,则仅更改该用户记录。如果需要提高产品价格,则只会更改产品记录。您不必在平台上搜寻要替换的重复数据。

答案 2 :(得分:0)

我对你的问题感到困惑。你怎么建议你跟踪各种表彼此之间的关系?

例如,我有一个汽车列表和一个人员列表,我需要连接哪个人拥有每辆汽车,所以我在人员数据库中有一个car_ID列。如何建议跟踪这些关系

另外,您说要缓存“所有查询都是瓶颈”而您只想缓存“简单”查询。但是,我90%肯定制作多个小型查询会比制作几个较小的查询更加耗费资源。您也不必缓存每个组合,只需缓存实际存在的组合。在我的例子中,这样的查询出了什么问题?

SELECT person.*, car.* from person left join on car where person.car_ID = car.ID

答案 3 :(得分:0)

由于多种原因,关系数据库已成为事实上的数据库。

  1. 设置主要,外来和唯一约束可在最低级别强制执行某些业务规则,有助于确保数据集成,并使数据库关系易于理解,适用于任何级别的IT专业人员。

  2. 对于许多流程(并非所有流程)而言,正确设计的关系数据库实际上是在幕后更快。

  3. 查询关系数据库的速度相当快,而且很容易做到。

  4. 关系数据库有助于限制数据重复,从数据工程的角度来看,这是一件很棒的事情。

  5. 和其他许多人,但这些都是少数。

答案 4 :(得分:0)

如果您不使用关系,则需要将所有内容存储在包含大量列的巨型表中。或者您可以使用数据立方体(我认为?)

答案 5 :(得分:0)

Valya,如果您的应用程序中的数据不会被添加,更新或删除,那么缓存是搜索和显示它的最快方式。我很想知道这些数据是什么,每个人都急着看,但不会更新?也许一些细节会有所帮助。 我知道有人用记录缓存将他的整个数据库存储在内存中,是的,它飞了!他是我所知道的唯一可以解决这个问题的开发人员。也许你需要重新发明火箭引擎,也许你不需要。

答案 6 :(得分:0)

关系是表的数学词。列彼此相关,否则它们不在同一个表中。

例如,如果两个数字相差3倍,则两个数字相互关联。让我们写下一些数字:(0,0),(1,4),(2, - 1)等等。您会看到一组行出现,这是一个表。