powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура многоуровневого словаря
8 сообщений из 8, страница 1 из 1
Структура многоуровневого словаря
    #35713142
Vadyaaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите какой вариант лучше?
Данные словаря – многоуровневые. Допустим это словарь УДК (универсальной десятичной классификации, 4 уровня)
0 Основной отдел
00 Основный вопросы культуры и науки
001 Наука и знания в целом
001.1 Основное представление о науке
002.2 Взаимосвязь между разными отраслями науки

Ограничение – словарь подключается к одному полю таблицы данных. Если так можно выразиться – данные словаря – многоуровневые, а «выход» словаря – одноуровневый.

Я знаю 2 варианта структуры словаря:

1. Словарь – все записи в одной таблице, но у каждой записи есть поле - ссылка на элемент родитель (parent_id). ПО єтому полю можно восстанавливать структуру данных

2. Словарь – много таблиц (4шт в примере с УДК "udc1" "udc2" "udc3" "udc4"). Все они связываются с одним полем основной таблицы (udc_id), но в таблицу данных добавляем дополнительное поле – udc_table, где будет записываться id имя таблицы словаря. Чтобы било известно, например id=32, udc_table="udc2", что это отвечает записи из таблицы "udc2", то есть из второго уровня многоуровневого словаря.

Вопрос, в каком случае лучше использовать тот или иной способ организации многоуровневых словарей?
Спасибо.
...
Рейтинг: 0 / 0
Структура многоуровневого словаря
    #35713158
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задачу подробнее опишите. Абстрактной правильности не бывает.

Плюс в данном случае - использование стандартного классификатора. Перечислите набор ограничений предметной области и направления расширения функционала.
...
Рейтинг: 0 / 0
Структура многоуровневого словаря
    #35713196
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Vadyaaa
> Подскажите какой вариант лучше?
>

Однозначного ответа нет, поскольку, действительно, ваша предметная область
неизвестна. Возьмем, например, КЛАДР. Там использована гибридная схема -
все, кроме улиц, в одной таблице, а улицы вынесены в отдельную. Причем для
последнего решения причины очень просты: слишком дофига улиц. :)
ИМХО, организация классификатора в виде иерархической древовидной структуры
имеет смысл, если у вас возможно "пробелы" в наборе элементов. Поясню. В
описании адреса после области может быть город, а может сразу идти поселок и
тп. Если вам заранее известны, что за уровенм иерархии номер 1 всегда
следует уровень иерархии номер 2, то лучше использовать второй вариант,
иначе первый вариант.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Структура многоуровневого словаря
    #35713372
Vadyaaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Задачу подробнее опишите. Абстрактной правильности не бывает
Для ясности дам ссылку на данные словаря. Это перечень пунктов из УДК:
http://www.nbuv.gov.ua/libdoc/udc.htm#0

Подсчитывал - пунктов из УДК около 500.

Моя база данных - это описание информационных ресурсов.
Состоит из около 70 таблиц для описания разных сущностей предметной области. Таблицы связаны между собою структурою "звезда". К каждой таблице подключается всевозможный набор справочников. В некоторых таблицах данные представляют текст (без словарей), в некоторых - силки по ID на значения из словарей. Некоторые сущности описываются и произвольным текстом и данными из словарей. Посему я определил структуру каждой сущности (каждой таблицы данных) как возможный набор полей:

елемент_esId елемент _vId Елемент_vTxt
1 схема кодирования (из какого словаря данные)
2. ссылка на словарь если данные из словаря
3. текстовое поле если данные в текстовой произвольной форме.

То есть все словари подключаются к елемент _vId.
Поэтому я говорил что как бы мне нужен одноуровневый выход из словаря, чтобы подключить его к "елемент _vId" (value_Id).

Если записей в словаре около 10-50, то я однозначно останавливался на структуре словаря как однотабличной, с силкой на родителя.

Но тут у меня словарь объемом в 500 записей.
С одной стороны лучше бы остановится на 1 варианте структуры - тогда у всех словарей будет одинаковая структура, что при большой базе данных (около 150 таблиц) принесет чистую и прозрачную структуру, удобную для программирования запросов.

С другой стороны, возможно при таком объеме словаря запросы будут лучше обрабатываться, если словарь будет многотабличным, будет проще строить древовидную структуру в приложении и тп? возможно не стоит зацикливатсья над унификацией общей структуры и ясности все БД?
...
Рейтинг: 0 / 0
Структура многоуровневого словаря
    #35713406
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Подсчитывал - пунктов из УДК около 500.

По моим сведениям, 126441. Чем ограничен ваш набор? Это произвольные ограничения?

> Моя база данных - это описание информационных ресурсов.

Каков характер этих ресурсов?

> 1 схема кодирования (из какого словаря данные)
> 2. ссылка на словарь если данные из словаря
> 3. текстовое поле если данные в текстовой произвольной форме.

Абсолютно верно, для разных сущностей существуют разные системы классификации. При этом классификаторы неизбежно будут пересекаться. Чтобы их различать и чтобы иметь возможность построить на их основе общий классификатор, есть смысл завести дополнительную сущность - контекст.

> Если записей в словаре около 10-50, то я однозначно останавливался на структуре словаря как однотабличной

Дело не в количестве данных. Реализация классификатора в одной таблице предпочтительнее по любому из критериев. Просто дерево должно быть более сложным. Каким именно - зависит от конкретной задачи. Возможно, достаточно ограничиться добавлением атрибута типа "уровень", возможно, потребуется дополнительные сущности для связей классификаторов или связей внутри классификатора.
...
Рейтинг: 0 / 0
Структура многоуровневого словаря
    #35713433
Vadyaaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>По моим сведениям, 126441. Чем ограничен ваш набор? Это произвольные ограничения?

http://www.nbuv.gov.ua/libdoc/udc.htm#0
в данном списке их около 500.

>Каков характер этих ресурсов?

книги, картинки, аудио, видео, всевозможная литература. В основном это электронные книги и документы.

>Просто дерево должно быть более сложным
Не совсем понял что вероятно должно быть более сложным? Более сложная структура однотабличного справочника, напр. дополнительные поля, я правильно понимаю?

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

Я иду к правильному выводу?
...
Рейтинг: 0 / 0
Структура многоуровневого словаря
    #35713460
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Более сложная структура однотабличного справочника, напр. дополнительные поля, я правильно понимаю?

Да. Классический древовидный классификатор. Основное отношение parent - child + дополнительные атрибуты и отношения. Две цели: наименее затратное представление + наиболее общая структура для классификации.
...
Рейтинг: 0 / 0
Структура многоуровневого словаря
    #35713464
Vadyaaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо. Если других мнений не будет - остановлюсь на однотабличном варианте.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура многоуровневого словаря
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]