Lepsze odwzorowanie obiektów na dane
Tabela client w Small Business Development Center została wcześniej zdefiniowana bez uwzględnienia osoby kontaktowej dla klienta. Zespół bazodanowy chciał po prostu dodać kolumny contact_name i contact_email do tabeli klienta. Ty jednak sprzeciwiasz się temu rozwiązaniu, kierując się intuicją dotyczącą właściwej organizacji danych. W przyszłości dane kontaktowe mogą być przywoływane w wielu tabelach. W tym ćwiczeniu zdefiniujesz struktury tabel dla informacji o kliencie i osobie kontaktowej tak, aby lepiej oddzielić obiekty client i contact.
Przypomnienie poprzedniej definicji tabeli client:
CREATE TABLE client (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
site_url VARCHAR(50),
num_employees SMALLINT,
num_customers INTEGER
);
To ćwiczenie jest częścią kursu
Tworzenie baz danych w PostgreSQL
Instrukcje do ćwiczenia
- Utwórz tabelę
contactz kolumnamiid(klucz główny),name(maksymalna długość 50) orazemail(maksymalna długość 50). - Zmodyfikuj tabelę
client, dodając kolumnęcontact_idjako klucz obcy.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
-- 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);