Object-naar-data-mapping verbeteren
De client-tabel van het Small Business Development Center was eerder gedefinieerd zonder een contactpersoon voor de klant op te nemen. De eerste gedachte van het databaseteam was om simpelweg de kolommen contact_name en contact_email aan de client-tabel toe te voegen. Jij maakt echter bezwaar tegen dit plan, op basis van je gevoel voor goede data-organisatie. In de toekomst kan een contactpersoon in meerdere tabellen worden hergebruikt. In deze oefening definieer je tabelstructuren voor de klant- en contactinformatie die de objecten client en contact beter scheiden.
Herinner je de eerdere definitie van de client-tabel:
CREATE TABLE client (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
site_url VARCHAR(50),
num_employees SMALLINT,
num_customers INTEGER
);
Deze oefening maakt deel uit van de cursus
PostgreSQL-databases maken
Oefeninstructies
- Maak een
contact-tabel met de kolommenid(een primaire sleutel),name(maximale lengte 50) enemail(maximale lengte 50). - Wijzig de
client-tabel door eencontact_id-kolom toe te voegen als foreign key.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- 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);