При проектировании баз данных для понимания предметной области мы делаем ее концептуальную модель, в которой описываем сущности, связи и свойства. При этом, сущности и связи можно достаточно однозначно определить. Но со свойствами сущностей все намного интереснее. Практика проектирования показывает, что определение свойств зависит от связей между сущностями и от нашего понимания процессов и требований к решению, которое мы разрабатываем.
Сущности связаны между собой через определенные события, состояния или отношения. При этом связи являются двухсторонними и отражаются на обе связанные сущности как свойства.
Сущность может иметь постоянные собственные (идентификационные) свойства, или присоединенные (функциональные), возникающие или изменяющиеся в зависимости от состояния или точки зрения.
Рассмотрим в качестве примера анализ сущностей и связей для человека.
Вначале определим типы связей:
- Событие — с точки зрения самого человека, его рождение является начальным событием его бытия. А с точки зрения врача это может быть процесс и его результат как конечное состояние.
- Состояние/Процесс — проживание человека в квартире, использование телефона, и обслуживание коммунальной компанией дома является состоянием с точки зрения самого человека, или процессом для провайдера услуг связи или коммунальной компанией.
- “Часть — Целое” как пространственно-логическое отношение между квартирой и домом, проецирующие отношения с другими сущностями между собой (человек проживает в квартире И в доме, коммунальная компания обслуживает дом И квартиры в нем).
- Логическая связь “Род-Вид” — в данном примере отношение между просто телефоном и стационарным телефоном, который устанавливается в квартире и, соответственно, имеет адрес установки.
Есть постоянные (генетические) и переменные (функциональные) связи. Например, у каждого человека есть родители, благодаря которым он родился. А телефонный номер или квартира могут меняться многократно в течении его жизни.
Логические связи позволяют нам делать семантические вычисления — проецировать по таким связям свойства с одних сущностей на другие. Например, если квартира является частью дома, то человек проживает не только в квартире, но и в доме. Также, если коммунальная компания обслуживает дом, значит она обслуживает и квартиры в этом доме.
Семантические вычисления также могут производиться на основе комплексных связей, объединяющих между собой простые связи. Например, если человек проживает в квартире, и в ней установлен стационарный телефон, то это значит, что он является абонентом или пользователем данного телефона.
Благодаря рождению и своим родителям человек имеет дату рождения и полное имя (ФИО), которое при желании он может поменять. Тем не менее имя и дата рождения человека являются его постоянными и идентифицирующими свойствами.
Родители также имеют свойство “Дети”, в котором перечисляются люди, которые от них родились.
Рисунок 2. Взаимное отражение сущностей через свойства.
Человек может также пользоваться телефоном, и для него можно указать свойство “Номер телефона”. А у телефонного номера, соответственно, появляются свойства “Абонент” и “Период обслуживания”.
У провайдера услуг связи, так же как и у родителей имеется свойство “Номерная емкость”, в которой перечисляются доступные номера телефонов, и свойство “Абоненты”, в котором перечисляются пользователи услуг. У телефона также имеется свойство “Провайдер”.
Если телефон стационарный и установлен на квартире, то у него появляется свойство “Адрес установки”.
При проживании человека в квартире у него появляется свойство “Адрес”, а у квартиры появляются свойства “Жилец” и “Период проживания”. При наличии стационарного телефона добавляется свойство “Телефонный номер”.
Квартира является частью дома, поэтому у нее есть свойство “Номер дома”. А у дома имеется свойства “Жильцы” и “Квартиры”. Также у дома есть свойство “Обслуживающая компания”, поскольку имеется связь “Обслуживание” с коммунальной компанией.
Обслуживание дома также является и обслуживанием квартир в этом доме. Проецирование связи “Обслуживание” с дома на квартиру производится благодаря отношению “Часть -Целое” между квартирой и домом.
Коммунальная компания имеет свойства “Обслуживаемые дома” и “Жильцы”, определяющие обслуживаемых ими объектов и клиентов.
Все свойства возникают при взаимодействии или отношении одной сущности с другими сущностями, зависят от контекста. Например, имя человека может быть представлено на разных языках, причем, не всегда можно найти соответствие. Либо дата рождения может считаться в разных календарях.
Наглядный пример это свойства самого элементарного объекта — точки. Размер на рисунке точка имеет только для наглядности. Ее местоположение задается разными координатами в различных системах координат, цвет зависит от освещения. Следовательно, координаты и цвет точки являются не собственными, а присоединенными свойствами.
Физики, в теории относительности и в квантовой теории вывели субъектность реальности, ее зависимость от точки зрения.
Рисунок 3. Относительность значений свойств от заданной системы координат.
Реляционные базы данных и SQL технически предоставляют неограниченные возможности по обработки данных, но фактически мы жестко ограничены существующей структурой данных и во многих случаях получаем слишком громоздкие конструкции, которые мешают нам понимать смысл данных.
Поэтому идут постоянные поиски и разработки в области следующего, семантического, уровня технологий обработки данных. Разрабатываются онтологии и базы знаний, которые успешно применяются в разных областях деятельности, от обучения и медицины, до ситуационного и стратегического управления.