Améliorer la correspondance entre objets et données
La table client du Small Business Development Center a été définie sans inclure de point de contact pour le client. Le premier réflexe de l’équipe base de données a été d’ajouter simplement les colonnes contact_name et contact_email à la table client. Cependant, vous vous opposez à ce plan au nom des bonnes pratiques d’organisation des données. À l’avenir, un même contact pourrait être référencé dans plusieurs tables. Dans cet exercice, vous allez définir des structures de tables pour les informations client et contact qui séparent mieux les objets client et contact.
Rappelez-vous la définition précédente de la table client :
CREATE TABLE client (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
site_url VARCHAR(50),
num_employees SMALLINT,
num_customers INTEGER
);
Cet exercice fait partie du cours
Créer des bases de données PostgreSQL
Instructions
- Créez une table
contactavec les colonnesid(clé primaire),name(longueur maximale de 50) etemail(longueur maximale de 50). - Modifiez la table
clienten ajoutant une colonnecontact_idcomme clé étrangère.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
-- Create the contact table
___ ___ ___ (
-- Define the id primary key column
___ SERIAL ___ ___,
-- Define the name column
___ ___(50) NOT NULL,
-- Define the email column
___ VARCHAR(___) NOT NULL
);
-- Add contact_id to the client table
ALTER TABLE ___ ADD ___ INTEGER NOT NULL;
-- Add a FOREIGN KEY constraint to the client table
ALTER TABLE ___ ADD CONSTRAINT fk_c_id FOREIGN KEY (___) REFERENCES ___(id);