Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Организация структуры БД


Страницы:   1 2

alsov ©   (2007-02-07 10:19:00) 

Приветствую, Мастера

Имеется следующий вопрос

Есть две таблички
1 - Параметр
2 - Тип параметра
3 - Значение параметра
4 - Набор справочников (допустим справочник 1, справочник 2 и т.д.)

Значение параметра может быть и строкой, и числом, и датой, и ссылкой на справочник.

Вопрос: Как сохранить эту радость в бд.

Есть 2 варианта:

1. Для каждого типа параметра сделать свою табличку, т.е. будут следующие таблички
 - Строчное значение параметра, всязано идентифицирующей всязью с таблицей Значение
 параметра (аналогично для даты и числа)
 - Связка многие ко многим Значения параметра и каждого справочника. За то, из какого
 справочника брать данные отвечает тип параметра.

Минусы:
 - Много таблиц наплодиться

Плюсы:
 - Ограничение целостности базы сохраняется

2. Значение параметра храниться в таблице Значение параметра как строка (и число, и дата,
  и ссылка на справочники). Тип значение в приложении определяется по типу параметра. Т.е.
  для ссылки в значении храниться ид значения справочника, а по типу парамтра определяется
  из какого именно справочника брать данные для связки

Минусы:
 - Целостность базы поддерживается на уровне приложения

Плюсы
 - Нету кучи таблиц связки.

Какой из вариантов лучше? Или же есть какие-ниудь другие варианты?

Заранее спасибо за любую помощь.


ЮЮ   (2007-02-08 09:48:00) [1]

Если использовать сервер как Хранилище,всю работы взвалив на клиента, то вариант - 2

Если же хочется прозрачного видения предметной области, то "Много таблиц наплодится" - это не минус, а ПЛЮС, ибо каждая таблица - это вычлененные сущ ности и их связи.
Для пердметной области "Слад всякой всячины", где всего-то и нужно, что найти что-то по имени или по значению произвольгого атрибута длстаточно таблиц из варианта [2]


evvcom   (2007-02-08 09:28:00) [2]

> [31] alsov ©   (08.02.07 09:23)
> свое поле

конечно, незачем плодить таблички там, где этого не требуется.


evvcom   (2007-02-08 09:26:00) [3]

> [30] MsGuns ©   (08.02.07 09:07)
> никто не понял задачи

Тут ты прав.

> но хором советуют триггеры, хранимки, связи

Это где ты хор увидел?

> и, как венец мироздания - уракакл как панацея от всех болячек

Во-первых, почему "какл"? Тебя бесит, что ты его не знаешь?
А во-вторых, автор сам заявил, что он делает на оракле.


MsGuns   (2007-02-08 09:25:00) [4]

>alsov ©   (08.02.07 09:23) [31]
>В том то и дело что толкового описания что будет храниться в базе еще нет. Все что мне известно я описал в посте [16]

Тогда вся эта ветка - просто пустой треп


alsov   (2007-02-08 09:23:00) [5]


Petr V. Abramov

Вот и думаю :)


Сергей М.

Для медиа данных есть отдельный реестр.


evvcom

Имеете в виду для каждого типа значений свое поле или же отдельная связаная табличка?


MsGuns

В том то и дело что толкового описания что будет храниться в базе еще нет. Все что мне известно я описал в посте [16]


MsGuns   (2007-02-08 09:07:00) [6]

Типичная ошибка новичка - не определена однозначно ни предметная область, ни инфопотоки, ни характеристики сущностей, а сразу строим "таблицы", "индексы", "справочники"..

И типична же реакция форума - никто не понял задачи, но хором советуют триггеры, хранимки, связи и, как венец мироздания - уракакл как панацея от всех болячек ;))


evvcom   (2007-02-08 08:55:00) [7]

> [24] ANB ©   (07.02.07 17:20)
> все в одно строковое поле или типизировать, а потом вытаскивать
> нужное значение в зависимости от типа параметра.

Имхо, лучше типизировать. Null значение каши не просит (ну места в смысле), так что потери на этом не будет. А в случае надобности, описанной [28], добавляется дополнительное поле, правится check constraint на допустимое значение поля типа данных и чуток запрос. Переделок минимум.


Сергей М.   (2007-02-08 08:28:00) [8]


> Те, которые описаны в вопросе


А почему только дваварианта ? И почему для 2-го варианта именно в строке ? А если завтра потребуется хранить данные типа медиа (картинки, видео, саунд и т.п.) ?


Petr V. Abramov   (2007-02-08 01:12:00) [9]

уровень геморроя при выборке из такой структуры надо б ОЧЕНЬ хорошо продумать ДО ТОГО


Danilka   (2007-02-07 20:06:00) [10]

