Introducción
En este desafío, diseñarás y crearás una tabla employee_contacts en PostgreSQL para almacenar los detalles de contacto de los empleados, asegurando la integridad de los datos mediante tipos de datos y restricciones apropiadas. Trabajarás en un entorno preconfigurado donde la tabla employees ya ha sido creada.
Tu tarea consiste en conectarte a la base de datos PostgreSQL como el usuario postgres utilizando la herramienta psql y, posteriormente, ejecutar comandos SQL directamente para generar la tabla employee_contacts. La tabla debe incluir columnas para contact_id (clave primaria autoincremental), employee_id (clave foránea que referencia a la tabla employees), phone_number (único) y email (no nulo).
Crear la tabla de empleados
Diseña una tabla para almacenar los datos de contacto de los empleados, garantizando la integridad de la información mediante el uso de tipos de datos y restricciones adecuados.
La tabla employees ya ha sido creada para ti. En caso de que no la visualices, puedes crearla utilizando el siguiente comando:
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL
);
Tareas
- Crea una tabla llamada
employee_contactsen PostgreSQL. La tabla debe incluir las columnascontact_id(clave primaria),employee_id(clave foránea que referencia a la tablaemployees),phone_number(único) yemail(no nulo). - Asegúrate de que la columna
employee_idreferencie correctamente a la columnaemployee_idde la tablaemployees.
Requisitos
- La columna
contact_iddebe ser una clave primaria autoincremental. - La columna
phone_numberdebe ser única. - La columna
emailno debe permitir valoresNULL. - La columna
employee_iddebe ser una clave foránea que haga referencia a la tablaemployees. - Ejecuta los comandos SQL utilizando
psql.
Ejemplos
Las tablas employees y employee_contacts deben tener la siguiente estructura:

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)
Consejos
- Utiliza la sentencia
CREATE TABLEpara crear la tabla. - Emplea el tipo de dato
SERIALpara la columnacontact_idpara generar automáticamente valores enteros únicos. - Usa la restricción
PRIMARY KEYpara definir la clave primaria. - Utiliza la restricción
UNIQUEpara asegurar que la columnaphone_numbercontenga valores irrepetibles. - Aplica la restricción
NOT NULLpara garantizar que la columnaemailno contenga valores nulos. - Usa la restricción
FOREIGN KEYpara establecer la relación de clave foránea entre la columnaemployee_idde la tablaemployee_contactsy la columnaemployee_idde la tablaemployees. - Recuerda conectarte a la base de datos PostgreSQL usando
sudo -u postgres psqlantes de ejecutar los comandos SQL.
Resumen
En este desafío, el objetivo consistió en crear una tabla de PostgreSQL denominada employee_contacts dentro de un entorno específico. Esto implicó el diseño de una estructura de tabla con columnas para contact_id (clave primaria autoincremental), employee_id (clave foránea que referencia a la tabla employees), phone_number (único) y email (no nulo).
La solución requirió la conexión a la base de datos PostgreSQL como el usuario postgres mediante psql y la ejecución de los comandos SQL necesarios para definir la tabla y sus restricciones, garantizando así la integridad de los datos y las relaciones adecuadas entre las tablas.


