Массивы реляционных баз данных (H2, Java) - PullRequest
3 голосов
/ 06 апреля 2010

У меня, кажется, есть два варианта реализации массивов, и я хочу знать, с какими я должен идти:

  • Используйте тип данных ARRAY и (из того, что я понимаю) эффективно сериализуйте объекты данных в базу данных (которые в моем случае являются просто примитивными типами; не знаю другого способа заставить это работать). 1005 *

  • Используйте отдельную таблицу и карту с внешними ключами для каждого элемента массива.

Если бы у вас был опыт (особенно с H2), что бы вы порекомендовали?

1 Ответ

3 голосов
/ 06 апреля 2010

Поля массива часто запрещены в базах данных, это часто противоречит принципам нормализации. В зависимости от назначения данных их нужно хранить либо в отдельной таблице с отношениями fk к родительской таблице, либо в независимой таблице (лучше, когда один элемент может встречаться более одного раза, то есть вместо отношения n-m). n-0) и используйте таблицу соединений fk-fk для связи между ними и родительской таблицей.

В SQL / JDBC вы можете, однако, часто SELECT представлять их как массив, в зависимости от того, поддерживает ли БД конструкцию / функцию SQL или нет. Например, в PostgreSQL вы можете использовать для этого функцию ARRAY(), которую вы можете получить в Java / JDBC, используя ResultSet#getArray().

...