Проектирование универсальной структуры БД |
Здравствуйте, гость ( Вход | Регистрация )
Проектирование универсальной структуры БД |
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 |
А смысл создавать новый язык, если уже есть готовые, нужно только реализовать тот самый мэпинг... систему соотношения, во) Сразу оговорюсь, я не являюсь профессионалом в данной области. Я не говорил что нужно создать новый язык, я говорил, что похоже на создание нового языка, т.е логика размышлений похожа. То на что я глядел из ORM (глядел, не работал, сейчас даже названий не вспомню) реализовывали немного другой подход. В процессе проектирования описывались структуры данных, потом запускался скрипт создания базы для необходимых объектов. Юрию нужно добавление новых атрибутов в рантайме. Если есть готовые ORM реализующие это, подскажите Юрию, скорее всего для C++. Как-то все остановились на "для каждого типа данных использовать отдельную таблицу", я предложил свои 5 коп. |
|
|
Текстовая версия | Сейчас: 27.12.2024, 10:22 |