Для создания структуры базы данных «Программа передач на неделю» необходимо определить основные сущности и их связи, чтобы можно было эффективно отвечать на заданные вопросы.
Основные сущности
Каналы
channel_id(PK) - уникальный идентификатор каналаchannel_name- название канала
Программы
program_id(PK) - уникальный идентификатор программыtitle- название программыdescription- описание программыgenre- жанр программы (развлекательная, детская, спортивная, новости и т.д.)start_time- время начала программыend_time- время окончания программыday_of_week- день недели, когда программа транслируется (пн, вт, ср, чт, пт, сб, вс)channel_id(FK) - идентификатор канала, к которому относится программа
Структура базы данных
CREATE TABLE Channels (
channel_id INT PRIMARY KEY,
channel_name VARCHAR(100) NOT NULL
);
CREATE TABLE Programs (
program_id INT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
genre VARCHAR(50),
start_time TIME,
end_time TIME,
day_of_week VARCHAR(10),
channel_id INT,
FOREIGN KEY (channel_id) REFERENCES Channels(channel_id)
);
Примеры записей
Таблица Channels:
| channel_id | channel_name |
|---|---|
| 1 | РТР |
| 2 | НТВ |
| 3 | ОРТ |
| 4 | HTB |
Таблица Programs:
| program_id | title | description | genre | start_time | end_time | day_of_week | channel_id |
|---|---|---|---|---|---|---|---|
| 1 | Утренняя куртка | Развлекательная программа | Развлекательная | 10:00 | 11:00 | понедельник | 1 |
| 2 | Мультики для малышей | Мультфильмы | Детская | 12:00 | 13:00 | суббота | 3 |
| 3 | Спортивные новости | Обзор спортивных событий | Спортивная | 21:00 | 22:00 | понедельник | 2 |
| 4 | Веселая карусель | Развлекательная программа | Развлекательная | 18:00 | 19:00 | суббота | 4 |
| 5 | Время новостей | Новости страны | Новости | 21:00 | 22:00 | понедельник | 1 |
| 6 | Вечерние новости | Новости в 20:00. | Новости | 20:00 | 21:00 | понедельник | 2 |
SQL-запросы для получения ответов на вопросы
- Какие развлекательные программы идут в каждый день по РТР?
SELECT title, start_time, end_time
FROM Programs
WHERE genre = 'Развлекательная' AND channel_id = 1
ORDER BY day_of_week, start_time;
- Какие детские фильмы будут показаны с 12.00 до 20.00 в субботу по HTB?
SELECT title, start_time, end_time
FROM Programs
WHERE genre = 'Детская' AND start_time BETWEEN '12:00' AND '20:00'
AND day_of_week = 'суббота' AND channel_id = 4;
- Какие спортивные программы идут в понедельник после 20.00?
SELECT title, start_time, end_time
FROM Programs
WHERE genre = 'Спортивная' AND day_of_week = 'понедельник' AND start_time > '20:00';
- Во сколько будут показаны программы новостей в понедельник по каналам РТР и НТВ?
SELECT title, start_time
FROM Programs
WHERE genre = 'Новости' AND day_of_week = 'понедельник'
AND (channel_id = 1 OR channel_id = 2);
- В какое время идут мультфильмы по ОРТ?
SELECT start_time, end_time
FROM Programs
WHERE genre = 'Детская' AND channel_id = 3;
Заключение
Эта структура базы данных и описанные запросы позволят эффективно управлять программой передач и отвечать на заданные вопросы. При необходимости можно добавить дополнительные атрибуты или расширить структуру для более детализированного управления данными.