Browse Source

sql homework: post table

me@helium 7 years ago
parent
commit
63ce569d73
3 changed files with 65 additions and 2 deletions
  1. 1 1
      SQL.md
  2. 61 0
      SQLHomeWork.md
  3. 3 1
      TemplateEngine/twig_test.php

+ 1 - 1
SQL.md

@@ -449,7 +449,7 @@ SELECT
 нужно воспользоваться одной и той же таблицей в выборке несколько раз.
 
 В реляционных СУБД часто хранят древовидные структуры данных с помощью отношения **один-ко-многим** внутри одной таблицы. Для представления разных 
-уровней одной и той же таблицы используются псевдонимы:
+уровней дерева в одной и той же таблице используются псевдонимы:
 
 ```mysql
 SELECT 

+ 61 - 0
SQLHomeWork.md

@@ -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` заполнятся автоматически;
+
+#### Задание
+
+Добавьте несколько записей с осмысленными названиями и текстом.
+
+

+ 3 - 1
TemplateEngine/twig_test.php

@@ -8,4 +8,6 @@ $twig = new Twig_Environment($loader, array(
                                 ));
 
 echo $twig->render('index.tpl', array('url' => array(array("url" => 'http://google.com', "urlTitle" => "google"), 
-                                                     array("url" => 'http://gmail.com', "urlTitle" => "gmail"))));
+                                                     array("url" => 'http://gmail.com', "urlTitle" => "gmail"),
+                                                     array("url" => 'http://mail.ru', "urlTitle" => "Mail RU"),
+                                                     )));