[24] ANB ©   (07.02.07 17:20)
> в принципе идея интересная

Если тема интересная, то тоже поищи статью Тенцера. :)
Там еще рассматриваются исторические типы данных, связи объектов, еще что-то, количественный и суммовой учет, вобщем много всего.
Интересная статья.


alsov   (2007-02-07 18:50:00) [11]


ANB ©

Спасибо, учтем


ANB   (2007-02-07 17:20:00) [12]

Текс.
Значится по строкам, датам и числам на выбор - все в одно строковое поле или типизировать, а потом вытаскивать нужное значение в зависимости от типа параметра.
Как прикрутить нужный набор параметров к какому то объекту - тоже понятно - ссылкой на объект.

Самое интересное - значение параметра, как ссылка на другой объект / справочник, да еще и с сохранением ссылочной целостности (запрет ссылок на несуществующий объект, запрет удаления объекта, если на него есть ссылка).
Тут, имхо, можно без триггеров (на честных FK) выкрутиться, только если вести стержневую таблицу, содержащую все объекты.
Есно, ID этой таблицы должен крутиться одним сиквенсом => у каждого объекта/элемента справочника в БД будет уникальный ID. Я уже видел систему, построенную по такому принципу - в принципе идея интересная.
А вот тонкую подкрутку типа такой тип параметра должен ссылаться тока на тот или другой справочник - это тока триггером разрулить мона (правда, его можно сделать довольно универсальным).


alsov   (2007-02-07 17:09:00) [13]


Sergey13 [21]
> Советую тогда дождаться
> нормального ТЗ. Тема на самом деле достаточно сложная и
> интересная, но как всегда все упирается в детали.

Ясно


> Сергей М. ©   (07.02.07 16:56) [22]
> > колеблюсь между двумя вариантами хранения данныхЭто какими
> же, позвольте осведомиться ?

Те, которые описаны в вопросе


Сергей М.   (2007-02-07 16:56:00) [14]


> колеблюсь между двумя вариантами хранения данных


Это какими же, позвольте осведомиться ?


Sergey13   (2007-02-07 16:55:00) [15]

> [20] alsov ©   (07.02.07 16:53)

Советую тогда дождаться нормального ТЗ. Тема на самом деле достаточно сложная и интересная, но как всегда все упирается в детали.


alsov   (2007-02-07 16:53:00) [16]


evvcom ©
> не менее абстрактен, чем [0]. Нафига привязывать еще и некие
> параметры к некоему объекту? Ты нам втуляешь, что тебе надо
> что-то, что ты сам решил, может совсем и неверно решил.
> Если нужна помощь, расскажи внятно исходную задачу, а не
> басню про некие засекреченные объекты.


Я б с удовольствием рассказал, но это и мне пока неизвестно. Если б было все понятно стал бы я спрашивать. Я просто колеблюсь между двумя вариантами хранения данных.


Danilka © [18]
> 1. Какие операции над значениями параметров будут производится
> в БД?2. Поищи в ентернете статью Анатолия Тенцера "БД -
> хранилище объектов". Там подробно рассматривается то, о
> чем ты спрашиваешь, пример реализации, плюсы, минусы.

Спасибо поищу


evvcom   (2007-02-07 16:28:00) [17]

> [14] alsov ©   (07.02.07 15:28)
> Какой именно информации нехватает?

Вот этой:

> [15] Sergey13 ©   (07.02.07 15:33)
> если расскажешь про предметную область твоей задачи

а твой ответ

> [16] alsov ©   (07.02.07 15:42)
> Есть некиеОбследования, по результатам которых к некоему
> Объекту привязывают Значения Парметров

не менее абстрактен, чем [0]. Нафига привязывать еще и некиепараметры к некоемуобъекту? Ты нам втуляешь, что тебе надо что-то, что ты сам решил, может совсем и неверно решил. Если нужна помощь, расскажи внятно исходную задачу, а не басню про некие засекреченные объекты.


Danilka   (2007-02-07 16:14:00) [18]

1. Какие операции над значениями параметров будут производится в БД?
2. Поищи в ентернете статью Анатолия Тенцера "БД - хранилище объектов". Там подробно рассматривается то, о чем ты спрашиваешь, пример реализации, плюсы, минусы.


Сергей М.   (2007-02-07 15:57:00) [19]


> Размер пока неизвестен


Вот как только будет известен, тогда и приходи.


alsov   (2007-02-07 15:42:00) [20]

Если в двух словах то так
Есть некие Обследования, по результатам которых к некоему Объекту привязывают Значения Парметров. Параметры в свою очередь могут быть разнотипными, в том числе и ссылаться на некие справочники (например Технологическая система, Группа безопасности и т.д.)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо