|
@@ -0,0 +1,61 @@
|
|
|
+# Домашнее задание по SQL.
|
|
|
+
|
|
|
+Данный практикум предназнчен для усвоения ER, SQL, запросов в области Web.
|
|
|
+
|
|
|
+## Предметная область и связи.
|
|
|
+
|
|
|
+### Сущности
|
|
|
+
|
|
|
+Рассмотрим обычный блог. В блоге есть:
|
|
|
+
|
|
|
+- Посты.
|
|
|
+- Комменты к постам.
|
|
|
+- Тэги постов.
|
|
|
+
|
|
|
+Это основные сущности, каждой из которых будет соответствовать таблица в **mysql**.
|
|
|
+
|
|
|
+### Отношения и связи
|
|
|
+
|
|
|
+- К *каждому* посту может быть несколько комментов. А значит, это связь **один-ко-многим** (к одному посту - несколько комментов)
|
|
|
+- Комментарии могут быть в форме дерева, т. е. у каждого комментария может быть родитель (опять же связь **один-ко-многи**)
|
|
|
+- У *каждого* поста может быть несколько тэгов; у *каждого* тэга - несколько постов (связь **многие-ко-многим** через смежную таблицу).
|
|
|
+
|
|
|
+Таким образом к трем таблицам сущностей добавляется четвертая - смежная таблица **тэги-к-постам**
|
|
|
+
|
|
|
+## SQL
|
|
|
+
|
|
|
+Опишем структуру таблиц:
|
|
|
+
|
|
|
+```mysql
|
|
|
+CREATE DATABASE blog;
|
|
|
+use blog
|
|
|
+```
|
|
|
+
|
|
|
+### Таблица `post`
|
|
|
+
|
|
|
+```mysql
|
|
|
+CREATE table post (
|
|
|
+ post_id SERIAL,
|
|
|
+ post_title VARCHAR(255),
|
|
|
+ post_text TEXT,
|
|
|
+ post_create_datetime DATETIME,
|
|
|
+ post_update_datetime TIMESTAMP
|
|
|
+);
|
|
|
+```
|
|
|
+
|
|
|
+Вставим тестовые данные в таблицу:
|
|
|
+
|
|
|
+```mysql
|
|
|
+INSERT INTO post SET
|
|
|
+ post_title = 'subject',
|
|
|
+ post_text = "text body",
|
|
|
+ post_create_datetime = NOW();
|
|
|
+```
|
|
|
+
|
|
|
+поля `post_id` и `post_update_datetime` заполнятся автоматически;
|
|
|
+
|
|
|
+#### Задание
|
|
|
+
|
|
|
+Добавьте несколько записей с осмысленными названиями и текстом.
|
|
|
+
|
|
|
+
|