【发布时间】:2011-02-04 19:03:30
【问题描述】:
关于如何实现数组,我似乎有两种选择,我想知道我应该选择哪一种:
使用 ARRAY 数据类型并(据我了解)有效地将数据对象序列化到数据库中(在我的情况下,它们只是包装的原始类型;不知道另一种方法可以使这项工作)。
为每个数组项使用单独的表和外键映射。
如果您有这方面的经验(尤其是 H2),您会推荐哪个?
【问题讨论】:
标签: java arrays relational-database choice h2
关于如何实现数组,我似乎有两种选择,我想知道我应该选择哪一种:
使用 ARRAY 数据类型并(据我了解)有效地将数据对象序列化到数据库中(在我的情况下,它们只是包装的原始类型;不知道另一种方法可以使这项工作)。
为每个数组项使用单独的表和外键映射。
如果您有这方面的经验(尤其是 H2),您会推荐哪个?
【问题讨论】:
标签: java arrays relational-database choice h2
数组字段在数据库中通常是禁忌,它经常违反规范化原则。根据数据的用途,您需要将它们存储在与父表具有 fk 关系的单独表中,或者存储在独立表中(当单个项目可能多次出现时更好,即 n-m 关系代替n-0) 并使用 fk-fk 连接表来处理它们与父表之间的关系。
在 SQL/JDBC 中,您通常可以将它们作为数组SELECT,具体取决于数据库是否支持 SQL 构造/函数。例如,在 PostgreSQL 中,您可以为此使用 ARRAY() 函数,您可以在 Java/JDBC 中使用 ResultSet#getArray() 获得该函数。
【讨论】: