有双向关系数据库吗?

时间:2016-10-17 22:13:24

标签: database relational-database nosql

我想创建一个服装数据库,其中来自诸如' tops'等表格中的项目。或者'底部' (裤子,裙子)可以相互匹配,也可以与其他桌子上的物品搭配,如帽子或鞋子。

我希望能够在两个方向上将所有桌子相互关联起来(每个裙子都有很多上衣,每个上衣都有许多裤子等),我希望每张桌子彼此相关。例如,我想查询这些裤子的哪些物品看起来很不错'并查看衬衫,鞋子等清单。

使用关系数据库需要每个关系的中间表,这会产生大量的表。

我认为我可以用NoSQL数据库做到这一点,但是当我学习它们的时候,它们似乎并不合适。我错了吗?

是否存在双向关系数据库,它们被称为什么?

2 个答案:

答案 0 :(得分:1)

  

是否存在双向关系数据库,它们被称为什么?

它们被称为“关系数据库”。

查询关系数据库没有方向性。关系数据库中的每个表(基表或查询结果)表示感兴趣的应用程序关系。表包含以这种方式相关的值行。 (当值的子行标识应用程序实体时,关系是关于值和应用程序实体。)基表设置为满足其关联应用程序关系的值行。查询返回满足其应用程序关系的值的行,这些行已根据基表关系表示。

假定每个基表表示必要的应用程序关系,则定义足够的基表来描述整个应用程序状态。要说桌子的数量是荒谬的是荒谬的。通过规范化建议将某些表/关系分解为其他表/关系不仅使描述更简单,而且减少了操作中的冗余和复杂性。

关系数据库中的外键约束可以合理地称为定向。他们告诉DBMS,一个地方某些列下的值必须在其他地方的某些列下显示为值。在ER(实体 - 关系)建模中,这些被描绘为来自实体的线和识别它们所参与的关系的关系。(后者是您的“中间表”。)但是哪些外键约束保持对查询组成没有影响

您需要阅读关系数据库简介&数据库管理系统。 (避免基于ER建模和ORM(对象关系映射)方法的演示文稿,do not really understand the relational model.)(NoSQL接近don't either。)

答案 1 :(得分:-2)

它们被称为对象关系数据库 这是一个很好的问题,根据我的经验,在 ERD 图表和关系数据库中暗示了方向。在 RDBMS 中,您总是定义多对->一(普通情况下一对->一)关系。关系的多方面,又名孩子,引用一方,又名父母,你用外键约束来实现它。从技术上讲,您必须访问索引,获取一侧的主键记录,然后访问该记录以获取更多信息。

除非我们谈论对象关系 DBMS,例如 Postgres、Intersystems Cache 等,否则您不能反过来这样做。这些 DBMS 允许您定义两个实体(表)之间的双向关系。在这种情况下,以相反的方式访问记录,即 One--To-->Many 是通过使用引用数组(子项)来实现的。在对象关系映射编程模块库中,您的类以我们在此处描述的相同方式相互引用。

警告:严格来说,IT 市场中的大多数 RDBMS 都不是关系数据库管理系统,考虑空值、重复记录等,其中许多允许的功能打破了关系的定义。另一方面,您可能拥有双向关系数据库(和 RDBMS)。关系理论完美地允许任何属性为任何类型,包括任何类型的数组类型。但在实践中,由于供应商对 DBMS 的具体实施,我们观察到一些限制。有关不同类型的 DBMS 的讨论,请参阅评论。