UML диаграмма классификации (категоризации)(Прочитано 1351 раз)
Добрый день!

Нужно сделать модель системы, которая позволяет классифицировать объекты (записи) базы данных по каким-либо категориям.
Система очень похожа на систему классификации книг в библиотеке.
Особенность таких классификаций в том, что каждая запись базы данных (в данном случае - книга) может одновременно "принадлежать" разным категориям.
Например, конкретная книга (запись БД) "содержится" одновременно и в категории "Приключения" и в категории "Детям до 12 лет".
Причем, количество категорий заранее не фиксировано.
То есть в процессе эксплуатации мы можем сформировать новую категорию, например "Период публикации", и все книги "распределить" по этим периодам.

Хотелось бы посмотреть примеры UML-диаграмм таких систем.
В первую очередь интересует диаграмма классов такой системы, а также ER-диаграмма (IDEF1X).

Кто-нибудь сталкивался с такими системами и их моделями?
Интересна любая информация по этому вопросу: принципы построения таких систем, примеры моделей, диаграмм, какие-то мысли и соображения.
Подскажите, пожалуйста, что-нибудь.



К теории моделирования и нотациям Ваш вопрос не имеет отношения, насколько я могу судить.
Если речь идёт о полученном Вами задании, то выполните его сами или обратитесь на фриланс-сайт.
Затруднительно понять из Вашего сообщения, что за задача перед Вами стоит, с какой целью Вы ею занимаетесь, при чём тут UML.

Библиотечная классификация -- специализированная вещь, отличающаяся от обобщённой классификации "объектов по каким-либо категориям". Так, на книге есть шифры -- ББК и всякие там ISBNы. Просто глядя на них Вы получаете ответ на вопрос: "содержится" ли книга в категории "Приключения". На книге есть значок ограничения по возрасту (если она издана после вступления в силу соответствующих законов). Глядя на них Вы узнаете, относится ли книга к категории "Детям до 12 лет". На книге есть дата выпуска тиража. По нему Вы получите ответ про "Период публикации".

Но если Ваша система категоризует/классифицирует бутерброды, то, просто взглянув на бутерброд, вряд ли можно определённо ответить:
относится ли он к категории "Приключения"?
предназначен ли он детям до 12 лет и годится ли для детей постарше?

Поверить, что Вам необходимо по-взрослому создать библиотечную систему, у меня не получается, т. к. полным полно готовых решений.
[...и улетело НЛО.]



К теории моделирования и нотациям Ваш вопрос не имеет отношения, насколько я могу судить.
Да, промахнулся разделом. Извиняюсь. Обратился к администраторам с просьбой перенести тему.

Затруднительно понять из Вашего сообщения, что за задача перед Вами стоит, с какой целью Вы ею занимаетесь...
Стоит задача разработать программу. Программа работает с базой данных.
Условно, базу данных можно разделить на две логические "части": первая - это записи о некоторых объектах.
Что это за объекты - это не суть важно - пусть это будут книги, как в примере выше. Или например детские игрушки. Или упомянутые вами бутерброды.
Структура этих объектов-записей довольно простая - у каждой записи есть уникальный идентификатор, и еще несколько полей с характеристиками.
А вот вторая "часть" БД намного интереснее - это система классификации этих записей по категориям.
И мой вопрос как раз связан с разработкой этой второй "части".

... при чём тут UML.
Ну как при чем.
На первом этапе нужно разработать логическую модель этой системы на языке UML.

Библиотечная классификация -- специализированная вещь, отличающаяся от обобщённой классификации "объектов по каким-либо категориям". Так, на книге есть шифры -- ББК и всякие там ISBNы. Просто глядя на них Вы получаете ответ на вопрос: "содержится" ли книга в категории "Приключения". На книге есть значок ограничения по возрасту (если она издана после вступления в силу соответствующих законов). Глядя на них Вы узнаете, относится ли книга к категории "Детям до 12 лет".
Все эти значки - это всего лишь общепринятые коды общепринятых категорий.
Но ведь книга сначала должна быть классифицирована библиотекарем, то есть отнесена к тем или иным категориям, и только после этого у нее появится этот код.

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

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

На книге есть дата выпуска тиража. По нему Вы получите ответ про "Период публикации".
С периодом публикации не совсем удачный пример получился.
Лучше рассмотрим категорию "Исторический период". Допустим все книги в библиотеке надо дополнительно классифицировать по категории "Исторический период", в соответствии с описываемыми в книге событиями.
Допустим эта категория в нашей системе классификации разбита на следующие подкатегории: "Древняя Русь", "Удельная Русь", "Русское государство до 1721", "Российская империя", "Российская республика", "СССР".
Библиотекарь сначала по краткому содержанию книги определяет подкатегорию, к которой следует отнести книгу.
Затем, в своей программной системе "связывает" карточку книги с этой подкатегорией. И только после этого у книги появляется соответсвующий код.
Теоретически категория "Исторический период" может быть разбита и более "дробные" периоды, например "Период Петра 1-го", "Период Брежнева".
Причем в одной и той же книге могут быть описаны разные исторические периоды, а значит, она дожна быть связана с несколькими подкатегориями.

