powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Схема данных для классификации информации. Зацените.
12 сообщений из 12, страница 1 из 1
Схема данных для классификации информации. Зацените.
    #34467564
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть необходимость сделать на нашем сайте классификацию документов. У нас есть backend система (Lotus Notes), в которой готовится и поддерживается классификатор.

Структура классификатора в backend такова: есть несколько справочников (Люди, Компании, События и т.п.), каждый из которых содержит различные элементы (например, информация о людях Путине, Ющенке, компаниях Microsoft, IBM и т.д.). При этом каждый справочник представляет собой отдельную базу со своим набором аттрибутов (для Людей - имя, фамилия, для Компаний - различные реквизиты, и т.д.) и с идентификацией в пределах этой базы (то-есть, разные элементы из разных баз могут иметь одинаковые идентификаторы).

Соответственно, этот классификатор нужно залить в базу данных сайта.

Поэтому концептуально схему базы данных я могу предоставить следующим образом (графическое отображение см. в аттачменте):
Создаем таблицу UnitType (Справочник). Идентификатор записи берем из backend системы. Создаем таблицу Unit (Элемент). Связываем их между собой зависимой связью (так как идентификатор элемента уникален только в пределах одного справочника; идентификатор берем из backend системы; получается что ключ из UnitType мигрирует в часть ключа Unit). Дальше, создаем таблицу Property (Аттрибут). Эта таблица будет содержать аттрибуты элементов справочника. Идентфикатор в этой таблице - суррогатный, так как аналога ему в backend-системе нет. Так как для разных справочников аттрибуты разные, мы для значения каждого аттрибута создаем запись, в которой есть имя аттрибута, и его значение. Связываем эту таблицу с таблицей Unit связью многие-к-одному.

Кроме того, каждый справочник может иметь только фиксированный набор аттрибутов у своих элементов. У каждого аттрибута есть его тип (картинка, дата, текст, reach-текст). В зависимости от типа, значение аттрибута на сайте должно отображаться по разному. Кроме того, на странице элемента справочника нужно выводить названия всех аттрибутов с их значениями напротив, внезависимости от того, заполнены ли для аттрибутов значения, или нет. Поэтому также возникает необходимость в таблице ПулАттрибутов (PropertyPool), которая описывает, какие есть аттрибуты у элементов различных справочников. Эту таблицу мне кажется очевидным связать и с таблицей UnitType, и с таблицей Property. Последняя связь нужна для того, чтобы понимать, как отображать значение аттрибута, и чтобы сделать left join с таблицей Property для отображения названий аттрибутов вне зависимости от наличия для них значений.

Дальше мы связываем элементы с конкретным документом связью многие-ко-многим.

При преобразовании этой схемы в физическую модель данных мы получаем такую диаграмму, как нарисована на аттачменте.

Оцените, пожалуйста, насколько хороша модель данных!

Лично меня как-то настораживает, что в таблице Property имеются два поля, которые ссылаются на таблицу UnitType (untp_id мигрировало с таблицы Unit, а Pro_unit_id - с таблицы PropertyPool). Так как аттрибут может принадлежать пулу аттрибутов и элементу только одного UnitType, мне кажется логичным из этих двух полей сделать одно. Как вы считаете?

Спасибо!
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34469701
NewOne1900
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetal


Уважаемый Vetal !

Понимаю что не относиться к теме ... но другого способо с Вами связаться не нашел.

В чем вы строите концептуальную схему базы данных ?

Как называется это приложение?!

Очень хорошо выглядит и скорее всего удобно пользоваться....


P.S. Еще раз извините ...
И как бы мысль в слух . Я думаю скорее всего Вы наверняка как минимум хороший специалист...
Но при постановке вопроса вы не используете стандартные термины поэтому очень сложно оценить Ваше решение ... Приходиться вчитываться:
- где таблица, а где база данных;
- где поля, а что значит элементы;
+ Ваши решения довольно сложные но возможно что это для меня....
Но в общем со стороны выглядит не понятно.... ( покрайне мере для меня ). Хотя я можно сказать новичек...
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34469857
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewOne1900Понимаю что не относиться к теме ... но другого способо с Вами связаться не нашел.

Ноу проблем!

NewOne1900В чем вы строите концептуальную схему базы данных ?

Как называется это приложение?!

Очень хорошо выглядит и скорее всего удобно пользоваться....

