Migliorare la mappatura oggetto-dati
La tabella client dello Small Business Development Center era stata definita in precedenza senza includere un referente per il cliente. L’istinto iniziale del team del database era di aggiungere semplicemente le colonne contact_name e contact_email alla tabella client. Tuttavia, ti opponi a questo piano in base alle tue intuizioni sulla corretta organizzazione dei dati. In futuro, un contatto potrebbe essere referenziato in più tabelle. In questo esercizio, definirai strutture di tabella per le informazioni su cliente e contatto che separano meglio gli oggetti client e contact.
Ricorda la definizione precedente della tabella client:
CREATE TABLE client (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
site_url VARCHAR(50),
num_employees SMALLINT,
num_customers INTEGER
);
Questo esercizio fa parte del corso
Creare database PostgreSQL
Istruzioni dell'esercizio
- Crea una tabella
contactcon le colonneid(chiave primaria),name(lunghezza massima 50) edemail(lunghezza massima 50). - Modifica la tabella
clientaggiungendo una colonnacontact_idcome chiave esterna.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
-- 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);