PostgreSQL中的数组数组

前端之家收集整理的这篇文章主要介绍了PostgreSQL中的数组数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Postgresql的hstore类型上使用%%运算符,它将hstore(有效键值类型)转换为其元素交替为{{key,value},{key value}}的数组.

当我想返回这些扁平hstores的数组时,我得到了这个错误:找不到数据类型text []的数组类型,因为Postgresql缺少对数组数组的支持.

从好奇的角度来看,有谁知道为什么不支持这些?更重要的是,是否有针对这种情况的解决方案?

目前我将结果连接成一个字符串(逗号分隔)并在应用程序(C#和NPGsql)端解析它们.但是,这种方法感觉不太对,我希望能够将行读回作为.NET数组的数组或键值数组等.

非常感谢.

From a curiosity standpoint,does anyone know why these are not supported?

一个通用的答案是因为数组本质上是反关系的.删除重复值是你如何达到1st normal form.从关系理论的角度来看,重复组的重复组似乎是非常疯狂的.

通常,关系正确的事情是为重复值提取表.所以,如果你建模这样的东西:

CREATE TABLE users (
  id integer primary key,name varchar,favorite_colors varchar[],...
);

你有必要像以下那样重新定义这种关系:

CREATE TABLE users (
  id integer primary key,...
);

CREATE TABLE favorite_colors (
  user_id integer references users,color varchar
);

甚至:

CREATE TABLE users (
  id integer primary key,...
);

CREATE TABLE colors (
  color varchar primary key
);

CREATE TABLE favorite_colors (
  user_id integer references users,color varchar references colors,primary key (user_id,color)
);

Hstore支持许多功能,其中许多功能可以很容易地将其集成到关系世界观中.我认为解决问题的最简单方法是使用每个函数将hstore值转换为关系,然后可以像普通的值一样使用它们.这就是你如何解决在其他数据库中有多个值的问题:查询和使用结果集.

猜你在找的Postgre SQL相关文章