crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3  
Ответить в данную темуНачать новую тему
> Проектирование универсальной структуры БД
Sokoloff
  опции профиля:
сообщение 4.12.2009, 1:41
Сообщение #21


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Как уже сказали это будет медленнее чем база написанная под конкретную задачу.
На мой взгляд, это похоже на создание нового языка программирования. Я бы шел снизу вверх, и мне это видится примерно так:

Базовые типы.
Строка, целое, десятичное, дата, время и.т.д. Представлены таблицами вида [ID, Value].

Ссылки (указатели)
Каждая таблица имеет свой TableID. Ссылка это пара TableID и ID записи в соответствующей таблице. Ссылка может ссылаться на все типы, включая массивы и объекты.
Если нужны ссылки на ссылки, то к базовым классам добавляем таблицу ссылок вида [ID, RefTableID, RefID] .

Массивы
В таблице массивов хранятся не значения, а ссылки на значения, поэтому в массиве можно хранить элементы разных типов. Вид таблицы: [ID, ArrayID, Index, RefTableID, RefID]. ArrayId - поле по которому можно отделить элементы одного массива от другого.

Объекты или коллекции
Наборы именованных ссылок, вид [ID, ObjectID, Key, RefTableID, RefID] . В твоем случае конденсаторы и резисторы представляются именно ими. Ссылка может ссылаться на что угодно даже на другой объект, т.е. мы можем хранить деревья, строить списки и.т.п.

Классы
Если хотим иметь более строгие объекты, то создаем еще таблицу в которой перечислены поля объектов, их типы и опции полей. Что-то типа [ID, ObjectID, FieldType(храниться TableID), Required ...].


Работать напрямую с таблицами нельзя, нужно писать хранимки. Для поддержания целостности, нужны триггеры.


IMHO получается довольно универсальная и расширяемая система, но по поводу скорости работы вопрос.
Это не готовый проект, а только мои размышления.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Novak
  опции профиля:
сообщение 4.12.2009, 11:48
Сообщение #22


Активный участник
***

Группа: Участник
Сообщений: 319
Регистрация: 15.3.2008
Из: Замкадыш
Пользователь №: 121

Спасибо сказали: 28 раз(а)




Репутация:   6  


А смысл создавать новый язык, если уже есть готовые, нужно только реализовать тот самый мэпинг... систему соотношения, во)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 4.12.2009, 12:54
Сообщение #23


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(Novak @ 4.12.2009, 11:48) *
А смысл создавать новый язык, если уже есть готовые, нужно только реализовать тот самый мэпинг... систему соотношения, во)


Сразу оговорюсь, я не являюсь профессионалом в данной области.

Я не говорил что нужно создать новый язык, я говорил, что похоже на создание нового языка, т.е логика размышлений похожа.

То на что я глядел из ORM (глядел, не работал, сейчас даже названий не вспомню) реализовывали немного другой подход. В процессе проектирования описывались структуры данных, потом запускался скрипт создания базы для необходимых объектов. Юрию нужно добавление новых атрибутов в рантайме. Если есть готовые ORM реализующие это, подскажите Юрию, скорее всего для C++.

Как-то все остановились на "для каждого типа данных использовать отдельную таблицу", я предложил свои 5 коп.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 1:39