Introduction
Dans ce défi, vous allez concevoir et créer une table employee_contacts dans PostgreSQL afin de stocker les coordonnées des employés. L'objectif est de garantir l'intégrité des données en utilisant les types de données et les contraintes adéquats. Vous évoluerez dans un environnement où la table employees est déjà présente.
Votre mission consiste à vous connecter à la base de données PostgreSQL en tant qu'utilisateur postgres via l'outil psql, puis à exécuter les commandes SQL nécessaires pour générer la table employee_contacts. Cette table doit comporter les colonnes contact_id (clé primaire, auto-incrémentée), employee_id (clé étrangère référençant la table employees), phone_number (unique) et email (non nul).
Créer la table des employés
Concevez une table pour stocker les coordonnées des employés, en veillant à l'intégrité des données par le choix judicieux des types et des contraintes.
La table employees a été créée pour vous. Si elle n'apparaît pas, vous pouvez la générer à l'aide de la commande suivante :
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL
);
Tâches
- Créer une table nommée
employee_contactsdans PostgreSQL. La table doit inclure les colonnescontact_id(clé primaire),employee_id(clé étrangère référençant la tableemployees),phone_number(unique) etemail(non nul). - S'assurer que la colonne
employee_idréférence correctement la colonneemployee_idde la tableemployees.
Exigences
- La colonne
contact_iddoit être une clé primaire auto-incrémentée. - La colonne
phone_numberdoit être unique. - La colonne
emailne doit pas autoriser de valeursNULL. - La colonne
employee_iddoit être une clé étrangère pointant vers la tableemployees. - Exécuter les commandes SQL via
psql.
Exemples
Les tables employees et employee_contacts doivent présenter la structure suivante :

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)
Conseils
- Utilisez l'instruction
CREATE TABLEpour créer la table. - Utilisez le type de données
SERIALpour la colonnecontact_idafin de générer automatiquement des valeurs entières uniques. - Utilisez la contrainte
PRIMARY KEYpour définir la clé primaire. - Utilisez la contrainte
UNIQUEpour garantir que la colonnephone_numbercontient des valeurs uniques. - Utilisez la contrainte
NOT NULLpour empêcher les valeursNULLdans la colonneemail. - Utilisez la contrainte
FOREIGN KEYpour établir la relation entre la colonneemployee_idde la tableemployee_contactset celle de la tableemployees. - N'oubliez pas de vous connecter à la base de données PostgreSQL avec
sudo -u postgres psqlavant de lancer vos commandes SQL.
Résumé
Dans ce défi, l'objectif était de créer une table PostgreSQL nommée employee_contacts dans un environnement spécifique. Cela impliquait la conception d'une structure de table incluant un contact_id (clé primaire auto-incrémentée), un employee_id (clé étrangère liée à la table employees), un phone_number (unique) et un email (obligatoire).
La solution a nécessité une connexion à PostgreSQL via psql sous l'identité de l'utilisateur postgres, suivie de l'exécution des commandes SQL pour définir la table et ses contraintes, assurant ainsi la cohérence des données et les relations entre les tables.


