Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

Как правильно сохранить объекты в базе?   Найти похожие ветки 

 
miwa ©   (2004-08-14 19:18) [0]

Сразу уточню, что работаю с firebird.
Представляю себе несколько путей:
1. Внешней процедурой.
Процедура получает объект в качестве параметра, заполняет его полями параметры запроса и отсылает на сервер ExecSQL. Не нравится тем, что это подход "в лоб". Не знаю почему, но он мне кажется неправильным. Не соответствующим ни ООП ни современным БД.
2. Методом объекта.
В объекте пишется специальный метод, который сохраняет объект. Этот подход мне не нравится тем, что в модуль реализации класса автоматом добавляется пара модулей для оперирования, например, запросом TIBQuery.
3. Stored procedure.
А этот подход я просто не представляю как реализовывать. Как передать процедуре объект целиком, а не просто кучу свойств (так как в этом случае мы просто будем иметь вариацию первого или второго подхода).


 
Desdechado ©   (2004-08-14 20:30) [1]

если тебе нужно просто хранение данных без всяких там:
сортировок,
выборок с объединением других таблиц по свойствам объекта,
т.п.
то можешь просто сохранять его в BLOB-поле методом TPersistent.SaveToStream


 
jack128 ©   (2004-08-14 22:26) [2]


> TPersistent.SaveToStream
а что, в семерке такой метод появился?


 
miwa ©   (2004-08-14 23:28) [3]

Не, как раз нужны и выборки и сортировки и весь остальной комплект, который предоставляет "среднестатистическая" БД. А еще этих объектов ожидается дысячи-десятки тысяч. И воспомагательной информации об объектах, непосредственно завязаной на них (на ID тоесть) - уже на сотни тысяч записей.


 
Desdechado ©   (2004-08-15 14:48) [4]

2 jack128
Нет, но что мешает его написать? Тем более, что там предусмотрен для этого виртуальный метод DefineProperties. Я ж просто направление показал.

2 miva
Т.е. тебе надо, например, сделать выборку объектов, у которых цвет красный, но они не железные и не бытовая техника? Тогда в БЛОБе не катит, конечно.
А что тебя во втором методе смущает? То, что подключаешь другие модули? Ну, так это не страшно. Объект должен знать, как себя сохранять, раз уж он должен быть сохранен в БД. И должен знать, как себя считать и инициализировать. Все в порядке вещей. Тем более если объекты разных классов и каждый имеет свои особенности сохранения. Если же класс один, то тем более тревога не ясна.
Объемы в 10-100 тыс смешные для SQL-серверов.


 
miwa ©   (2004-08-16 21:50) [5]


> Т.е. тебе надо, например, сделать выборку объектов, у которых
> цвет красный, но они не железные и не бытовая техника?

Да, что-то типа того :о))


> Все в порядке вещей. Тем более если объекты разных классов
> и каждый имеет свои особенности сохранения. Если же класс
> один, то тем более тревога не ясна.

Не, ну почему же не ясна - малое количество и низкое качество располагаемых знаний ;о((. Относительно, конечно ;о)).


> Объемы в 10-100 тыс смешные для SQL-серверов.

Знаю, но для самостоятельной обработки это уж слишком. Поэтому и остановился на SQL.

Значит, говорите, ничего зазорного нету в том, что я в свой u_classes (так он у меня называется, модуль-то) напишу uses DB, IB, IBCustomDataSet, IBQuery, IBDatabase? Что ж. Если так, тогда всем спасибо за внимание.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.021 c
3-1092635311
Shap
2004-08-16 09:48
2004.09.12
DBGrid + DBNavigator


1-1093761590
demidofff
2004-08-29 10:39
2004.09.12
Глобальные переменные в потоках


9-1085025564
маг Гыр
2004-05-20 07:59
2004.09.12
Фон в игре


14-1093492515
Zloy
2004-08-26 07:55
2004.09.12
Какой язык подходит для создания собственной ERP-системы???!!!!!


1-1093858633
Zhekson
2004-08-30 13:37
2004.09.12
TAdvStringGrid trial version 2.8.1.1 Aug, 2004





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский