|
4 / 4 / 2
Регистрация: 08.03.2008
Сообщений: 41
|
|
Delphi и FireBird (как лучше записать данные)11.01.2012, 14:35. Показов 2301. Ответов 7
Метки нет (Все метки)
Всем привет! Интересует следующий вопрос:
Есть БД fdb в ней есть таблица Load(нагрузка) с полями load_id, subj_id, hours, numer_pp. (ид нагрузки, ид предмета, кол-во часов по данному предмету и порядковы номер). В учебном заведении такая нагрузка формируется для каждой группы и соответственно различается. Я считаю что легче эти данные записать в массив (числовой), т.е. создать массив нагрузки для каждой группы, а затем записать его в строковое поле или в блоб. Знаю, что такое можно сделать в php, там есть спец. библиотека которая шифрует и дешифреут данные в строковую переменную, которая потом записыается в строковое поле. (что по словам php-ов ОЧЕНЬ удобно!) А вот в delphi есть что-нибудь похожее? или ваш вариант? Заранее спасибо!!!
0
|
|
| 11.01.2012, 14:35 | |
|
Ответы с готовыми решениями:
7
Как сделать commit? Delphi + Ehlib + Firebird Чем БД на Firebird лучше БД на Access? Как лучше переносить данные из MS SQL Server на другую СУБД - FireBird? |
|
|
|
| 11.01.2012, 14:43 | |
|
Сваливать все данные в одну таблицу, а потом преодолевать собою же воздвигнутые трудности - это как называется?
Вы что-либо слышали про отношение "один-ко-многим" и 3НФ денормализации отношений? Добавлено через 2 минуты p.s. возможно я вас не правильно понял.
0
|
|
|
7 / 7 / 1
Регистрация: 25.11.2011
Сообщений: 40
|
|
| 11.01.2012, 15:23 | |
|
Можно, конечно, запихать созданный массив в что-то типа TStringList, а потом пнуть этот список в одно blob-поле.
Только - оно Вам надо? Лучше всего всё же помещать каждое значение в отдельное поле и создать отношение Группа->(предмет, нагрузка, часы и проч). С такой базой будет легче работать в разы.
0
|
|
|
4 / 4 / 2
Регистрация: 08.03.2008
Сообщений: 41
|
|||
| 11.01.2012, 16:10 [ТС] | |||
|
Во вторых 3НФ тут есть (поля load_id, subj_id), вы её просто игнорируете, наверное потому что очень умный )) И наконец данная задача не отрицает нормализации я лишь спрашиваю как хранить набор данных в одном поле. К примеру нужно создать таблицу с оценками студентов по предметам, по датам и примечания к оценки, вот в электронных журналах успеваемости как раз такой метод - когда все оценки за 1-ин урок записывабтся в 1-у строку и хранятся в 1-ой записи таблицы, а не создаётся миллион записей о каждой оценке полученной Васей Пупкиным ... И хотелось бы логичного решения! Ой, заметил что вы модератор ANRI - извеняюсь за грубость, но наверное вы не так поняли мой вопрос ![]() Добавлено через 2 минуты Но вот как записать его в базу, допустим в Blob-поле, у кого-нибудь есть информация на эту тему? буду признателен!
0
|
|||
|
|
|
| 11.01.2012, 16:37 | |
|
TaSSmaN, добавляя такое поле, которе инкапсилирует набор данных, вы разрушаете свою 3НФ со всеми вытекающими.
А то, что бумажный журнал напоминает вам модель много полей внутри одного на каждую запись - так это вам показалось. Просто "стоимость полей" на бумажном носителе ничтожна, а в БД - это элемент структуры, и поэтому не поддается гибкой настройке "по ходу дела", из-за чего и требуется денормализация в подчиненную таблицу, которая в данном случае будет многие-ко-многим. Т.е. там, где на бумаге мы можем расти вширь (столбцы), реляционная структура требует отпочковаться и расти вглубь (строки)
0
|
|
|
4 / 4 / 2
Регистрация: 08.03.2008
Сообщений: 41
|
||
| 11.01.2012, 19:36 [ТС] | ||
|
Я бы не сказал что я нарушаю тут 3НФ, у меня же 1-о поле! Содержит 1-о уникальное значение: ну к примеру массив оценок 1А класса за 01.02.2012 или массив нагрузки группы 203! В таком случае можно считать что и сам тип БЛОБ - приступен к 3НФ, он же её разрушает (если я туда массив забабахаю) по вашим словам получается так!?!?
0
|
||
|
|
|
| 11.01.2012, 20:13 | |
|
TaSSmaN, современные железки даже не промышленного/серверного, а домашнего варианта за секунды перемалывают таблицы-миллионники при грамотном покрытии индексами и проектировании.
Если количество нормализованных записей не будет упираться в десятки или сотни миллионов штук, значит разговоры о производительности скорее всего беспочвенны. Кстати, работа с БЛОБами скоростью не отличается, хотя бы потому, что они хранятся на отдельных страницах БД и их все равно придется дофетчивать, пусть не вам в запросе, а серверу прозрачно от вас. Кроме того, работа ведется всегда с полным содержимым блоба (сколько вы туда намереваетесь засунуть?), что может аукнуться на операциях обновления, где вам вместо атомарного апдейта одного int-значения придется собирать целую коллекцию и передавать её по сети. Это и долго, и не гибко. Такое проектное решение будет вас тяготить со временем.
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 13.01.2012, 11:29 | |
|
Большое кол-во полей (особенно стринговых) в записи - тормоз в большинстве случаев - раз,
Два - ведет к неэффективности базы (в записи с 1000 полями заполнено только 5, остальные - лишний груз, что не столько действует на память, которая не занимается пустыми полями, сколько жутко тормозит выборки поскольку индексы вводить на все 1000 полей - дело пьяное) А уж если 1000 блобов в записи, то это полная хана. arni говорит дело, а Вы, уважаемый ТС, в [4], как говорится, волну гоните.
0
|
|
| 13.01.2012, 11:29 | |
|
Помогаю со студенческими работами здесь
8
Как выгрузить данные из FireBird в Oracle? Как в VBA записать данные в реестр и читать данные из реестра? Как записать в массив данные из *.TXT и и правильно рассортировать данные по ячейкам массива? Как лучше записать голос? Что лучше: Interbase или Firebird? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|