|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
|
База данных как объект13.01.2011, 12:32. Показов 1615. Ответов 15
Метки нет (Все метки)
Здравствуйте снова. Заранее извиняюсь если не в ту ветку. Вообщем пишу на С++ Builder'e программу для работы с базами. Задача в следующем - представить нужные элементы БД в виде объектов. Нужно сделать что-то типа ORM. Т.е. пользователь выбирает БД, выбирает таблицу, выбирает поле и вводит значение этого поля. Далее программа должна вытащить из базы всю нужную структуру (связи) и связанные данные и записать в структуру. И дальше программа уже будет работать с этой структурой, а не с базой данных. Проблема в том что никак не могу спроектировать нормальный вид структуры для хранения связей и данных. Вероятно даже это должны быть две связанные структуры... не знаю. Может у вас есть какие-нибудь мысли по поводу как она должна выглядеть, какие в ней/них должны быть поля, методы...? Заранее спасибо! =)
0
|
|
| 13.01.2011, 12:32 | |
|
Ответы с готовыми решениями:
15
Как называется база данных в C++ Builder
|
|
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
|
|||
| 13.01.2011, 14:35 | |||
|
Там из вопрса я понял что ты немного противоречишь себе, ты либо пиши программу для работы со структурами либо для работы с БД, работай с этими данными, результат после обработки отправляешь субд. Добавлено через 16 минут Материал из википедии: Использование реляционной базы данных для хранения объектно-ориентированных данных приводит к семантическому провалу, заставляя программистов писать программное обеспечение, которое должно уметь как обрабатывать данные в объектно-ориентированном виде, так и уметь сохранить эти данные в реляционной форме. Эта постоянная необходимость в преобразовании между двумя разными формами данных не только сильно снижает производительность, но и создает трудности для программистов, так как обе формы данных накладывают ограничения друг на друга. Системы управления реляционными базами данных показывают хорошую производительность на глобальных запросах, которые затрагивают большой участок базы данных, но объектно-ориентированный доступ более эффективен при работе с малыми объёмами данных, так как это позволяет сократить семантический провал между объектной и реляционной формами данных. ты один пишешь такую крутую прогу?
0
|
|||
|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
||||||
| 13.01.2011, 14:51 [ТС] | ||||||
|
Нене... возможно Вы меня не так поняли. Нет противоречий! Мне нужно работать с базой, но предварительно перегоняем все, что надо в объект! И в итоге я работаю именно с объектом (не знаю структура/класс - один фиг по сути), в котором будут хранится данные и связи. Ну, например, один из вариантов такой:
Добавлено через 2 минуты Да я пишу один.
0
|
||||||
|
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
|
||
| 13.01.2011, 15:11 | ||
|
Сказал примерно щас так," молекула, бактерия, человек, по сути одно и тоже"
0
|
||
|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
|
| 13.01.2011, 15:17 [ТС] | |
|
Не цепляйтесь к словам, пожалуйстa! =) Я имел ввиду что разница между структурой и классом не такая уж и большая (насколько я знаю - разница между ними только в модификаторах доступа, установленных по умолчанию) и в данном случае без разницы что использовать!
0
|
|
|
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
|
|
| 13.01.2011, 15:20 | |
|
даже низнаю чем тебе помоч, опиши задачу по подробнее, ну как на экзаменах здают.
0
|
|
|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
|
| 13.01.2011, 21:02 [ТС] | |
|
А что именно непонятно? Задача подробно описана в сообщениях 1 и 3. Есть БД. Есть пользователь, который выбирает таблицу из этой БД, выбирает поле и вводит значение этого поля. Нужно взять из БД все данные удовлетворяющие данному условию. Затем мы для этой таблицы смотрим ее связи и вытаскиваем удовлетворяющие условию данные из связанных таблиц. Эти данные нужно хранить в памяти в каком-либо удобном виде. Мне кажется удобнее всего использовать struct. И вся дальнейшая работа с этими данными уже должна происходить через этот struct. Проблема в том, что я не могу понять как должен выглядеть этот самый struct! Пример того, что я хочу получить я привел в сообщении 3, но мне он не нравится. Понятен смысл задачи?
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 13.01.2011, 23:50 | |
|
BlackStranger, а можно вопрос зачем, если это уже давно реализовано в классах, наследующих TDataSet, если уж так надо, то объекты этих классов поместите в структуру или класс, как вам уже удобнее... а вообще структура БД можно получить sql-запросами, просто надо почитать мануал по конкретной субд
0
|
|
|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
|||||||
| 14.01.2011, 12:47 [ТС] | |||||||
|
Нет, структуру самой БД получить не проблема.
Добавлено через 5 часов 12 минут Вообщем не знаю... пока остановился на таком варианте. Создаем свое n-арное дерево (или юзаем TTreeView) и в его узлы кидаем struct'ы такого вида:
0
|
|||||||
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 14.01.2011, 13:28 | |
|
BlackStranger, вы хотите сотворить подобие пакетов по работе с базами? просто непонятно, зачем вам такое городить, да и дерево связей звучит слегка сомнительно
0
|
|
|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
|
| 14.01.2011, 14:54 [ТС] | |
|
Да на самом деле я понимаю, что тут у меня уже бред пошел =)
Просто надо работать с базой как с объектом. Получили нужные данные из базы, записали в память. Все. Базу больше не трогаем.
0
|
|
|
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
|
||
| 14.01.2011, 15:29 | ||
|
0
|
||
|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
|
| 14.01.2011, 15:41 [ТС] | |
|
AlexSt, знаете есть такое слово "надо". Ну если мне нужно именно так сделать, что я поделаю! =)
Добавлено через 1 минуту В базе около 500 таблиц, но не только из-за этого я так делаю. Просто так нужно.
0
|
|
|
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
|
||
| 14.01.2011, 17:33 | ||
|
а программировать нужно правильно. Логика она такая чтука, либо она есть либо её нет. ![]() Больше ничем непомагу, так как не выполнял такие задачи. Добавлено через 1 час 47 минут Хотел бы узнать итог решения проблеммы, отпиши если несложно, как справился и тп. Самому интересно просто, ниразу не писал "толстый клиент" для работы с БД.
0
|
||
|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
|
| 14.01.2011, 19:18 [ТС] | |
|
Окей, отпишусь =)
0
|
|
|
3 / 3 / 1
Регистрация: 14.12.2010
Сообщений: 36
|
||||||
| 24.01.2011, 11:18 [ТС] | ||||||
|
Вообщем, вышеобозначенная проблема была решена созданием двух связанных структур, которые имеют следующий вид:
Сильно не критикуйте =)
0
|
||||||
| 24.01.2011, 11:18 | |
|
Помогаю со студенческими работами здесь
16
Подсобите примерами - база данных без базы данных Обновление невозможно. База данных или объект доступны только для чтения Обновление базы и ошибка: Обновление невозможно. База данных или объект доступны только для чтения.
Как подключиться к базе данных на Wpf. База данных Sql Server Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|