Aprimorando o mapeamento objeto-dado
A tabela client do Small Business Development Center foi definida anteriormente sem incluir um ponto de contato do cliente. A primeira ideia da equipe de banco de dados foi simplesmente adicionar as colunas contact_name e contact_email à tabela de clientes. No entanto, você se opõe a esse plano com base nas boas práticas de organização de dados. No futuro, um contato pode ser referenciado em várias tabelas. Neste exercício, você vai definir estruturas de tabela para as informações de cliente e de contato que separem melhor os objetos client e contact.
Relembre a definição anterior da tabela client:
CREATE TABLE client (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
site_url VARCHAR(50),
num_employees SMALLINT,
num_customers INTEGER
);
Este exercício faz parte do curso
Criando bancos de dados PostgreSQL
Instruções do exercício
- Crie uma tabela
contactcom as colunasid(chave primária),name(tamanho máximo de 50) eemail(tamanho máximo de 50). - Altere a tabela
clientadicionando uma colunacontact_idcomo chave estrangeira.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
-- 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);