Но если Ваша система категоризует/классифицирует бутерброды, то, просто взглянув на бутерброд, вряд ли можно определённо ответить:
относится ли он к категории "Приключения"?
предназначен ли он детям до 12 лет и годится ли для детей постарше?
Правильно! Так как для бутербродов должна быть своя система категорий.
Вот в этом и заключается вопрос - разработать модель "универсальной" системы категорий.
Не жестко заданной, а именно "универсальной".

Тогда в этой системе классификации можно будет классифицировать как книги, так и бутерброды.
Можно нафантазировать такой пример: в такой системе вы выбираете подкатегорию "Российская республика" и видите: (1) книги об этом периоде и (2) наиболее популярные бутерброды в этот исторический период.
Конечно, этот пример из области юмора. Но суть задачи поясняет.
« Последнее редактирование: 16 Августа 2021, 20:24:35 от Resen70 »



Если задачей является создание программной системы, то Вы подбираете фреймворк и доки к нему и пишете код.

Если задачей является "чтобы на UML", то хотя бы себе Вы должны дать ответ. Зачем именно UML и зачем визуальная модель.

Библиотечная классификация специализирована. Ею пользуются библиотечные спецы. Обычные люди [вроде Вас] и марсиане [вроде меня] ею пользуются с грехом пополам. И там почти всё давно придумано, а специальные институты патчат и дополняют при необходимости. Книга издаётся с метаданными -- готовой пачкой сведений для классификации. Я давно видел библиотекарей, но и тогда они не производили впечатление людей, которые читают книги для выполнения своих библиотекарских обязанностей.

Бутерброды, в принципе, тоже бывают размечены. В самолётной классификации "курицалилирыба" на лоток с питанием может быть наклеен цветной ярлык.

Какие ярлыки на Ваших объектах-записях? Если известно лишь то, что "структура этих объектов-записей довольно простая" и больше  нечего сказать, то модель будет тривиальной (не содержательной), и набросать UML-диаграмму не будет никакой возможности (из-за отсутствия сведений). На контрпример, диаграмм про книги Вы на тутошнем форуме можете найти несколько штук.

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

Даже на таком шатком основании можно что-то построить.

Но не на облаке.

[...и улетело НЛО.]



Нужно сделать модель системы, которая позволяет классифицировать объекты (записи) базы данных по каким-либо категориям.

Здравствуйте.

Модель модели рознь. Мы по сути моделируем ситуацию, когда
1 Есть объект классификации
2 Есть некий класс, группа, признак такой классификации

Вообще этот вопрос решен достаточно подробно. Выделяют разные системы классификации. Но можно пойти проще от отношения между Объектом классификации и Признаком классификации.
Судя по вашей задачи между ними отношение многие-ко-многим.

Один и тот же объект классификации (ОК) может быть отнесен к 0, 1 или более классам, признакам классификации (К). Типичная многоаспектная система классификации.

Если брать за основу ER или IDEF1x, то вы будете использовать отношение многие-ко-многим (для IDEF1x неспецифичная связь, которая при физической реализации превращается в три таблицы:
таблица ОК, таблица К и так называемая таблица связи.

в UML скорее всего это можно изобразить с помощью класса-ассоциации (имеет признак, входи в класс).

Возможны наверное и другие варианты. Например многозначный атрибут.



Как только появляется
- иерархическая система категорий
то
- способ связывания объектов с категориями
обрастает рядом дополнительных вопросов, например:
1. В связи могут участвовать только категории-листья?
2. В связи с одним объектом могут участвовать и категория-предок, и категория-потомок?
3. В связи с одним объектом могут участвовать категории с общей категорией-предком?
4. Как может изменяться сама "иерархическая система категорий":
- листья могут становиться не листьями?
- не листья могут становиться листьями?
- категории могут менять непосредственного предка?



обрастает рядом дополнительных вопросов, например:...
Предположительно, можно взять часть метамодели UML, относящуюся к структуре, кроющую классы и экземпляры. Далее отождествить Class с категорией, а InstanceSpecification с объектом. Получившаяся недометамодель UML даст требуемую якобы гибкость в плане неопределённости объектов, категорий и ответов на вопросы. Но манипулировать данными в такой системе будет неудобно.

Идея подсмотрена у Скотта Амблера. Это расширенная его generic schema, которую он описал для ORM.
[...и улетело НЛО.]




 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19