# Создание таблицы Итак, в [прошлой статье](usage_preparation.md) мы создали класс для работы с базой данных. Далее, мы научимся создавать таблицу в базе данных. Перед созданием таблицы, нужно написать класс-модель, реализующий интерфейс [IDBItem](../class_desc/interfaces/IDBItem.md) и с помощью атрибутов: - [AutoIncrement](../class_desc/attributes/AutoIncrement.md), - [Check](../class_desc/attributes/Check.md), - [Compare](../class_desc/attributes/Compare.md), - [ConvertToDB](../class_desc/attributes/ConvertToDB.md), - [DataType](../class_desc/attributes/DataType.md), - [DefaultValue](../class_desc/attributes/DefaultValue.md), - [FieldName](../class_desc/attributes/FieldName.md), - [ForeignKey](../class_desc/attributes/ForeignKey.md), - [IgnoredInDB](../class_desc/attributes/IgnoredInDB.md), - [NotNull](../class_desc/attributes/NotNull.md), - [PrimaryKey](../class_desc/attributes/PrimaryKey.md), - [Unique](../class_desc/attributes/Unique.md) настроить столбцы и поля. Создадим далее макет класса, описывающего пользователя сайта. ```php Id = $id; $this->Name = $name; $this->Email = $email; } } ``` Итак, у нас в таблице должно быть **3 столбца**: | id | user_name | user_mail | |:--:|:---------:|:---------:| | - | - | - | Значения во всех столбцах, кроме `user_name` должны быть уникальными, во всех столбцах не пустыми, а первичным ключом таблицы является столбец `id` с автозаполнением. Теперь давайте создадим таблицу `user`. Сперва давайте проверим, существует ли такая таблица в БД. В этом нам поможет метод [IsTableExist](../class_desc/classes/Database.md#101-проверка-существования-таблицы-istableexist): ```php if ($db->IsTableExist('user')) throw new PDOException("Ты чего это удумал? Таблица users уже существует!"); ``` Итак, таблицы нет и мы можем воспользоваться методом [CreateTable](../class_desc/classes/Database.md#102-создание-таблицы-createtable) для её создания: ```php if (!$db->CreateTable('user', "\\App\\Models\\User")) throw new PDOException("Ошибка создания таблицы: users"); ``` Таблица создана. [Предыдущий пункт](usage_preparation.md) | [На главную](../index.md) | [Следующий пункт](insert_data.md)