Это приложение называется Sybase PowerDesigner 12. Для рисования моделей БД есть еще другое приложение - ERWin. Это два основных продукта на рынке. Мне больше нравится Power Designer.

NewOne1900Но при постановке вопроса вы не используете стандартные термины поэтому очень сложно оценить Ваше решение ... Приходиться вчитываться:
- где таблица, а где база данных;
- где поля, а что значит элементы;
+ Ваши решения довольно сложные но возможно что это для меня....
Спасибо большое!

Сейчас попробую переписать все с другими терминами, чтобы всем было понятней...
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34469913
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходя из пожеланий уважаемого NewOne1900 привожу глоссарий:
Классификация - документы на сайте могут относиться к разным объектом реального мира - разным людям, разным компаниям, разным событиям. Поэтому документы на сайте у нас должны привязываться к этим объектам реального мира. В дальнейшем можно показывать связанные между собой по общим категориям документы.
Справочник - содержит список узлов определенной категории. Например, Люди, Компании, События - это три разных справочника
Элемент - информация о неком объекте реального мира. например, информация о людях Путине, Ющенке, компаниях Microsoft, IBM и т.д.
Аттрибут - атомарная часть элемента справочника. Например, для Людей - имя, фамилия, для Компаний - различные реквизиты, и т.д.
Пул аттрибутов - набор аттрибутов, допустимых для конкретного справочника.
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34469947
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4 таблицы слева - это EAV. Если набор и структура справочников меняются реже раза в неделю и нет требования, что управлять структурой справочников нужно без изменения кода приложения - IMHO связываться с EAV не следует. В этом случае подойдёт обычный ROT подход, 1 справочник=1:n таблиц.
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34469997
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один атрибут, участвующий в двух FK, несомненно точнее.
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34470330
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven4 таблицы слева - это EAV. Если набор и структура справочников меняются реже раза в неделю и нет требования, что управлять структурой справочников нужно без изменения кода приложения - IMHO связываться с EAV не следует. В этом случае подойдёт обычный ROT подход, 1 справочник=1:n таблиц.
Как раз в данном случае у нас есть требование управлять структурой справочников без изменения кода приложения. Кроме того, работа со значениями всех справочников полностью идентична в приложении. Все эти классы в приложении не будут иметь методов - это чисто классы с данными. Поэтому именно в данном случае EAV подходит.
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34470337
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRОдин атрибут, участвующий в двух FK, несомненно точнее.
Спасибо за совет! Тогда выкину, пожалуй, аттрибут Pro_untp_id из таблицы Property, и введу поле untp_id в внешний ключ fk2. Верно?
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34470343
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще вопрос. Как вы считаете, в данном случае я правильно сделал, что связь между таблицами UnitType и Unit сделал зависимой? То-есть, что untp_id входит в первичный ключ таблицы Unit.

Или лучше было сделать в таблице Unit суррогатный ключ? Как вы считаете?
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34481531
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас я расширил модель. Появилась необходимость элементы справочников хранить в древовидной иерархии, а также делать между ними прямые связи без учета иерархии.

То, что я использовал для таблицы Unit в качестве ключа два поля, а не один, привело к тому, что во всех связях учавствуют уже два поля, а не один.

Напомню, что я принял такое решение, потому что в backend-системе все организовано соответствующим образом. Там на каждый справочник есть своя lotusовая база, а идентификатор уникален только в пределах каждой базы.

Скажите пожалуйста, как вы считатет, правильным ли было решение в таблице Unit для первичного ключа использовать два поля?

Полученная модель данных находится в приаттаченом файле.
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34488288
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetal<...>
Скажите пожалуйста, как вы считатет, правильным ли было решение в таблице Unit для первичного ключа использовать два поля?<...>
Лично я в качестве первичного ключа всегда использую один атрибут. Если получается использовать естественный атрибут - хорошо, если нет - ввожу суррогатный. У этого подхода есть свои плюсы и минусы. Плюс - сокращение длины внешних ключей. Минус - "непрозрачность" и использование суррогатных значений.
...
Рейтинг: 0 / 0
Схема данных для классификации информации. Зацените.
    #34491373
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А насколько плохо, что в таблице Property два поля содержат одно и то же значение (untp_id и Pro_untp_id)? И плохо ли это?

Другими словами, вопрос в том, как лучше - объединять эти два поля в одно, или оставить как есть?

Спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Схема данных для классификации информации. Зацените.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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