什么是关系数据库?[关闭]


9

我主要是系统管理员,除了安装数据库,设置帐户,授予特权等等之外,我不直接使用数据库。我意识到,如果老板向我走来,问:“什么是关系数据库?” 我可能无法给出令人满意的答案...我可能会对按类别存储和组织的数据有所含糊,您可以使用特殊的编程语言(例如SQL)进行查询。

那么有人可以为关系数据库提供一个很好的“老板答案”吗?也许与仅将数据存储在文件服务器上有何不同?巧妙但可访问的类比并解释表,列,记录和字段的奖励积分。我将“老板答案”定义为针对非技术人员的一个简短的(也许是两个)段落说明……主要是您的老板,在极少数情况下,他们实际上问您一整天在做什么。


2
不确定serverfault是否适合此问题,尽管确实有用。也许是DBA.SEProgrammers.SE
2011年

1
为什么您的老板会问这样一个问题,更重要的是,它与系统管理有什么关系?
John Gardeniers

1
@John Gardeniers,它可能属于这里,因为许多“系统管理员”都戴着“数据库管理”帽子,这意味着他们对RDBMS的工作原理有很好的了解。至于老板为什么问他们的问题,谁知道,但是知道如何清楚地传达概念是IMO的一件好事。
Zoredache

1
@Zoredache,在我的工作中,我戴着很多帽子。这并不意味着他们都是SF的话题。
John Gardeniers

下面的答案非常好,但是请记住,您可以具有非关系数据库(例如btrieve),并且仍然可以通过适当的应用程序逻辑维护规范化数据之间的关系。
马克·亨德森

Answers:


16

关系数据库不仅仅存储数据,它还存储数据之间的关系,并使使用这些关系变得容易(容易)。在关系数据库术语的早期,表被称为“关系”,因为它们存储数据的相关位(字段,现在为列),以及该关系与其他关系之间的关系。

规范化是简化关系的行为:“使一切尽可能简单,但不要简单”。(Alan Perlis)有时“ ...但没有更简单”表示我们没有存储完全归一化的内容,因为“更简单”最终变得更加复杂。(您可以从邮政编码中得出状态,但是为什么要打扰呢?)


10

关系数据库是一种结构化数据的方法,因此可以将单个事实存储在单个位置。因此,如果John和Jane Doe都在同一家公司工作,则只能将公司唯一的详细信息存储在一个地方(表)。您将把John和Jane的唯一数据存储在另一个地方,并将John和Jane与公司的关系存储在第三位。在理想情况下,这应该意味着,如果公司传真号码更改,则只需要修改一个字段/行。

请理解,并非RDBMS中托管的所有数据库都已正确规范化。出于性能和其他原因而做出折衷。

请参阅有关数据库规范化的文章。 http://en.wikipedia.org/wiki/Database_normalization


4

区分关系数据库系统有两个主要概念。首先是存储项目之间的关系。这就是数据的表模型,通过电子表格的类比来解释。RDBMS比电子表格更加复杂,因为在表或工作表之间具有许多引用(取决于所用类比的哪一侧)是更容易且普遍的做法。

第二个是RDBMS实施事务的想法,即ACID属性

  • 原子性
  • 一致性,
  • 隔离,以及
  • 耐用性

关系模型允许包括许多复杂的关系,对其进行查询,对其进行排序,对其进行分组等等。事务模型确保事务完全或完全不发生,从而保持关系模型的一致性和准确性。好吧,至少可以进行正确的编程来保持这种状态。


3

关系数据库就像一个包含许多工作表的Excel工作簿,以及一个周围的软件环境来进行性能优化(例如索引和缓存),同时强制许多用户进行安全访问,并允许您有效地查看可能分散的数据在许多不同的工作表上。


1

关系数据数据库是用于存储和检索存储在关系模型中的数据的工具。

根据少量数据(取决于您阅读的书,4或5条规则)构建关系数据模型,以确保可以以一致的方式访问数据,从而可以验证设计的正确性并允许数据库管理系统(DBMS)可以完成快速检索数据的大部分工作。它还提供了用于正式记录数据结构的工具-实现数据库本质上实现了大多数文档。

大多数人不理解为什么正确性很重要-这意味着在解决方案的开发中不太可能引入错误-并且(e.hg)从事类似领域工作的2个不同的程序员不太可能重复工作。

作为与应用程序前端分离的实体,并且具有一致的数据结构视图,数据库管理系统的使用允许在前端使用不同的工具来实现不同的目的-因此您可以进行更多利用解决方案时,需要使用现成的组件。

除了关系模型以外,还有其他模型可用于存储数据-但据我的经验,没有其他模型在其简单性,灵活性以及用于开发和管理数据的工具的可用性方面可与之匹敌。


1

100%非技术性答案:

关系数据库是一个存储数据的地方,其方式是最大程度地减少冗余并允许您轻松地搜索数据。

假设有一个宠物商店的数据库。商店有商品,有顾客,有销售。如果我们将其放在Excel中,则可以将其用于列:

客户名称| 客户电话号码| 客户地址| 购买的商品| 价格| 日期

第一位客户Smith夫人购买猫粮:

客户名称| 客户电话号码| 客户地址| 购买的商品| 价格| 日期
史密斯夫人| 123-555-1234 | Main St 10 | 猫粮| $ 15 | 2011-03-11

然后史密斯太太也想要猫玩具:

客户名称| 客户电话号码| 客户地址| 购买的商品| 价格| 日期
史密斯夫人| 123-555-1234 | Main St 10 | 猫粮| $ 15 | 2011-03-11
史密斯夫人| 123-555-1234 | Main St 10 | 猫玩具| $ 1 | 2011-03-11

她基本上每两周左右回来一次,并购买相同的商品。使用这种方法,您会复制很多信息,这可能会导致错误。您也不能在其中存储库存,库存必须是整个其他Excel工作表,并且每次销售都必须更新该工作表。

使用数据库,我们可以有三个单独的实体:客户(及其信息),项目(具有描述和价格)和销售(客户与项目之间的链接,以及日期和数量)。


另外,提一下这点非常重要:pinaldave.com/blogfolder/dilbert5.jpg
MPelletier 2011年

1

这里有一些很好的技术答案。但是我的老板都不懂!

我将从一个非常简单的解释开始-'如果将数据保存在文件中,它将显示为一长串。关系数据库更像地图或图形一样保存数据,因此地图的不同部分相互链接....'

还有一个例子-“ ....例如,您的姓名链接到您的地址,而该地址又可能链接到您的城市。”

他关心的是商业利益,紧随其后的是-“这样做的好处是,编写代码以获取复杂的数据要便宜得多,例如“找到住在西雅图的姓史密斯的所有人”。关系数据库也非常可靠和快速。

最后以信誉声明结尾-“关系数据库已经存在了很多年,是非常成熟的技术。我们特定的产品是[这里的产品名称]'。


0

我的老板是DBA,但用外行的话来说:

考虑一下Excel中的两个表,然后使用LOOKUP函数将一个表中的项目引用到另一个表。现在将其至少扩大10倍。

那是关于某些人员和工作的计算机级别。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.