Lepší mapování objektů na data
Tabulka client Centra pro rozvoj malého podnikání byla původně definována bez kontaktní osoby klienta. Databázový tým nejprve uvažoval o tom, že do tabulky jednoduše přidá sloupce contact_name a contact_email. Ty ale odmítneš, protože tušíš, že správná organizace dat to vyžaduje jinak. V budoucnu by totiž kontakt mohl být odkazován ve více tabulkách. V tomto cvičení definuješ struktury tabulek pro informace o klientovi a kontaktu tak, aby objekty client a contact byly důsledně odděleny.
Připomeň si původní definici tabulky client:
CREATE TABLE client (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
site_url VARCHAR(50),
num_employees SMALLINT,
num_customers INTEGER
);
Toto cvičení je součástí kurzu
Tvorba PostgreSQL databází
Pokyny k cvičení
- Vytvoř tabulku
contactse sloupciid(primární klíč),name(maximální délka 50) aemail(maximální délka 50). - Uprav tabulku
clientpřidáním sloupcecontact_idjako cizího klíče.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
-- 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);