【问题标题】:Is it possible to declare an array data type column? SQL是否可以声明数组数据类型列? SQL
【发布时间】:2015-08-20 06:35:37
【问题描述】:
CREATE TABLE user (
...
columnName int ARRAY[7][7] DEFAULT null,
...
)

我必须创建一个表,其中一个列必须存储一个 7x7 数组,但我想不通!

在 SQL 中甚至可能吗?

-- 更新 所以,我决定要欺骗它并将其存储为文本,然后使用代码处理该字符串

【问题讨论】:

  • 有些数据库,比如postgres支持这个,但是从关系设计的角度来看,从长远来看并不是一个好主意。
  • 这不是 SQL 标准的一部分,由字符组成的字符串除外。一些数据库可能支持数组或类似的结构。
  • 在标准 SQL 中,设计一种数据类型用于保存多个值 - 表。您可以用两列为索引构建一个有意义的名称,并将它们限制为仅包含 0-6(或 1-7,取决于您的前景)之间的值,一列具有有意义的名称用于 values,然后将外键的附加列返回到user 表。
  • 也许您想阅读this... 这是解决问题的一种方法...
  • 您的数据库是否会与此列有任何交互,接受存储它吗?如果答案是肯定的,那么这是一个糟糕的想法。

标签: sql arrays database


【解决方案1】:

SQL 2003(以及在较小程度上的 SQL 99)提供数组类型,请参见此处的示例: http://farrago.sourceforge.net/design/CollectionTypes.html 我已经在 PostgreSQL 中广泛使用它们来简化我的设计。对于尚不支持数组语义的客户端,可以提供“取消嵌套”数组的视图。

【讨论】:

    猜你喜欢
    • 2020-03-31
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多