Сверь числа и знаки с фото.
Окно DB Browser for SQLite. Слева: Tables (1): sqlite_sequence; Индексы (0); Представления (0); Триггеры (0). Открыт диалог «Редактирование определения таблицы», вкладка «Поля». Вкладки: Поля, Index Constraints, Foreign Keys, Check Constraints. Колонки полей: Имя, Тип, НИ, ПК, АИ, У, По умолчанию, Проверить, Collation. Внизу SQL-редактор: 1 CREATE TABLE "[неразборчиво]" ( 2 3 );
Реляционная модель: данные — это таблицы имена столбцов = заголовок таблицы Таблица «Студенты» (students) student_id | last_name | first_name | group_id 1 | Иванов | Алексей | 1 2 | Петрова | Мария | 1 3 | Сидоров | Дмитрий | 1 4 | Кузнецова | Анна | 2 СТОЛБЕЦ (поле, атрибут) = одно свойство всех объектов; ЯЧЕЙКА = значение свойства у конкретного объекта; СТРОКА (запись) = один объект: один студент. Реляционная база данных — несколько таблиц, связанных между собой. «Реляционная» — от слова «отношение» (таблица и есть отношение). Связи строятся через общие столбцы-ключи — без дублирования данных. Порядок строк в таблице не гарантирован — нужные строки находят по условиям, а не «на глаз».
ER-диаграмма учебной базы «Университет» 5 сущностей (таблиц) и связи между ними. PK — первичный ключ, FK — внешний ключ.
groups — Группы group_id INTEGER PK group_name TEXT course INTEGER
students — Студенты student_id INTEGER PK last_name TEXT first_name TEXT group_id INTEGER FK
subjects — Предметы subject_id INTEGER PK subject_name TEXT hours INTEGER
grades — Оценки grade_id INTEGER PK student_id INTEGER FK subject_id INTEGER FK teacher_id INTEGER FK grade INTEGER (2..5) grade_date TEXT
teachers — Преподаватели teacher_id INTEGER PK last_name TEXT first_name TEXT middle_name TEXT department TEXT
Связи: groups 1 : ∞ students («в одной группе — много студентов»); students 1 : ∞ grades («у студента — много оценок»); subjects 1 : ∞ grades («по предмету — много оценок»); teachers 1 : ∞ grades («преподаватель ставит много оценок»). Таблица grades — связующая: у одной оценки ровно ОДИН студент, ОДИН предмет и ОДИН преподаватель. Такая связь называется «один ко многим» (1 : ∞) и реализуется внешними ключами (FK).
Модуль 2. Установка DB Browser for SQLite Теория: metanit.com Установка DB Browser for SQLite: 6 простых шагов 1 Откройте любой браузер (Chrome, Firefox, Edge...) 2 Перейдите на сайт sqlitebrowser.org 3 Нажмите большую кнопку «Download» 4 Выберите версию для своей ОС: Windows 64-bit / macOS / Linux 5 Запустите установщик: Next → I Agree → Next → Install 6 Нажмите «Finish» — программа установлена и открыта
sqlitebrowser.org — Download Download Windows 64-bit installer macOS / Linux / PortableApp Страница загрузки: одна зелёная кнопка и список версий. PortableApp — версия без установки (просто распаковать).
Если установка «ругается» • Windows SmartScreen: «Подробнее» → «Выполнить» • Путь установки оставьте по умолчанию • Права администратора: нажмите «Да»
ПОЛЕЗНО ЗНАТЬ • Программа бесплатная (open source) • Интернет после установки не нужен • Интерфейс переключается на русский: View → Preferences (или язык системы)
ПОДСКАЗКА. На учебном ПК DB Browser for SQLite уже стоит. Если его нет, скачайте PortableApp-версию: это архив, который достаточно распаковать в свою папку (или на флешку) и запустить из него файл.
Интерфейс DB Browser: окно программы и 3 главные вкладки DB Browser for SQLite — university.sqlite File Edit View Tools Help New Database | Open Database | Write Changes | Rollback Changes | Refresh Database Structure | Browse Data | Execute SQL | Edit Pragmas Tables (5): groups, students, teachers, subjects, grades. Выбрана таблица students. Столбцы выбранной таблицы: student_id — INTEGER — PK last_name — TEXT — NOT NULL first_name — TEXT — NOT NULL group_id — INTEGER — FK → groups Кнопки: Create Table • Edit Table • Delete Table Так выглядит вкладка «Database Structure».
Вкладка 1. Database Structure (Структура базы): список всех таблиц, их столбцы, типы и ключи. Здесь создают таблицы кнопкой «Create Table». Вкладка 2. Browse Data (Просмотр данных): содержимое таблицы в виде сетки, как в Excel. Строки можно добавлять и править мышью, без SQL. Вкладка 3. Execute SQL (Выполнить SQL): большое поле для SQL-запросов. ► или F5 — выполнить; результаты появляются в таблице снизу. Кнопки на панели: «Write Changes» (Ctrl+S) — сохранить изменения в файл базы; «Rollback Changes» — отменить все несохранённые изменения.
2.3. Создаём файл базы данных
- Создайте на диске папку для работы, например C:\db_practice (Windows) или ~/db_practice (Linux/macOS).
- В DB Browser нажмите File → New Database (или кнопку «New Database»).
- Программа спросит, куда сохранить файл. Выберите свою папку и укажите имя: university.sqlite. Нажмите Save.
- Появится окно создания первой таблицы — пока просто нажмите Cancel (таблицы будем создавать в модуле 3 запросами SQL).
- Убедитесь, что в заголовке окна появилось имя файла: «DB Browser for SQLite — university.sqlite». Пустая база готова!
Модуль 3. Создание базы и таблиц: CREATE TABLE Анатомия таблицы «Студенты»: как читать CREATE TABLE 1 CREATE TABLE students ( 2 student_id INTEGER PRIMARY KEY AUTOINCREMENT, ...
Коротко: нужен файл university.sqlite с пятью таблицами. Создай его в DB Browser, закрой окно из первого фото кнопкой «Отмена», открой вкладку Execute SQL, выполни скрипт ниже и нажми Write Changes (Ctrl+S). SQLite хранит всю базу в одном файле.
1. Создаём файл базы
File → New Databaseили кнопкаNew Database.- Выбери папку, например
C:\db_practice. - Имя файла:
university.sqlite. - В окне создания таблицы нажми
Cancel. - Убедись, что в заголовке появилось
university.sqlite.
2. Создаём таблицы
Выполни этот скрипт во вкладке Execute SQL:
PRAGMA foreign_keys = ON;
CREATE TABLE "groups" (
group_id INTEGER PRIMARY KEY AUTOINCREMENT,
group_name TEXT NOT NULL,
course INTEGER NOT NULL
);
CREATE TABLE teachers (
teacher_id INTEGER PRIMARY KEY AUTOINCREMENT,
last_name TEXT NOT NULL,
first_name TEXT NOT NULL,
middle_name TEXT,
department TEXT NOT NULL
);
CREATE TABLE subjects (
subject_id INTEGER PRIMARY KEY AUTOINCREMENT,
subject_name TEXT NOT NULL,
hours INTEGER NOT NULL
);
CREATE TABLE students (
student_id INTEGER PRIMARY KEY AUTOINCREMENT,
last_name TEXT NOT NULL,
first_name TEXT NOT NULL,
group_id INTEGER NOT NULL,
FOREIGN KEY (group_id) REFERENCES "groups"(group_id)
);
CREATE TABLE grades (
grade_id INTEGER PRIMARY KEY AUTOINCREMENT,
student_id INTEGER NOT NULL,
subject_id INTEGER NOT NULL,
teacher_id INTEGER NOT NULL,
grade INTEGER NOT NULL CHECK (grade BETWEEN 2 AND 5),
grade_date TEXT NOT NULL,
FOREIGN KEY (student_id) REFERENCES students(student_id),
FOREIGN KEY (subject_id) REFERENCES subjects(subject_id),
FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id)
);
Порядок важен: сначала groups, затем students, а grades — последней, потому что она ссылается на остальные таблицы.
3. Добавляем данные
Ниже — демонстрационные данные, в том числе четверо студентов с фото. Данные из репозитория замени на свои.
INSERT INTO "groups" (group_id, group_name, course) VALUES
(1, 'Группа 1', 1),
(2, 'Группа 2', 1);
INSERT INTO teachers (teacher_id, last_name, first_name, middle_name, department) VALUES
(1, 'Смирнов', 'Иван', 'Петрович', 'Кафедра ИТ');
INSERT INTO subjects (subject_id, subject_name, hours) VALUES
(1, 'Базы данных', 80),
(2, 'Математика', 120);
INSERT INTO students (student_id, last_name, first_name, group_id) VALUES
(1, 'Иванов', 'Алексей', 1),
(2, 'Петрова', 'Мария', 1),
(3, 'Сидоров', 'Дмитрий', 1),
(4, 'Кузнецова', 'Анна', 2);
INSERT INTO grades (grade_id, student_id, subject_id, teacher_id, grade, grade_date) VALUES
(1, 1, 1, 1, 5, '2026-11-05'),
(2, 2, 1, 1, 4, '2026-11-06'),
(3, 3, 2, 1, 3, '2026-11-07');
После этого обязательно нажми Write Changes или Ctrl+S.
4. Проверка
Проверь ключи:
PRAGMA foreign_key_check;
PRAGMA integrity_check;
foreign_key_check должен вернуть пустой результат, а integrity_check — ok.
Проверь данные:
SELECT
s.last_name || ' ' || s.first_name AS student,
g.group_name,
sub.subject_name,
t.last_name AS teacher,
gr.grade,
gr.grade_date
FROM grades AS gr
JOIN students AS s ON s.student_id = gr.student_id
JOIN "groups" AS g ON g.group_id = s.group_id
JOIN subjects AS sub ON sub.subject_id = gr.subject_id
JOIN teachers AS t ON t.teacher_id = gr.teacher_id
ORDER BY gr.grade_date;
Должно вывести три оценки с фамилиями студентов, группами, предметами и преподавателями.
Что важно понять
PK— первичный ключ, уникальный номер строки, напримерstudent_id.FK— внешний ключ, ссылка на строку другой таблицы, напримерstudents.group_idссылается наgroups.group_id.- Связь \(1:\infty\) работает так: одна группа — много студентов; один студент — много оценок. Поэтому
group_idхранится вstudents, а не наоборот. grades— связующая таблица: каждая строка — одна оценка, у которой есть один студент, один предмет и один преподаватель.- Название группы хранится один раз в
groups; вstudentsтолькоgroup_id. Так нет дублирования и противоречий. PRAGMA foreign_keys = ONвключает проверку ссылок. Без неё SQLite по умолчанию может разрешить вставить оценку для несуществующего студента.CHECK (grade BETWEEN 2 AND 5)не даст поставить оценку 1 или 6.
Если в репозитории WorldOfPets/share есть готовый файл .sqlite, открой его через Open Database; если .sql — выполни его через Execute SQL; если .csv — импортируй через File → Import → Table from CSV file.