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