Справочники в одной таблице

Модераторы: kdv, CyberMax

Ответить
Батор
Сообщения: 21
Зарегистрирован: 11 мар 2007, 23:09

Справочники в одной таблице

Сообщение Батор » 26 мар 2007, 00:19

пришел на новое место работы и в текущем проекте столкнулся с неожиданным для меня приемом - большая часть справочников хранится в одной таблице. (всего таблиц, больше 100)

структура такая:

uid - уникальный суррогатный ключ
id_type - код справочника
id - код в справочнике
text - наименование
full_text - полное наименование
note - примечание

т.к. с таким приемом столкнулся впервые, то вопрос: какие преимущества и недостатки в таком методе?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 26 мар 2007, 07:46

При появлении нового справочника не приходится корежить структуру БД и приложение. Недостаток - чуть более сложные запросы если у элемента справочника еть доп.атрибуты.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 26 мар 2007, 11:51

Возможна самодокументируемость справочника.
Можно написать запрос, возвращающий всю структуру справочников, для отчёта.

Батор
Сообщения: 21
Зарегистрирован: 11 мар 2007, 23:09

Сообщение Батор » 26 мар 2007, 23:18

Dimitry Sibiryakov писал(а):При появлении нового справочника не приходится корежить структуру БД и приложение. Недостаток - чуть более сложные запросы если у элемента справочника еть доп.атрибуты.
и ссылочная целостность только на триггерах?
WildSery писал(а):Возможна самодокументируемость справочника.
Можно написать запрос, возвращающий всю структуру справочников, для отчёта.
что значит "самодокументируемость" и это как?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 27 мар 2007, 01:02

и ссылочная целостность только на триггерах?
это почему? есть же uid. на него можно FK построить.
что значит "самодокументируемость" и это как?
это значит что в справочник можно загнать описание конкретной "справочной" таблицы, и ее данные.
Посмотри например
http://www.ibase.ru/devinfo/oop_rdbms.htm
это практически то же самое.

fraks
Сообщения: 12
Зарегистрирован: 03 дек 2004, 15:41

Re: Справочники в одной таблице

Сообщение fraks » 28 мар 2007, 08:52

Батор писал(а):какие преимущества и недостатки в таком методе?
Из преимуществ:
* в простых случаях можно использовать один и тот же код на клиенте для просмотра любых справочников из этой таблицы задав условие по типу справочника.
* если бывает так что в какой-то таблице в одном и том же поле находятся ссылки на элементы разных справочников - то если в этом мета справочнике id является первичным ключом - то джойнить со справочниками можно не глядя, не промахнешься. При классическом построении - один справочник - одна таблица такой финт просто не решить.

nicolas
Сообщения: 33
Зарегистрирован: 11 сен 2006, 21:37

Сообщение nicolas » 24 янв 2008, 12:39

kdv писал(а):
и ссылочная целостность только на триггерах?
это почему? есть же uid. на него можно FK построить.
что значит "самодокументируемость" и это как?
это значит что в справочник можно загнать описание конкретной "справочной" таблицы, и ее данные.
Посмотри например
http://www.ibase.ru/devinfo/oop_rdbms.htm
это практически то же самое.
Сорри, что поднимаю древнюю тему, но вот такой вопрос возник.
А есть ли реально работающие БД, построенные по такой схеме (как в статье по ссылке описаны, ООП БД)?

Хотелось бы очередной проект поднять в такой спецификации, ибо попробовал тестовые варианты - очень удобно, хоть поначалу и непривычно. Но что-то страшно за центральную таблицу с объектами. Как оно будет по скорости, и по надежности?

Интересны мнения о реально работающих разработках в таком ключе.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 08 апр 2008, 16:13

Эту тему обсуждали весьма подробно на sql.ru (страниц шесть, вроде. Можешь даже поискать ее там). Лично я из всего обсуждения сделал вывод: один справочник - одна таблица.

Ответить