|
|
|
Структура многоуровневого словаря
|
|||
|---|---|---|---|
|
#18+
Подскажите какой вариант лучше? Данные словаря – многоуровневые. Допустим это словарь УДК (универсальной десятичной классификации, 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", то есть из второго уровня многоуровневого словаря. Вопрос, в каком случае лучше использовать тот или иной способ организации многоуровневых словарей? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 14:25 |
|
||
|
Структура многоуровневого словаря
|
|||
|---|---|---|---|
|
#18+
Задачу подробнее опишите. Абстрактной правильности не бывает. Плюс в данном случае - использование стандартного классификатора. Перечислите набор ограничений предметной области и направления расширения функционала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 14:50 |
|
||
|
Структура многоуровневого словаря
|
|||
|---|---|---|---|
|
#18+
> Автор: Vadyaaa > Подскажите какой вариант лучше? > Однозначного ответа нет, поскольку, действительно, ваша предметная область неизвестна. Возьмем, например, КЛАДР. Там использована гибридная схема - все, кроме улиц, в одной таблице, а улицы вынесены в отдельную. Причем для последнего решения причины очень просты: слишком дофига улиц. :) ИМХО, организация классификатора в виде иерархической древовидной структуры имеет смысл, если у вас возможно "пробелы" в наборе элементов. Поясню. В описании адреса после области может быть город, а может сразу идти поселок и тп. Если вам заранее известны, что за уровенм иерархии номер 1 всегда следует уровень иерархии номер 2, то лучше использовать второй вариант, иначе первый вариант. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 15:31 |
|
||
|
Структура многоуровневого словаря
|
|||
|---|---|---|---|
|
#18+
>Задачу подробнее опишите. Абстрактной правильности не бывает Для ясности дам ссылку на данные словаря. Это перечень пунктов из УДК: 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 таблиц) принесет чистую и прозрачную структуру, удобную для программирования запросов. С другой стороны, возможно при таком объеме словаря запросы будут лучше обрабатываться, если словарь будет многотабличным, будет проще строить древовидную структуру в приложении и тп? возможно не стоит зацикливатсья над унификацией общей структуры и ясности все БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 18:28 |
|
||
|
Структура многоуровневого словаря
|
|||
|---|---|---|---|
|
#18+
> Подсчитывал - пунктов из УДК около 500. По моим сведениям, 126441. Чем ограничен ваш набор? Это произвольные ограничения? > Моя база данных - это описание информационных ресурсов. Каков характер этих ресурсов? > 1 схема кодирования (из какого словаря данные) > 2. ссылка на словарь если данные из словаря > 3. текстовое поле если данные в текстовой произвольной форме. Абсолютно верно, для разных сущностей существуют разные системы классификации. При этом классификаторы неизбежно будут пересекаться. Чтобы их различать и чтобы иметь возможность построить на их основе общий классификатор, есть смысл завести дополнительную сущность - контекст. > Если записей в словаре около 10-50, то я однозначно останавливался на структуре словаря как однотабличной Дело не в количестве данных. Реализация классификатора в одной таблице предпочтительнее по любому из критериев. Просто дерево должно быть более сложным. Каким именно - зависит от конкретной задачи. Возможно, достаточно ограничиться добавлением атрибута типа "уровень", возможно, потребуется дополнительные сущности для связей классификаторов или связей внутри классификатора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 19:05 |
|
||
|
Структура многоуровневого словаря
|
|||
|---|---|---|---|
|
#18+
>По моим сведениям, 126441. Чем ограничен ваш набор? Это произвольные ограничения? http://www.nbuv.gov.ua/libdoc/udc.htm#0 в данном списке их около 500. >Каков характер этих ресурсов? книги, картинки, аудио, видео, всевозможная литература. В основном это электронные книги и документы. >Просто дерево должно быть более сложным Не совсем понял что вероятно должно быть более сложным? Более сложная структура однотабличного справочника, напр. дополнительные поля, я правильно понимаю? Я себе представил это так: возможно если все данные однородные, нет и не может быть никаких "пробелов" как в примере с адресами, городами и улицами, то тогда лучше все загонять в одну таблицу, а если данные неоднородные, то тогда лучше делать древовидную структуру. Я иду к правильному выводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 19:51 |
|
||
|
Структура многоуровневого словаря
|
|||
|---|---|---|---|
|
#18+
> Более сложная структура однотабличного справочника, напр. дополнительные поля, я правильно понимаю? Да. Классический древовидный классификатор. Основное отношение parent - child + дополнительные атрибуты и отношения. Две цели: наименее затратное представление + наиболее общая структура для классификации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2008, 20:40 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=95&tid=1543527]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 198ms |
| total: | 364ms |

| 0 / 0 |
