[英]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。
我错过了什么吗?
它允许您规范化数据并消除重复。 不是将所有数据存储在平面表中(如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
由于多种原因,关系数据库已成为事实上的数据库。
设置主要,外来和唯一约束可在最低级别强制执行某些业务规则,有助于确保数据集成,并使数据库关系易于理解,适用于任何级别的IT专业人员。
对于许多进程(并非所有进程)而言,正确设计的关系数据库实际上在幕后更快。
查询关系数据库相当快速,易学易用。
关系数据库有助于限制数据重复,从数据工程的角度来看,这是一件很棒的事情。
和许多其他人,但这些是一些。
如果不使用关系,则需要将所有内容存储在包含大量列的巨型表中。 或者你可以使用datacube(我想?)
Valya,如果您的应用程序中的数据不会被添加,更新或删除,那么缓存是搜索和显示它的最快方式。 我很想知道这些数据是什么,每个人都急着看,但不会更新? 也许一些细节会有所帮助。 我知道有人用记录缓存将他的整个数据库存储在内存中,是的,它飞了! 他是我所知道的唯一可以解决这个问题的开发人员。 也许你需要重新发明火箭发动机,也许你不需要。
关系是表的数学词。 列彼此相关,否则它们不在同一个表中。
例如,如果它们的3的倍数不同,则两个数字相互关联。让我们写下一些数字:(0,0),(1,4),(2,-1)等。你看出现一组行,这是一个表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.