Criar Tabela de Funcionários no PostgreSQL

PostgreSQLBeginner
Pratique Agora

Introdução

Neste desafio, você terá a tarefa de projetar e criar uma tabela employee_contacts no PostgreSQL para armazenar informações de contato dos colaboradores, assegurando a consistência dos dados através de tipos e restrições apropriadas. O ambiente de trabalho já conta com uma tabela employees previamente configurada.

Sua missão consiste em conectar-se ao banco de dados PostgreSQL utilizando o usuário postgres através do utilitário psql e, em seguida, executar comandos SQL para gerar a tabela employee_contacts. A tabela deve conter as colunas contact_id (chave primária com incremento automático), employee_id (chave estrangeira referenciando a tabela employees), phone_number (valor único) e email (obrigatório/não nulo).

Criar Tabela de Funcionários

Projete uma tabela para armazenar os detalhes de contato dos funcionários, garantindo a integridade dos dados por meio de tipos de dados e restrições (constraints) adequadas.

A tabela employees já foi criada para você. Caso não a encontre, você pode criá-la utilizando o seguinte comando:

CREATE TABLE employees (
    employee_id SERIAL PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL
);

Tarefas

  • Criar uma tabela chamada employee_contacts no PostgreSQL. A tabela deve incluir as colunas contact_id (chave primária), employee_id (chave estrangeira referenciando a tabela employees), phone_number (único) e email (não nulo).
  • Garantir que a coluna employee_id referencie corretamente a coluna employee_id da tabela employees.

Requisitos

  1. A coluna contact_id deve ser uma chave primária de incremento automático.
  2. A coluna phone_number deve ser única (UNIQUE).
  3. A coluna email não deve permitir valores nulos (NOT NULL).
  4. A coluna employee_id deve ser uma chave estrangeira (FOREIGN KEY) referenciando a tabela employees.
  5. Execute os comandos SQL utilizando o psql.

Exemplos

As tabelas employees e employee_contacts devem apresentar a seguinte estrutura:

Estrutura das tabelas de funcionários e contatos
                                          Table "public.employees"
   Column    |         Type          | Collation | Nullable |                    Default
-------------+-----------------------+-----------+----------+------------------------------------------------
 employee_id | integer               |           | not null | nextval('employees_employee_id_seq'::regclass)
 first_name  | character varying(50) |           |          |
 last_name   | character varying(50) |           |          |
Indexes:
    "employees_pkey" PRIMARY KEY, btree (employee_id)
Referenced by:
    TABLE "employee_contacts" CONSTRAINT "employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)
                                      Table "public.employee_contacts"
     Column     |          Type          | Collation | Nullable |                     Default
----------------+------------------------+-----------+----------+--------------------------------------------------
 contact_id     | integer                |           | not null | nextval('employee_contacts_contact_id_seq'::regclass)
 employee_id    | integer                |           |          |
 phone_number   | character varying(20)  |           |          |
 email          | character varying(100) |           | not null |
Indexes:
    "employee_contacts_pkey" PRIMARY KEY, btree (contact_id)
    "employee_contacts_phone_number_key" UNIQUE CONSTRAINT, btree (phone_number)
Foreign-key constraints:
    "employee_contacts_employee_id_fkey" FOREIGN KEY (employee_id) REFERENCES employees(employee_id)

Dicas

  • Utilize a instrução CREATE TABLE para criar a tabela.
  • Use o tipo de dado SERIAL para a coluna contact_id para gerar valores inteiros únicos automaticamente.
  • Utilize a restrição PRIMARY KEY para definir a chave primária.
  • Utilize a restrição UNIQUE para garantir que a coluna phone_number contenha valores exclusivos.
  • Utilize a restrição NOT NULL para assegurar que a coluna email não aceite valores nulos.
  • Utilize a restrição FOREIGN KEY para estabelecer o relacionamento entre a coluna employee_id da tabela employee_contacts e a coluna employee_id da tabela employees.
  • Lembre-se de conectar ao banco de dados PostgreSQL usando sudo -u postgres psql antes de executar os comandos SQL.
✨ Verificar Solução e Praticar

Resumo

Neste desafio, o objetivo foi criar uma tabela no PostgreSQL chamada employee_contacts dentro de um ambiente controlado. Isso envolveu o design da estrutura da tabela com colunas para contact_id (chave primária auto-incrementável), employee_id (chave estrangeira referenciando a tabela employees), phone_number (único) e email (obrigatório).

A solução exigiu a conexão ao banco de dados como usuário postgres via psql e a execução de comandos SQL para definir a tabela e suas restrições, garantindo a integridade dos dados e o relacionamento correto entre as entidades do banco de dados.