An error occurred while loading the file. Please try again.
-
milkyway authoredf400b546
- Задание 1
- Архитектура базы данных для интернет-магазина
- Сущности и их связи:
- users
- profiles
- orders
- products
- ordered_products
- Целостность данных
- Задание 2
- Архитектура базы данных для системы управления обучением (LMS)
- Сущности и связи:
- Задание 3
- Архитектура базы данных для системы управления проектами
- Сущности и связи:
README.md 9.06 KiB
Задание 1
Архитектура базы данных для интернет-магазина
Сущности и их связи:
users
- id - первичный ключ
- name - имя пользователя
profiles
- id - внешний ключ (связь с users)
- phone - номер телефона
- birthdate - дата рождения
- Связь: one-to-one (один профиль принадлежит одному пользователю)
orders
- id - первичный ключ
- owner_id - внешний ключ (связь с users)
- Связь: one-to-one (каждый заказ принадлежит одному пользователю)
products
- id - первичный ключ
- title - название товара
- price - цена
- description - описание товара
ordered_products
- product_id - внешний ключ (связь с products)
- order_id - внешний ключ (связь с orders)
- Связь: many-to-many (один товар может входить в несколько заказов, один заказ может содержать несколько товаров)
- Промежуточная таблица используется для нормализации базы данных (соответствие первой нормальной форме).
Целостность данных
Целостность данных обеспечивается за счет удаления из ordered_products
записей, соответствующих удаленному заказу.
Задание 2
Архитектура базы данных для системы управления обучением (LMS)
Сущности и связи:
-
students
-
id
- первичный ключ -
name
- имя студента -
email
- электронная почта студента
-
-
students_profiles
-
student_id
- внешний ключ для связи с таблицейstudents
-
address
- адрес проживания -
birthdate
- дата рождения - Связь one-to-one, так как один профиль принадлежит только одному студенту
-
-
teachers
-
id
- первичный ключ -
name
- имя преподавателя -
email
- электронная почта преподавателя
-
-
teachers_profiles
-
teacher_id
- внешний ключ для связи с таблицейteachers
-
specialization
- специализация преподавателя -
phone
- контактный номер телефона - Связь one-to-one, так как один профиль принадлежит только одному преподавателю
-
-
courses
-
id
- первичный ключ -
title
- название курса -
description
- описание курса
-
-
students_courses
-
course_id
- внешний ключ для связи с курсом -
student_id
- внешний ключ для связи со студентом -
enrollment_date
- дата записи на курс - Связь many-to-many, так как один студент может записаться на несколько курсов, а один курс может иметь много студентов
-
-
teachers_courses
-
course_id
- внешний ключ для связи с курсом -
teacher_id
- внешний ключ для связи с преподавателем - Связь many-to-many, так как один курс может вести несколько преподавателей, а один преподаватель может вести несколько курсов
-
-
sequences_courses
-
parent_course
- внешний ключ на курс-предшественник -
child_course
- внешний ключ на следующий курс - Позволяет выстраивать курсы в последовательности, формируя образовательные программы
-
Целостность данных обеспечивается путем удаления записей из зависимых таблиц при удалении связанных студентов, преподавателей или курсов.
- дополнительную информацию о студентах добавлять в таблицу
students_profiles
- дополнительную информацию о преподавателях добавлять в таблицу
teachers_profiles
Задание 3
Архитектура базы данных для системы управления проектами
Сущности и связи:
-
users
-
id
- первичный ключ -
name
- имя пользователя -
email
- электронная почта пользователя
-
-
users_profiles
-
user_id
- внешний ключ для связи с таблицейusers
-
biography
- биография пользователя -
phone
- контактный номер телефона - Связь one-to-one, так как один профиль принадлежит только одному пользователю
-
-
projects
-
id
- первичный ключ -
title
- название проекта -
description
- описание проекта
-
-
users_projects
-
user_id
- внешний ключ для связи с пользователем -
project_id
- внешний ключ для связи с проектом -
user_role
- внешний ключ для определения роли пользователя в проекте -
entry_date
- дата вступления в проект - Связь many-to-many, так как пользователь может участвовать в нескольких проектах, а один проект может включать нескольких пользователей
-
-
roles
-
id
- первичный ключ -
name
- название роли - Используется для определения ролей пользователей в проектах
-
-
tasks
-
id
- первичный ключ -
title
- название задачи -
description
- описание задачи -
status
- внешний ключ на статус задачи -
priority
- внешний ключ на приоритет задачи -
project_id
- внешний ключ на проект, к которому относится задача
-
-
task_statuses
-
id
- первичный ключ -
name
- название статуса задачи
-
-
task_priorities
-
id
- первичный ключ -
name
- уровень приоритета задачи
-
-
tasks_sequenses
-
parent_task
- внешний ключ на основную задачу -
child_task
- внешний ключ на подзадачу - Позволяет выстраивать задачи в иерархии
-
-
tasks_tags
-
task_id
- внешний ключ для связи с задачей -
tag_id
- внешний ключ для связи с тегом - Связь many-to-many, так как одна задача может иметь несколько тегов, а один тег может относиться к разным задачам
-
-
tags
-
id
- первичный ключ -
name
- название тега
-
-
comments
-
id
- первичный ключ -
content
- текст комментария -
task_id
- внешний ключ для связи с задачей - Позволяет оставлять комментарии к задачам
-
-
files
-
id
- первичный ключ -
title
- название файла -
content
- содержимое файла (bytea) -
task_id
- внешний ключ для связи с задачей - Позволяет прикреплять файлы к задачам
-
Целостность данных обеспечивается каскадным удалением зависимых записей при удалении проектов, задач или пользователей.
Для корректной масштабируемости системы необходимо соблюдать следующие правила:
- дополнительную информацию о пользователях добавлять в таблицу
users_profiles