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

Олег Анатольевич Мостовлянский

Автор на основе своего опыта работы предлагает перечень тем и ситуаций, над которыми желательно предварительно хорошенько подумать.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Вечный двигатель третьего рода. Неканонические размышления о бизнес-системах, или О чём стоит сначала подумать. Модели данных и бизнес-логика предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Размышление первое: БИБЛИОТЕКА

Нет, под библиотекой здесь будем иметь в виду не учреждение, расположенное в собственном либо арендованном здании, обременённое всевозможными расходами на персонал, коммунальные услуги и т. п., обслуживающее клиентов в читальных залах и посредством абонемента…

Займёмся только фондом библиотеки — книгохранилищем (как это называлось в доэлектронную эру) вкупе с каталогами (причём логистическая составляющая — сбор заявок, доставка литературы в залы, выдача/приёмка и т. п. — останется вне поля нашего внимания).

И представим всё это в виде структур данных.

…а представлять будем не в виде набора таблиц и относящихся к ним списков полей — а в виде диаграмм-графов, показывающих объекты и связи между ними. Атрибуты (поля), конечно же, упоминания не избегнут — но лишь те, которые призваны однозначно идентифицировать объект; и то — не в конкретно-обязательной форме, а только концептуально. Ибо это — универсальное представление, поддающееся реализации в любых терминах — хоть реляционных баз данных, хоть графовых… да вообще как угодно.

И будем безбожно путать термины «сущность» и «объект», «атрибут» и «поле», ибо в подобных рассуждениях это не принципиально: что таблица, что структура — всё едино.

Основные сущности

Начальный этап дизайна структур данных — определение сущностей, т. е., объектов, из которых состоит рассматриваемая система. В данном случае — библиотечный фонд.

В самом общем виде — в библиотеке хранится что-то где-то, содержащее какую-то информацию…

В самом конкретном — в комнатах стоят шкафы или стеллажи, на полках — книги, которые содержат произведения (одно или много; или же — часть) каких-либо авторов… Это — случай классической библиотеки. Более современный случай — в фонде имеется информация, хранимая в электронном (оцифрованном) виде, в виде файлов. Файлы могут находиться как на носителях типа дискет (а что? вдруг ещё остались где-нибудь), магнитных лент (это вообще раритеты), компакт-дисков (CD, DVD, BD и т. п.), а также на накопителях (т. н. жёстких дисках) серверов. Носители будут храниться как и книги, на полках (либо в ящиках) шкафов, сервера будут расположены в комнатах — так что принципиальных отличий здесь не видно.

Сделаем первый шаг.

Назовём основные сущности:

— хранимая единица информации — Unity

— местоположение хранения этой единицы — Placeholder

— содержание хранимой единицы информации — Content

Связаны они следующим образом:

Что видно из этой диаграммы?

— В месте хранения Placeholder может находиться несколько хранимых единиц Unity, но может не быть и ни одной. Это показано связью (relation) is_place_for.

— Каждая хранимая единица Unity обязательно находится в одном (и не более! это вроде само собой понятно) месте хранения Placeholder (показано связью placed_on).

— Каждая хранимая единица Unity обязательно — поскольку речь идёт об информации — имеет вполне определённое содержание Content. Причём — только одно. Связь contains.

— Напротив, содержание Content вполне может относиться к нескольким (одной и более) хранимым единицам Unity (связь contained_in). Пример — несколько экземпляров одной книги.

Это — самое общее представление. Будем рассматривать эти сущности более детально, и в том же порядке, в котором они были декларированы: Unity, затем Placeholder, ну и напоследок Content. Возможно (то есть, практически наверняка), что-то ещё добавится по пути, в процессе.

Естественно, для каждой сущности будет описан и минимальный набор обязательных — придающих ей уникальную значимость — атрибутов.

Да, вот что ещё здесь обязательно надо упомянуть: все имена сущностей (объектов) и их атрибутов (полей), а также связей между объектами — вымышленные, взятые исключительно для примера. Всякое совпадение с реальными именами чисто случайное…

И — о, Гринпис, где твой ледокол! — при рисовании схем и написании текста ни одно животное не пострадало.

Хранимая единица информации (Unity)

Итак, для начала — хранимая единица информации Unity. Очевидно, она должна описывать предметы, которые хранятся в фонде, учитываются как отдельные единицы и могут выдаваться абонентам. Что может храниться в библиотеке?

— Книги,

— журналы,

— газеты,

— рукописи,

— ксерокопии,

— микрофильмы,

— микрофиши,

— магнитные, оптические и прочие современные нам носители,

— и т. д., и т. п. — в общем, всё, что только может содержать информацию.

Здесь надо немного остановиться. Вопрос касается файлов.

С одной стороны, файл — отдельная законченная единица информации. С другой стороны, в одном файле может содержаться несколько независимых единиц информации — например, оцифрованных книг, репродукций и т. п. И с третьей стороны — один хранимый экземпляр носителя информации (например, компакт-диск) может содержать несколько файлов. Кстати, этот компакт-диск может быть не самостоятельным — а приложением к какой-либо книге…

Остановка получается недолгая, ибо решение очевидно и просто: каждая единица информации (Unity) может быть в то же время и собранием (Collection) подобных единиц.

Вернёмся к теме — Unity.

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

Конец ознакомительного фрагмента.

Оглавление

* * *

Приведённый ознакомительный фрагмент книги Вечный двигатель третьего рода. Неканонические размышления о бизнес-системах, или О чём стоит сначала подумать. Модели данных и бизнес-логика предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Смотрите также

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я