Типы данных, структуры и модели
Типы данных принято делить на две основные категории:
- Простые типы (базовые типы, примитивные типы, примитивы);
- Сложные типы.
Сложные типы строятся из простых типов и других сложных типов. Простые типы строятся непосредственно из битов. К простым типам относятся такие числовые типы как целое число, действительное число с плавающей точкой, логическая переменная и т.д. К сложным – массивы, записи, двумерые и многомерные массивы, деревья, стеки и т.д.
Часто сложные типы данных используются для описания реального мира. В этом случае говорят, что используется модель данных или обобщенная структура данных.
Модель данных характеризуется тремя основными свойствами:
- Структурой данных.
- Набором допустимых операций над данными.
- Ограничениями целостности.
Под структурой данных понимается организационная форма представления данных, которая отражает точку зрения пользователя на ту часть реального мира, которая описывается моделью. Операции, выполняемые над данными, должны давать в результате другие данные. Для выполнения операций необходим язык манипулирования данными. Ограничения целостности позволяют поддерживать состояние данных в соответствии с определенными заранее заданными правилами.
Модель «сущность-связь». Определения
Для представления данных любой предметной области чаще всего используется модель «сущность-связь» (entity-relationship, ER-модель). Данная модель была предложена Питером Ченом в 1976 году. Модель «сущность-связь универсальна для выражения знаний о предметной области. Универсальность модели означает, что описав предметную область в ее терминах, можно приступать к проектированию базы данных любого типа – иерархической, реляционной, сетевой, объектной.
В модели «сущность-связь» используются следующие базовые понятия:
- Сущность – обобщенное представление некоторой группы объектов реального мира со сходными признаками.
- Экземпляр сущности – конкретный объект реального мира.
- Отношение (связь) – ассоциирование двух сущностей при котором по экземпляру одной сущности можно найти экземпляры другой сущности.
Конкретные люди Василий Тапкин и Иван Хомяков являются экземплярами сущности «студент».
«Молоко $2.5\%$ в тетрапаке объемом 0.5 л.» - это экземпляр сущности «товар».
Китай, Россия, Индия – это экземпляры сущности «страна».
Студент учится в группе. «Студент» и «Группа» - это две сущности, которые в реальном мире связаны. Связь будет считаться построенной, если по данным конкретного студента можно будет определить его группу, а по данным о группе найти всех студентов этой группы.
Графическая нотация модели «сущность - связь»
Графически сущность обозначается прямоугольником содержащим внутри имя сущности. Если прямоугольник имеет одинарную границу, то сущность независима от других сущностей. Если прямоугольник имеет двойную границу, то сущность зависима от других сущностей.
В данных примерах сущность «единица измерения» является независимой. А сущность «товар» зависима от нее. Потому что товар не может существовать без конкретной единицы измерения, а единицы измерения существуют сами по себе.
Сущности связаны отношениями, которые графически изображаются ромбами. Внутри ромба записывается название отношения. Отношение обычно выражается глаголом или глаголом с поясняющими словами. Например, «имеет», «содержит», «принадлежит», «включает в себя» и т.д. Отношение соединяется со связанными сущностями при помощи линий. Над линиями записываются ограничения кардинальности, которые показывают сколько экземпляров сущности могут участвовать в отношении. Ограничения кардинальности задаются интервалом. Число сущностей, участвующих в отношении, должно находиться в этом интервале. Например, (0,1) – в отношении может участвовать одна сущность или ни одной сущности; (1,N) – в отношении может участвовать любое число сущностей начиная с 1.
В приведенном примере графически представлена следующая информация: Одна единица измерения может соответствовать многим товарам или просто храниться в базе данных, но не соответствовать ни одному товару.
Описание предметной области в терминах модели "сущность-связь" является совершенно платформонезависимым . Когда описание предметной области закончено наступает следующий этап проектирования. Нужно уточнять и расширять это описание при помощи других моделей, которые уже должны быть ориентированы на конкретные СУБД.