Хранение массива целочисленных значений в SQL Server - PullRequest
7 голосов
/ 27 октября 2010

Я хочу сохранить массив целочисленных значений в таблице базы данных SQL (SQLServer 2005), если это возможно, используя один столбец.

Целочисленный массив будет иметь длину 7560 значений.

Я использую источник данных объекта, тип данных должен быть совместим с сгенерированными параметрами адаптера таблицы.

спасибо за помощь:)

Ответы [ 4 ]

16 голосов
/ 27 октября 2010

У вас есть как минимум два варианта:

  • Сохраните его как список значений через запятую.
  • Используйте отдельную таблицу и сохраняйте одно значение в строке, а внешний ключ указывает на вашу таблицу.

Если вы хотите нормализовать базу данных, вам следует выбрать второй вариант.

5 голосов
/ 28 октября 2010

Сделай правильно: 1NF не предусматривает повторяющихся значений. Каждый элемент в предложенном вами массиве из 7560 элементов принадлежит отдельной строке.

Помещая каждый элемент в свою собственную строку, вы даете СУБД возможность делать то, чего не может делать иначе, например: вычислять статистику на множестве, проверять, что каждый элемент соответствует правилам домена, вычислять различия между двумя наборами рассчитывать / выбирать наборы, разделяющие некоторые характеристики.

Я получу миллионы строк (возможно, более 50 миллионов). Я не уверен, может ли база данных справиться с этим без проблем с производительностью.

Это не особенно много, и вам не придется иметь дело со всеми 50 миллионами большую часть времени. Подсчитайте для себя, сколько обращений необходимо для поиска двоичного дерева, чтобы найти одну запись из миллиарда. Ответ может вас удивить.

0 голосов
/ 01 мая 2015

Я бы сохранил его в значении, разделенном запятой, если данные НЕ СВЯЗАНЫ с какой-либо другой таблицей (например, со значениями, которые вы хотите обработать каким-либо образом), если они (например, продукты в счете), вы должны создать другоестол с внешним ключом.

Greatings

0 голосов
/ 27 октября 2010

Только если вам нужно! Вы можете легко создать другую таблицу, которая содержит внешний ключ к вашей таблице и столбец int.

Если вы настаиваете на том, чтобы сохранить его в SQL Server в качестве столбца, вы должны использовать тип столбца IMAGE или VARBINARY (MAX), поскольку длина данных превышает 8 КБ. Это будет хранить каждое int как 4-байтовое двоичное значение.

Что такое ObjectDataSource?

...