Чат PHP-разработчиков
Логические задачи с собеседований
База данных для блога

Создаём базу данных для будущего блога

Сегодня мы с вами создадим базу данных для нашего будущего блога. Пока что она будет состоять только из двух таблиц – пользователи и статьи. Но этого уже будет достаточно для того чтобы начать работать с ней из PHP. Поехали!

Этот и дальнейшие уроки предполагают, что вы имеете базовые представления о работе с базой данных MySQL. Если же нет – пройдите наш бесплатный курс MySQL с нуля, прежде чем идти дальше.

Итак, в первую очередь давайте создадим новую базу данных для нашего приложения. Если у вас как и у меня установлен OpenServer, то все действия будут такими же. Иначе – сами мучайтесь :D.

Открываем phpMyAdmin http://127.0.0.1/openserver/phpmyadmin/server_databases.php и открываем вкладку «Базы данных». Вводим имя нашей новой базы - my_project, и выбираем сравнение utf8_general_ci.

Таблица пользователей

Давайте теперь создадим таблицу с пользователями. Назовём её users и создадим в ней следующие поля:

  • id с типом INT и типом AUTO_INCREMENT – это id пользователя
  • nickname c типом VARCHAR, длиной в 128 символов и уникальным индексом – чтобы никнейм мог принадлежать только одному пользователю и не было дублей
  • email c типом VARCHAR, длиной в 255 символов и уникальным индексом – чтобы один email можно было использовать лишь единожды
  • is_confirmed с типом BOOLEAN – подтверждён ли email (по умолчанию - false)
  • role с типом ENUM и двумя возможными значениями – admin и user. Здесь будем хранить тип пользователя.
  • password_hash с типом VARCHAR и длиной в 255 символов – тут будем хранить хеш пользовательского пароля
  • auth_token с типом VARCHAR и длиной в 255 символов – тут будем хранить авторизационный токен, мы пока не изучали что это такое, пока просто добавим, позже пригодится
  • created_at с типом DATETIME – тут будет храниться дата и время создания статьи. По умолчанию в качестве значения будет использоваться CURRENT_TIMESTAMP – то есть текущие дата и время.

структура таблицы пользователей

Запрос для создания таблицы:

Код доступен только после покупки курса ООП в PHP.

Давайте теперь добавим пару пользователей: админа и простого пользователя. Для этого выполним запрос:

Код доступен только после покупки курса ООП в PHP.

Зайдём в нашу табличку users и убедимся в том, что появилось 2 новых записи.

Записи о пользователях

Таблица для статей

Теперь давайте создадим таблицу «articles» для будущих статей.
Определяем следующие столбцы:

  • id с типом int и типом AUTO_INCREMENT (A_I) – id самой статьи;
  • author_id с типом int – это id автора статьи;
  • name c типом VARCHAR и длиной 255 – название статьи;
  • text с типом TEXT – текст статьи;
  • created_at с типом DATETIME – тут будет храниться дата и время создания статьи. По умолчанию в качестве значения будет использоваться CURRENT_TIMESTAMP – то есть текущие дата и время.

Создание таблицы для статей

Жмем «вперед» и получаем следующую картину:

Структура таблицы со статьями

Запрос для создания таблицы:

Код доступен только после покупки курса ООП в PHP.

Ну и давайте добавим парочку новых статей. Выполним следующие запросы:

Код доступен только после покупки курса ООП в PHP.

Зайдём в табличку и полюбуемся на новые записи.

Записи о статьях

Вот и всё – мы создали простейшую базу данных для блога и даже добавили в неё несколько записей. В следующих уроках мы будем работать с неё с помощью PHP.

Читайте также
Комментарии


SBTesla
SBTesla

При добавлении записи

INSERT INTO `articles` (`id`, `author_id`, `name`, `text`, `created_at`) VALUES (NULL, '1', 'Статья о том, как я погулял', 'Шёл я значит по тротуару, как вдруг...', CURRENT_TIMESTAMP);
INSERT INTO `articles` (`id`, `author_id`, `name`, `text`, `created_at`) VALUES (NULL, '1', 'Пост о жизни', 'Сидел я тут на кухне с друганом и тут он задал такой вопрос...', CURRENT_TIMESTAMP);

Выдает ошибку что поле id не может содержать величину NULL. вбил ручками 1,2 все заработало,
Возможно это зависит от версии базы? А если допустим у меня 200+ статей можно как то указать что бы он добавлял автоматом номера?

ivashkevich
ivashkevich

Значит вы не выставили Auto Increment.