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_contactsno PostgreSQL. A tabela deve incluir as colunascontact_id(chave primária),employee_id(chave estrangeira referenciando a tabelaemployees),phone_number(único) eemail(não nulo). - Garantir que a coluna
employee_idreferencie corretamente a colunaemployee_idda tabelaemployees.
Requisitos
- A coluna
contact_iddeve ser uma chave primária de incremento automático. - A coluna
phone_numberdeve ser única (UNIQUE). - A coluna
emailnão deve permitir valores nulos (NOT NULL). - A coluna
employee_iddeve ser uma chave estrangeira (FOREIGN KEY) referenciando a tabelaemployees. - Execute os comandos SQL utilizando o
psql.
Exemplos
As tabelas employees e employee_contacts devem apresentar a seguinte estrutura:

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 TABLEpara criar a tabela. - Use o tipo de dado
SERIALpara a colunacontact_idpara gerar valores inteiros únicos automaticamente. - Utilize a restrição
PRIMARY KEYpara definir a chave primária. - Utilize a restrição
UNIQUEpara garantir que a colunaphone_numbercontenha valores exclusivos. - Utilize a restrição
NOT NULLpara assegurar que a colunaemailnão aceite valores nulos. - Utilize a restrição
FOREIGN KEYpara estabelecer o relacionamento entre a colunaemployee_idda tabelaemployee_contactse a colunaemployee_idda tabelaemployees. - Lembre-se de conectar ao banco de dados PostgreSQL usando
sudo -u postgres psqlantes de executar os comandos SQL.
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.


