Требования к базам данных — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Простые и структурированные)
(Сущности и связи сущностей)
Строка 18: Строка 18:
 
=== Сущности и связи сущностей ===
 
=== Сущности и связи сущностей ===
 
* Сущности: соответствуют Entity Type (например, ''Студент'', ''Группа'' или ''Предмет'')
 
* Сущности: соответствуют Entity Type (например, ''Студент'', ''Группа'' или ''Предмет'')
* Связи сущностей: связи сущностей между собой (например, ''Студент'' состоит в ''Группе'' или ''Оценка'' ''Студента'' по ''Предмету''). Для определения вида связи может использоваться термин нагруженная (как ''Оценка'' в предыдущем примере).
+
* Связи сущностей: связи сущностей между собой (например, ''Студент'' состоит в ''Группе'' или ''Оценка'' ''Студента'' по ''Предмету''). Для определения вида связи может использоваться термин ''нагруженная'' (как ''Оценка'' в предыдущем примере).
  
 
== Ограничения целостности ==
 
== Ограничения целостности ==

Версия 18:40, 26 декабря 2021

Разделение структуры и данных

Схема базы данных

В базах данных мы разделяем структуру и данные. У нас присутствует схема базы данных, в которой описано:

  • Какие данные мы храним
  • Как эти данные хранятся
  • Права доступа к этим данным

Это не единственный возможный подход, так как мы можем хранить произвольные blob (Binary large object). Однако для осуществления каких-либо действий с этими данными мы должны иметь представление о том, что у нас хранится.

Данные

Важно. В зависимости от объема данных и требуемой скорости мы можем применять совершенно разные подходы к их хранению, и это совершенно нормально.

Типы данных

Есть несколько способов разделения типов данных на группы.

Простые и структурированные

  • Простые типы данных: в терминах базы данных мы не оперируем их частями (например, Целое число, Дата или Фамилия). Естественно, в данном случае при последующей обработке можно использовать любые операции, однако не стоит рассчитывать на их эффективность.
  • Структурированные данные: мы хотим оперировать их частями при выполнении запросов (например, Адрес или Телефон)

Сущности и связи сущностей

  • Сущности: соответствуют Entity Type (например, Студент, Группа или Предмет)
  • Связи сущностей: связи сущностей между собой (например, Студент состоит в Группе или Оценка Студента по Предмету). Для определения вида связи может использоваться термин нагруженная (как Оценка в предыдущем примере).

Ограничения целостности

Для баз данных очень важны ограничения целостности. Мы заранее хотим прописать как можно больше проверок, которые не позволят добавить в базу невалидные данные, так как в базу мы кладем данные для длительного хранения. В момент обнаружения их не валидности может оказаться, что нет возможности их исправить. Это и мотивирует отлавливать наибольшее количество ошибок в данных еще на этапе их внесения в базу. В данном случае увеличение количества ограничений позволяет как можно раньше обрабатывать ошибки.

  • На отдельные значения (например, Возраст как целое положительное число или Вероятность как вещественное от 0 до 1)
  • На записи (например, Начало интервала меньше его Конца)
  • На наборы записей одного типа (например, Номера паспортов должны быть уникальными)
  • На связи данных (например, Студент учится ровно в одной Группе)