|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|
Как лучше хранить массив в базе?11.08.2015, 09:15. Показов 1448. Ответов 16
Метки нет (Все метки)
Блин, так не хотелось новую тему открывать.. Вопрос пустяковый, собсно.
Есть табличка в две колонки (номер | человеческое название). Я хочу сформировать выборку из нескольких элементов и сохранить её в базе на будущее. В каком виде её записать? [sqlite/firedac]
0
|
|
| 11.08.2015, 09:15 | |
|
Ответы с готовыми решениями:
16
Пятиуровневый массив в базе - как лучше хранить? |
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
|
| 11.08.2015, 09:29 | |
|
1
|
|
|
|
|
| 11.08.2015, 10:50 | |
|
1. можно сохранять условие фильтрации и восстанавливать рекордсет по запросу
2. можно завести таблицу2 , где достаточно хранить всего лишь ID из таблицы1 3. если фильтров несколько, то появляется таблица3 - справочник фильтров и в таблице2 еще одно поле - ID фильтра
1
|
|
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|||
| 11.08.2015, 12:22 [ТС] | |||
|
0
|
|||
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
||
| 11.08.2015, 15:14 [ТС] | ||
|
Добавлено через 17 минут Или я не то имею в виду. Фильтрация - это где? Как её сохранять?
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 11.08.2015, 15:27 | |
|
А что, Ваша БД запросы сохранять не умеет? TSQLQuery тогда, текст запроса сохраняешь как запись в ещё одной таблице, когда нужна старая выборка, то читаешь из таблицы текст запроса, скармливаешь его TSQLQuery, получаешь выборку. Или речь о том, что сами данные могли за это время измениться, а надо показать выборку именно в том виде, какой она бала тогда? То есть могли добавиться новые удовлетворяющие условию записи, или ранее существовавшие, но не удовлетворявшие условию могли стать удовлетворяющими условию, но показать старую выборку надо без них, в ранее отобранных полях могли измениться отображаемые данные и надо отобразить со старыми данными, ранее удовлетворявшие условию записи могли быть удалены, или перестать удовлетворять условию, но их всё равно надо показать? Тогда придётся сохранять в специальную таблицу. С одним, или несколькими дополнительными полями с информацией о выборке. Например, с датой и временем, состояние на которые сохраняется.
0
|
|
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
||
| 11.08.2015, 16:18 [ТС] | ||
|
Наверное, выше названые варианты наиболее оптимальны. В смысле, что других нет, кроме костыльных
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
| 11.08.2015, 16:31 | ||||||
|
Не важно, как и кем/чем условие проверяется. Как только галочки расставлены, можно составить запрос на выборку по условию, эквивалентному тому, по которому расставлены галочки. Например
0
|
||||||
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|
| 11.08.2015, 16:46 [ТС] | |
|
С новыми. И всё-таки, я настаиваю, слово "выборка" здесь имеет другое значение. Это не результат работы select, не набор кортежей. Это массив чисел. Из этого массива можно формировать столько select-ов (разных), сколько потребуется. Если нужно будет выбирать не только из FROM tab, а ещё и FROM tab2? Если нужно будет добавить к 1, 10 и 25 ещё 26? Парсить и менять сохранённый запрос? Не, так не пойдёт..
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|||||||||||
| 11.08.2015, 16:54 | |||||||||||
|
Есть твоя база, в ней таблица, а в ней какие то записи. Это не выборка, а сама генеральная совокупность. Любая её часть - выборка. Не зависимо от того, как она получена, хоть запросом, хоть вручную. А вот числа - это уже не выборка, так как не из них состоит совокупность, из которой отбираешь. Но раз с новыми, то иди по строкам, проверяй галочку и как только где то стоит, так сразу кладёшь Id нужной строки в переменную IdValue и
0
|
|||||||||||
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
||
| 11.08.2015, 17:03 [ТС] | ||
|
Если серьёзно, я скорее всего сделаю, как krapotkin написал, потому что лучших вариантов нет, а поля типа set или array в sql - ох и ах - не предусмотрено.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 11.08.2015, 17:20 | ||
|
Там есть блоб. Но эти извращения и не нужны, так как тебе так и так надо сгенерить запрос, а он текстовый.
Добавлено через 5 минут
0
|
||
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|
| 11.08.2015, 17:28 [ТС] | |
|
Слишком хитромудро. Делать из цифер запрос, выполнять его, вычитывать и получать снова цифры. Если бы я увидел такое в чужой программе... В общем, выражение "умыть глаза святой водой" как раз сюда))
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 11.08.2015, 17:41 | |
|
Ну а что здесь ещё можно придумать? Есть запрос, в него надо толи вручную добавить часть условий, а часть удалить, толи только часть добавить, то ли только часть удалить. Для этого надо увидеть таблицу с уже расставленными как раньше галочками и, отталкиваясь от них, внести изменения. Для этого придётся парсить запрос, но для получения не индетификаторов, а самих записей, значит парсить должна БД. А потом надо автоматически восстановить галочки. Это не святая вода, это требование. И его придётся выполнить.
0
|
|
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|
| 11.08.2015, 17:51 [ТС] | |
|
taras atavin, спасибо)) Вашей настойчивости и энергии можно позавидовать))
Но я воспользуюсь решением из начала топика, там не придётся ничего парсить.
0
|
|
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 11.08.2015, 17:54 | |
|
1. Это только кажется.
2. А самому тебе и так не придётся ничего парсить.
0
|
|
| 11.08.2015, 17:54 | |
|
Помогаю со студенческими работами здесь
17
Как лучше хранить картинку в базе ? Как лучше хранить(шифровать) секьюрные данные в базе?
Как лучше хранить массив? Как лучше всего хранить двумерный массив переменного размера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|