Всем привет! Сегодня мы рассмотрим процесс создания таблиц в СУБД PostgreSQL с помощью приложения pgAdmin 4, при этом мы разберем два способа: первый – с помощью инструкции языка SQL, и второй – с помощью специального графического конструктора.
В прошлой статье «Как создать базу данных в PostgreSQL» мы рассмотрели процесс создания пустой базы данных, т.е. того контейнера, в котором и хранятся все объекты этой базы данных. Одним из таких объектов является таблица, в которой и хранятся сами данные, т.е. таблица является неким физическим представлением определенной сущности реального мира.
Таким образом, данные хранятся не просто в базе данных, они хранятся в таблицах, которые в свою очередь хранятся в базе данных.
Поэтому сегодня давайте продолжим эту тему и рассмотрим процесс создания таблиц.
И так как, наверное, лучшим способом разобраться в какой-либо теме является ее рассмотрение на конкретном примере, т.е. на решении конкретной задачи, давайте сначала определим задачу, в которой нам нужно будет создать несколько таблиц.
Заметка! Для комплексного изучения языка SQL рекомендую почитать мою книгу «SQL код», в ней язык SQL рассматривается как стандарт, чтобы после прочтения данной книги можно было работать с языком SQL в любой системе управления базами данных.
Исходные данные
Давайте представим, что нам нужно создать две таблицы, первая – для хранения товаров, и вторая – для хранения категорий, к которым относятся эти товары.
Структура таблиц будет следующая:
- goods – таблица будет содержать информацию о товарах:
- product_id – идентификатор товара, данное значение должно автоматически генерироваться. Столбец не может содержать значения NULL и является первичным ключом;
- product_name – наименование товара, столбец не может содержать значения NULL;
- category – ссылка на категорию товара, столбец не может содержать значения NULL, но имеет значение по умолчанию, например, для случаев, когда товар еще не распределили в необходимую категорию, в этом случае товару будет присвоена категория по умолчанию («Не определена» или «Не указана»);
- price – цена товара, столбец может содержать значения NULL, например, с ценой еще не определились.
- categories — таблица будет содержать описание категорий товаров:
- category_id – идентификатор категории, данное значение должно автоматически генерироваться. Столбец не может содержать значения NULL и является первичным ключом;
- category_name – наименование категории, столбец не может содержать значения NULL.
При этом внести товар с несуществующей категорией нельзя, поэтому мы добавим еще и ограничение внешнего ключа.
Создание таблицы с помощью графического конструктора pgAdmin 4
Чтобы создать таблицу в PostgreSQL с помощью графического конструктора pgAdmin 4, необходимо в обозревателе щёлкнуть правой кнопкой мыши по контейнеру «Таблицы» и выбрать пункт «Создать -> Таблицу».
Затем запустится графический конструктор таблиц, где первым делом нам необходимо ввести название таблицы, сначала давайте создадим таблицу с категориями, чтобы потом в процессе создания таблицы с товарами у нас была возможность сразу определить ограничение внешнего ключа. Поэтому вводим categories.
В случае необходимости Вы можете изменить владельца таблицы и схему, в которой будет располагаться таблица.
Схема – это пространство имен в базе данных, своего рода контейнер объектов внутри базы данных, который позволяет логически разделять данные на схемы.
После того как название таблицы задано, мы можем переходить к определению столбцов. Для этого необходимо перейти на вкладку «Столбцы» и, используя кнопку плюс «+», добавить нужные столбцы.
Сначала создаем идентификатор категории, по условиям нашей задачи он должен отвечать определенным требованиям, поэтому мы должны задать следующие свойства у столбца:
- Включить параметр «Не NULL», чтобы параметр не мог хранить значения NULL;
- Включить параметр «Первичный ключ», чтобы столбец выполнял роль первичного ключа;
- Включить идентификацию, чтобы в столбце автоматически генерировались значения.
В качестве типа данных выберем целочисленный тип integer.
Далее точно так же добавляем столбец для хранения наименования категории. При этом тип данных у нас уже должен быть текстовый, например, character varying (VARCHAR) с длинной 100. Он уже не должен быть первичным ключом и значения генерировать здесь не нужно.
После ввода всех данных мы можем сохранить все изменения, нажав на кнопку «Сохранить», тем самым создав таблицу.
Затем точно также создаем таблицу с товарами и определяем соответствующие для нее столбцы. Столбец идентификатора товара определяем, как первичный ключ, и включаем у него идентификацию с автоматическим генерированием значений.
Заметка! ТОП 5 популярных систем управления базами данных (СУБД).
После того как столбцы определены, нам необходимо добавить значение по умолчанию для столбца category, а также определить ограничение внешнего ключа.
Чтобы у столбца задать значение по умолчанию, необходимо открыть детализированные свойства столбца, перейти там на вкладку «Ограничения» и в поле «По умолчанию» указать значение, которое будет присваиваться по умолчанию, например, 1.
Осталось определить ограничение внешнего ключа, иными словами, чтобы столбец category таблицы goods ссылался на столбец category_id таблицы categories, таким образом, мы определим связь между этими таблицами.
Чтобы это сделать, переходим на вкладку «Ограничения» (основной формы создания таблиц), затем переходим на вкладку «Внешний ключ» и с помощью кнопки плюс «+» добавляем новый внешний ключ.
Вводим название ограничения, и в детализированных свойствах на вкладке «Столбцы» задаем связь между таблицами, т.е. указываем столбцы и нажимаем на плюс «+» для добавления связи.
После этого все требования, указанные в нашей задаче, будут выполнены и мы можем нажать кнопку «Сохранить» для создания таблицы.
Созданные таблицы отобразятся в обозревателе.
Создание таблицы с помощью языка SQL
Теперь давайте рассмотрим процесс создания таблиц в PostgreSQL на языке SQL.
Таблицы в SQL создаются с помощью инструкции CREATE TABLE.
Для создания точно таких же таблиц и решения нашей задачи мы можем использовать следующие инструкции языка SQL.
Примечание! Если чуть ранее Вы создавали эти таблицы с помощью конструктора, то перед выполнением указанных ниже инструкций создания таблиц необходимо предварительно удалить эти таблицы, т.е. выполнить инструкцию DROP TABLE. В противном случае инструкции создания таблиц завершатся ошибкой, так как в пределах одной схемы не может быть таблиц с одинаковым названием.
Чтобы выполнить инструкции, открываем редактор запросов (Запросник), вводим инструкции и нажимаем «Execute».
-- Удаление таблиц DROP TABLE IF EXISTS goods, categories; -- Создание таблицы categories CREATE TABLE categories ( category_id INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, category_name VARCHAR(100) NOT NULL ); -- Создание таблицы goods CREATE TABLE goods ( product_id INT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, product_name VARCHAR(100) NOT NULL, category INT NOT NULL DEFAULT 1, price NUMERIC(18,2) NULL, CONSTRAINT fk_category_goods FOREIGN KEY (category) REFERENCES categories (category_id) );
Создание таблиц в PostgreSQL с помощью pgAdmin 4 (видеоматериал)
На сегодня это все, надеюсь, материал был Вам интересен и полезен, пока!