Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для TaSSmaN
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.01.2012, 14:35
Ответы с готовыми решениями:

Как сделать commit? Delphi + Ehlib + Firebird
Приветствую всех. Как сделать Commit, если я юзаю компоненты из Ehlib? Например,подключаю DBNavigator, MemTableEh, TDbGridEh и т.д. и...

Чем БД на Firebird лучше БД на Access?
Есть ли смысл переходить с БД Access на БД Firebird ? Если с программой работает пара пользователей не очень активно, то не критично? Я...

Как лучше переносить данные из MS SQL Server на другую СУБД - FireBird?
1) Есть СУБД FireBird , на неё крутится база данных. 2) Создали такую же базу по структуре, на MS SQL Server. (как создавали , не...

7
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
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
 Аватар для TaSSmaN
4 / 4 / 2
Регистрация: 08.03.2008
Сообщений: 41
11.01.2012, 16:10  [ТС]
Цитата Сообщение от arni Посмотреть сообщение
Сваливать все данные в одну таблицу, а потом преодолевать собою же воздвигнутые трудности - это как называется?
Вы что-либо слышали про отношение "один-ко-многим" и 3НФ денормализации отношений?

Добавлено через 2 минуты
p.s. возможно я вас не правильно понял.
Во первых уважаемый, никто данные в таблицу не сваливал, имеющаяся таблица LOAD - к счастью пуста.
Во вторых 3НФ тут есть (поля load_id, subj_id), вы её просто игнорируете, наверное потому что очень умный ))
И наконец данная задача не отрицает нормализации я лишь спрашиваю как хранить набор данных в одном поле.
К примеру нужно создать таблицу с оценками студентов по предметам, по датам и примечания к оценки, вот в электронных журналах успеваемости как раз такой метод - когда все оценки за 1-ин урок записывабтся в 1-у строку и хранятся в 1-ой записи таблицы, а не создаётся миллион записей о каждой оценке полученной Васей Пупкиным ...

И хотелось бы логичного решения!

Ой, заметил что вы модератор ANRI - извеняюсь за грубость, но наверное вы не так поняли мой вопрос

Добавлено через 2 минуты
Цитата Сообщение от Африканыч Посмотреть сообщение
Можно, конечно, запихать созданный массив в что-то типа TStringList, а потом пнуть этот список в одно blob-поле.
Только - оно Вам надо?
Лучше всего всё же помещать каждое значение в отдельное поле и создать отношение Группа->(предмет, нагрузка, часы и проч). С такой базой будет легче работать в разы.
Я как раз думал про это! Чтобы создать двемерный массив, где будет код_предмета, кол-во часов, и порядковый номер.
Но вот как записать его в базу, допустим в Blob-поле, у кого-нибудь есть информация на эту тему? буду признателен!
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
11.01.2012, 16:37
TaSSmaN, добавляя такое поле, которе инкапсилирует набор данных, вы разрушаете свою 3НФ со всеми вытекающими.
А то, что бумажный журнал напоминает вам модель много полей внутри одного на каждую запись - так это вам показалось. Просто "стоимость полей" на бумажном носителе ничтожна, а в БД - это элемент структуры, и поэтому не поддается гибкой настройке "по ходу дела", из-за чего и требуется денормализация в подчиненную таблицу, которая в данном случае будет многие-ко-многим. Т.е. там, где на бумаге мы можем расти вширь (столбцы), реляционная структура требует отпочковаться и расти вглубь (строки)
0
 Аватар для TaSSmaN
4 / 4 / 2
Регистрация: 08.03.2008
Сообщений: 41
11.01.2012, 19:36  [ТС]
Цитата Сообщение от arni Посмотреть сообщение
TaSSmaN, добавляя такое поле, которе инкапсилирует набор данных, вы разрушаете свою 3НФ со всеми вытекающими.
А то, что бумажный журнал напоминает вам модель много полей внутри одного на каждую запись - так это вам показалось. Просто "стоимость полей" на бумажном носителе ничтожна, а в БД - это элемент структуры, и поэтому не поддается гибкой настройке "по ходу дела", из-за чего и требуется денормализация в подчиненную таблицу, которая в данном случае будет многие-ко-многим. Т.е. там, где на бумаге мы можем расти вширь (столбцы), реляционная структура требует отпочковаться и расти вглубь (строки)
Хорошо! С точки зрения производительности. Я записываю строку с оценками, ну или массив нагрузки в 1-о пеле к примеру в БЛОБ, 1-ой записи, что на мой взгляд удобнее и быстрее, чем создавать n-ое количество строчек?! Или нет?!
Я бы не сказал что я нарушаю тут 3НФ, у меня же 1-о поле! Содержит 1-о уникальное значение: ну к примеру массив оценок 1А класса за 01.02.2012 или массив нагрузки группы 203!
В таком случае можно считать что и сам тип БЛОБ - приступен к 3НФ, он же её разрушает (если я туда массив забабахаю) по вашим словам получается так!?!?
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2012, 11:29
Помогаю со студенческими работами здесь

Как выгрузить данные из FireBird в Oracle?
Здравствуйте друзья. Встала такого рода задача. Есть таблицы с одинаковыми названиями и структурой у FireBird и у Oracle, данные...

Как в VBA записать данные в реестр и читать данные из реестра?
Как в VBA записать данные в реестр и читать данные из реестра office xp

Как записать в массив данные из *.TXT и и правильно рассортировать данные по ячейкам массива?
файл index.php <?php $site = (file('text.txt')); в файле text.txt находится: xxxxxx.ru xxxxx.com xxxx.org xxxx.ru...

Как лучше записать голос?
Посоветуйте прогу какую-нибудь для того чтобы записать голос. Например слова для песни.

Что лучше: Interbase или Firebird?
привет! подскажите что лучше все таки для написания клиент-сервера с передачей данных через интернет? имею знания только по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты 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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru