Sql 三维数据库表 我们都在那里-考虑下面的例子-首先,客户端说“每个用户只有一个配置文件图片”,所以我们添加了一个字段到用户表-半年后,需求改变,用户实际上需要有N个配置图片。

Sql 三维数据库表 我们都在那里-考虑下面的例子-首先,客户端说“每个用户只有一个配置文件图片”,所以我们添加了一个字段到用户表-半年后,需求改变,用户实际上需要有N个配置图片。,sql,database,arrays,dimensions,Sql,Database,Arrays,Dimensions,现在,这似乎只有在添加新表(如user_pictures)以处理新基数1:n而不是1:1时才可能实现。这通常会变得非常复杂。每当我遇到这个问题,我想知道为什么我们不使用我们可以思考的所有三个维度。二维表在某种程度上是不完整的,如果再次提到我们的配置文件图片问题,用户表中的图片字段具有深度,并且该深度使字段成为一个数组,同时完美地表示基数1:1和1:n,该怎么办 表字段将简单地变成数组,并自动支持这两个基数-这不是什么吗?至少我会用它。现在已经有类似的产品了吗?Oracle还支持。两者似乎都符合你

现在,这似乎只有在添加新表(如user_pictures)以处理新基数1:n而不是1:1时才可能实现。这通常会变得非常复杂。每当我遇到这个问题,我想知道为什么我们不使用我们可以思考的所有三个维度。二维表在某种程度上是不完整的,如果再次提到我们的配置文件图片问题,用户表中的图片字段具有深度,并且该深度使字段成为一个数组,同时完美地表示基数1:1和1:n,该怎么办


表字段将简单地变成数组,并自动支持这两个基数-这不是什么吗?至少我会用它。现在已经有类似的产品了吗?

Oracle还支持。两者似乎都符合你的要求。尽管现在人们更喜欢将一切建模为表和关系,以保持简单和一致,因此现代RDBMS通常不支持这种东西,我也不相信它能成为标准SQL。

标准的多对多方法,多用户对多个人资料图片,三表法很容易涵盖:

表:用户
表:图片
表:用户图片

但是,如果您采用NoSQL方法,则可以存储一个用户文档(通常为JSON格式),该文档在单个表中存储该用户的配置文件图片数组


@gordy+1表示Oracle链接。我不确定是否有任何RDB假设为数组。

您描述的是一种非规范化技术(一个字段的实例有多个列),除非您完全理解违反基本关系原则的后果,否则它通常会导致流泪


当您想在字段上查询(“查找拥有此图片的用户”)时,会遇到一个典型的困难,您发现带有“and picture IN(pic1,pic2,pic3)”的SQL语句无法编制索引,并且您的优化器开始计划报复。

数据库中“事物”之间的所有可能关系(一对一、一对多、多对多)都包含在内。什么是“三维”的用例表-无论这意味着什么?一个示例用例是上面的一个,带有配置文件图片:您需要添加一个新表,但这显然很麻烦。模型关系需要更改,查询也需要相应更新,等等-涉及很多痛苦和工作。我想我们能够做得更好。二维场不是吗D,使表三维,解决这个问题?关系数据库是由一个非常坚实的基础支持的。它确保了它们都是快速和正确的。这就是为什么当其他类型的数据库在过去的几年中出现时它们仍然存在的原因之一。不要修复那些没有被破坏的东西。回到八年后,Datomic SUP。端口集合(映射、列表和向量)和许多字段的基数。