Вечный двигатель третьего рода. Неканонические размышления о бизнес-системах, или О чём стоит сначала подумать. Модели данных и бизнес-логика. Олег Анатольевич Мостовлянский
Читать онлайн книгу.ни одно животное не пострадало.
Хранимая единица информации (Unity)
Итак, для начала – хранимая единица информации Unity. Очевидно, она должна описывать предметы, которые хранятся в фонде, учитываются как отдельные единицы и могут выдаваться абонентам. Что может храниться в библиотеке?
– Книги,
– журналы,
– газеты,
– рукописи,
– ксерокопии,
– микрофильмы,
– микрофиши,
– магнитные, оптические и прочие современные нам носители,
– и т. д., и т. п. – в общем, всё, что только может содержать информацию.
Здесь надо немного остановиться. Вопрос касается файлов.
С одной стороны, файл – отдельная законченная единица информации. С другой стороны, в одном файле может содержаться несколько независимых единиц информации – например, оцифрованных книг, репродукций и т. п. И с третьей стороны – один хранимый экземпляр носителя информации (например, компакт-диск) может содержать несколько файлов. Кстати, этот компакт-диск может быть не самостоятельным – а приложением к какой-либо книге…
Остановка получается недолгая, ибо решение очевидно и просто: каждая единица информации (Unity) может быть в то же время и собранием (Collection) подобных единиц.
Вернёмся к теме – Unity.
Каждый экземпляр этой сущности должен представлять собой сочетание атрибутов, уникальным образом характеризующих хранимую единицу информации. На сами же отдельные атрибуты требование уникальности значений может распространяться не всегда. Если атрибут должен иметь уникальное значение, то оно обычно автоматически генерируется программным способом при создании экземпляра сущности (например, в случае целочисленных величин или весовых значений символов логично применить автоинкремент). Если значение атрибута может быть не уникальным, то возможны случаи:
– значение атрибута абсолютно произвольно (так называемый «мануальный ввод»), либо
– значение атрибута должно быть задано из определённого списка значений (выбор из справочника).
В первом случае атрибут должен быть членом структуры объекта (сущности). Во втором же логичнее создать отдельный список возможных значений атрибутов (или же в качестве справочника может выступить список любых других – в том числе и той же самой – сущностей) и устанавливать связь между ним и основным объектом. В конкретных имплементациях такая связь со справочником может устанавливаться либо посредством кросс-структуры (таблицы перекрёстных ссылок), либо прямой ссылкой на запись справочника – но не будем этим заморачиваться, ибо сие суть не принципиально, а исключительно по обстоятельствам.
Отметим, что и уникальные атрибуты могут выбираться из справочников – например, при наличии неких доменных ограничений. В этом случае необходим дополнительный контроль единственности выбора… но, как говорится – любой каприз за ваши ресурсы.
Итак:
Разберём по позициям. На первый раз – подробно.
Unity::id
Уникальный