Ksenia27082004 / kursach2024

0 stars 0 forks source link

Физическая схема БД #11

Open Ksenia27082004 opened 2 weeks ago

Ksenia27082004 commented 2 weeks ago

1. Пользователи (Users)

Название столбца Тип данных Ограничения Описание
user_id INTEGER PRIMARY KEY, NOT NULL Уникальный идентификатор пользователя
fullname VARCHAR(100) NOT NULL ФИО пользователя
email_us VARCHAR(100) NOT NULL Эл. почта пользователя для отправки на нее в дальнейшем подтверждения записей
phone_us VARCHAR(20) NOT NULL Телефон пользователя для подтверждения при регистрации
password_us VARCHAR(100) NOT NULL Пароль пользователя
acc_status BOOLEAN NULL Статус аккаунта (подтвержден/не подтвержден)
user_status CHECK status IN (1,2,3) NULL Статус пользователя (Пользователь/мастер/администратор)
is_superuser BOOLEAN NULL Роль модератора

2. Записи (Records)

Название столбца Тип данных Ограничения Описание
record_id INTEGER PRIMARY KEY, NOT NULL Уникальный идентификатор записи
user_id INTEGER NOT NULL REFERENCES Users (user_id) Уникальный идентификатор пользователя
date_create DATE NULL Дата создания записи
date_admis DATE NULL Дата проведения услуг
time_start TIME NULL Время начала проведения услуги
time_end TIME NULL Время конца проведения услуг
status CHECK status IN (1,2,3,4) NOT NULL Статус записи (ожидает подтверждения/подтверждена/проведена/ожидает отзыва)
rating_rewiew REAL NULL Оценка проведения услуг в отзыве
text_rewiew VARCHAR(30) NULL Текст отзыва (по желанию)

3. Мастера (Masters)

Название столбца Тип данных Ограничения Описание
master_id INTEGER PRIMARY KEY, NOT NULL Уникальный идентификатор мастера
fullname_mast VARCHAR(50) NOT NULL ФИО мастера
inform_add VARCHAR(250) NULL Дополнительная информация о мастере (сколько лет в данной сфере, какая специализация, где проходил обучение и т.п.)

4. Услуги (Services)

Название столбца Тип данных Ограничения Описание
service_id INTEGER PRIMARY KEY, NOT NULL Уникальный идентификатор услуги
title_serv VARCHAR(30) NOT NULL Название услуги
time_serv TIME NOT NULL Время оказание услуги
price INTEGER NOT NULL Цена за услугу
add_inf VARCHAR(250) NULL Дополнительная информация об услуге (какие средства используются, что происходит с волосами, как поддерживать уход и т.п.)

5. Мастера-Услуги (Masters-Services)

Название столбца Тип данных Ограничения Описание
id_ms INTEGER PRIMARY KEY, NOT NULL Уникальный идентификатор мастера и его услуги
service_id INTEGER NOT NULL REFERENCES Services (service_id) Уникальный идентификатор услуги
master_id INTEGER NOT NULL REFERENCES Masters (master_id) Уникальный идентификатор мастера

6. Таймслоты (Time_slots)

Название столбца Тип данных Ограничения Описание
id_slot INTEGER PRIMARY KEY, NOT NULL Уникальный идентификатор таймслота
id_ms INTEGER NOT NULL REFERENCES Masters_Services (id_ms) Идентификатор услуги мастера
record_id INTEGER NOT NULL REFERENCES Records (record_id) Идентификатор записи
fullname_mast VARCHAR(50) NOT NULL REFERENCES Masters (fullname_mast) ФИО мастера
number_slot INTEGER NOT NULL Номер таймслота
date_slot DATE NOT NULL Дата таймслота
status_slot VARCHAR(20) NULL Статус таймслота (доступен/занят)

Обоснование типов данных: INTEGER: Используется для идентификаторов пользователей и записей, так как позволяет хранить количество значений. VARCHAR: Позволяет гибко управлять строковыми данными, такими как имена и email, с ограничением по длине для контроля объема данных. BOOLEAN: Используется, например, для флага is_superuser, так как указывает на статус суперпользователя. DATE и TIME: Эти типы позволяют более точно хранить даты и время для записей и таймслотов. REAL: Используется для хранения числовых значений с плавающей запятой. Он может содержать как целые числа, так и числа с дробной частью, и его значение записывается в формате с плавающей точкой (например, 1.234567 или 3.14). REAL особенно полезен в случаях, когда требуется высокая точность для работы с дробными значениями, например, для финансовых вычислений или научных данных. CHECK: Используется, чтобы убедиться, что значения в столбце соответствуют определённым условиям.

wldmr-key commented 1 week ago

хм... обсуждаемо...