繁体   English   中英

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

[英]What does 'relational' in 'relational database' mean for us?

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

但是我无法理解作为Web开发人员对我来说意味着什么!

据我所知,带有连接和嵌套选择的查询可以降低性能(尤其是具有数十个连接的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。

我错过了什么吗?

如果你想了解关系是什么意思,我推荐CJ Date的“ SQL和关系理论 ”一书。

在此上下文中的关系不是指关系。 它是指关系 ,这种关系基本上是被称为在数学理论,导致了哪些表关系模型

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

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

目前可用的其他不基于关系模型的技术列在“ 下一代数据库”中

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

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

UserA - > ProductA

UserA - > ProductB

UserB - > ProductA

UserC - > ProductB

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

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

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

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

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

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

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

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

  3. 查询关系数据库相当快速,易学易用。

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

和许多其他人,但这些是一些。

如果不使用关系,则需要将所有内容存储在包含大量列的巨型表中。 或者你可以使用datacube(我想?)

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM