Размышление первое: БИБЛИОТЕКА
Нет, под библиотекой здесь будем иметь в виду не учреждение, расположенное в собственном либо арендованном здании, обременённое всевозможными расходами на персонал, коммунальные услуги и т. п., обслуживающее клиентов в читальных залах и посредством абонемента…
Займёмся только фондом библиотеки – книгохранилищем (как это называлось в доэлектронную эру) вкупе с каталогами (причём логистическая составляющая – сбор заявок, доставка литературы в залы, выдача/приёмка и т. п. – останется вне поля нашего внимания).
И представим всё это в виде структур данных.
…а представлять будем не в виде набора таблиц и относящихся к ним списков полей – а в виде диаграмм-графов, показывающих объекты и связи между ними. Атрибуты (поля), конечно же, упоминания не избегнут – но лишь те, которые призваны однозначно идентифицировать объект; и то – не в конкретно-обязательной форме, а только концептуально. Ибо это – универсальное представление, поддающееся реализации в любых терминах – хоть реляционных баз данных, хоть графовых… да вообще как угодно.
И будем безбожно путать термины «сущность» и «объект», «атрибут» и «поле», ибо в подобных рассуждениях это не принципиально: что таблица, что структура – всё едино.
Основные сущности
Начальный этап дизайна структур данных – определение сущностей, т. е., объектов, из которых состоит рассматриваемая система. В данном случае – библиотечный фонд.
В самом общем виде – в библиотеке хранится что-то где-то, содержащее какую-то информацию…
В самом конкретном – в комнатах стоят шкафы или стеллажи, на полках – книги, которые содержат произведения (одно или много; или же – часть) каких-либо авторов… Это – случай классической библиотеки. Более современный случай – в фонде имеется информация, хранимая в электронном (оцифрованном) виде, в виде файлов. Файлы могут находиться как на носителях типа дискет (а что? вдруг ещё остались где-нибудь), магнитных лент (это вообще раритеты), компакт-дисков (CD, DVD, BD и т. п.), а также на накопителях (т. н. жёстких дисках) серверов. Носители будут храниться как и книги, на полках (либо в ящиках) шкафов, сервера будут расположены в комнатах – так что принципиальных отличий здесь не видно.