Определяем предметную область
Итак, мы подошли к вопросу проектирования БД. Что определяет выбор модели и структуры данных? Постановка задачи. От задачи зависит то, каким образом будут организованы данные.
Например, мы разрабатываем ПО для сайта продажи автомобилей. Скорее всего у нас будет информация о марках и моделях авто, их характеристиках и конфигурациях. Если мы разрабатываем ПО для университета, то скорее всего наша БД будет содержать информацию о студентах, преподавателях, подразделениях. Если речь о продаже авиабилетов, то мы будем говорить о пассажирах, маршрутах, стоимости билетов.
При этом, именно постановка задачи определяет данные (а не просто определение сферы, для которой разрабатывается ПО). То есть "университет" - это не постановка задачи. Для примера рассмотрим две задачи:
- Бухгалтерская система университета. В ней речь пойдет о сотрудниках (в том числе технический персонал, администрация), зарплатах, грантах, бюджетах.
- Система составления расписания университета. Здесь речь идет о группах, студентах, преподавателях, кабинетах, кафедрах.
И 1 и 2 являются составными частями университета. Мы меняем точку зрения на него. Выбранная точка зрения называется предметной областью.
Аналогично, вспомните, когда вы покупаете билет на самолет, там нет информации о терминале и выходе на самолет. Т.к. это информация из другого контекста - работы аэропорта, а не авиакомпании.
Предметная область - это часть реального мира, подлежащая изучению с целью создания информационной системы.
Есть несколько подходов, форматов описания требований (постановки задачи). Подробнее о них вы можете узнать в следующей (дополнительной) главе.
На данный момент достаточно перечислить несколько типичных вариантов использования нашей БД (собственно, это и есть что-то похожее на user stories):
- Получить список рейсов из города A в город B в день X
- Получить информацию о посадочных местах и классах обслуживания в различных самолетах
- Получить статистику по задержанным рейсам за конкретный период
- Забронировать билет
- Узнать "маршрут" (список перелетов) для билета конкретного пассажира
После постановки задач появляется представление о том, какие нам необходимы данные: ФИО пассажиров, модели самолетов и количество посадочных мест, расписание рейсов... С этого и начинается процесс проектирования БД: с определения данных, сущностей и связей (отношений) между ними. В итоге мы получаем структуру БД, также именуемую схемой БД.
Подходы к представлению схем зависят от модели данных. Например, для описания структуры XML-документа существует специальный язык XML Schema. Аналогичный JSON Schema используется для описания данных в формате JSON.
Мы же сделаем акцент на способах описания реляционных данных.