Alguém pode me ajudar com esse exercício? eu criei as tabelas, PORÉM o intem 6: o cpf continua podendo repetir, mesmo colocando a chave primária Unique; No intem 4 e 5 e 7 e 8 não consegui identificar como faz mesmo com as aulas da alura, tentei pesquisar mas também não encontrei;
--ABAIXO SEGUE O CÓDIGO--
1As tabelas devem ser de primary id auto incrementado; 2Deve existir um relacionamento de 1->N (de 1 para muitos) entre a tabela Cliente e a tabela Endereco (ou seja, um cliente pode ter vários endereços); 3Deve existir um relacionamento de 1->N (de 1 para muitos) entre a tabela Cliente e a tabela Produto (ou seja, um cliente pode ter vários produtos); 4Um produto só pode ter um cliente vinculado a ele; 5Um endereço só pode ter um cliente vinculado a ele; 6 O CPF da tabela Cliente deve ser único nela (ou seja, não podemos ter 2 clientes com o mesmo CPF); 7 O preço do produto não pode ser negativo; 8 O campo Tipo da tabela Endereco só pode receber dados como rua, avenida ou quadra; algo diferente disso não pode permitir persistir na tabela.
Abaixo segue o código no Pgamin4:
DROP TABLE cliente; CREATE TABLE cliente ( id serial PRIMARY KEY, nome VARCHAR(255) NOT NULL, cpf CHAR(11) NOT NULL );
INSERT INTO cliente (nome, cpf) VALUES ('João Santos', '01234567890'); INSERT INTO cliente (nome, cpf) VALUES ('Pedro Ribeiro', '09876543210');
--achave primária não funcina, ta deixando colocar o mesmo cpf em clientes diferentes;-- INSERT INTO cliente (nome, cpf) VALUES ('santi dário', '09876543210');
SELECT * FROM cliente;
DROP TABLE endereço; CREATE TABLE endereço ( id serial PRIMARY KEY, logradouro VARCHAR(255) NOT NULL, numero INTEGER NOT NULL, bairro VARCHAR(255) NOT NULL, CEP CHAR(8) NOT NULL, cidade VARCHAR(255) NOT NULL, estado VARCHAR(255) NOT NULL );
INSERT INTO endereço (logradouro, numero, bairro, CEP, cidade, estado) VALUES ('Rua André Gonçalves', 136, 'imbuí', 41741020, 'Salvador', 'BA'); INSERT INTO endereço (logradouro, numero, bairro, CEP, cidade, estado) VALUES ('Ladeira do Funil', 24, 'Barbalho', 41741010, 'Salvador', 'BA'); INSERT INTO endereço (logradouro, numero, bairro, CEP, cidade, estado) VALUES ('Av. Jorge Amado', 84, 'Imbuí', 41741040, 'Salvador', 'BA');
SELECT * FROM endereço;
DROP TABLE produtos; CREATE TABLE produtos ( id serial PRIMARY KEY, produto VARCHAR(255) NOT NULL, preço numeric(10,2) NOT NULL );
INSERT INTO produtos (id, produto, preço) VALUES (1, 'Camisa', 99.99); INSERT INTO produtos (id, produto, preço) VALUES (2, 'Short', 59.99);
SELECT * FROM produtos;
DROP TABLE cliente_produtos; CREATE TABLE cliente_produtos ( cliente_id INTEGER, produtos_id INTEGER, PRIMARY KEY (cliente_id, produtos_id),
FOREIGN KEY (cliente_id)
REFERENCES cliente (id),
FOREIGN KEY (produtos_id)
REFERENCES produtos (id) );
INSERT INTO cliente_produtos (cliente_id, produtos_id) VALUES (1,1); INSERT INTO cliente_produtos (cliente_id, produtos_id) VALUES (2,1);
INSERT INTO cliente_produtos (cliente_id, produtos_id) VALUES (1,2);
--INSERT INTO cliente_produtos (cliente_id, produtos_id) VALUES (2,1);--
INSERT INTO cliente_produtos (cliente_id, produtos_id) VALUES (2,2);
SELECT * FROM cliente WHERE id = 1; SELECT * FROM produtos WHERE id = 1;
SELECT * FROM cliente WHERE id = 2; SELECT * FROM produtos WHERE id = 1;
SELECT * FROM cliente_produtos;
SELECT * FROM cliente JOIN cliente_produtos ON cliente_produtos.cliente_id = cliente.id JOIN produtos ON produtos.id = cliente_produtos.produtos_id
DROP TABLE cliente_endereço; CREATE TABLE cliente_endereço ( cliente_id INTEGER, endereço_id INTEGER, PRIMARY KEY (cliente_id, endereço_id),
FOREIGN KEY (cliente_id)
REFERENCES cliente (id),
FOREIGN KEY (endereço_id)
REFERENCES endereço (id) );
INSERT INTO cliente_endereço (cliente_id, endereço_id) VALUES (1,1); INSERT INTO cliente_endereço (cliente_id, endereço_id) VALUES (2,2); INSERT INTO cliente_endereço (cliente_id, endereço_id) VALUES (1,3); SELECT * FROM cliente_endereço;
DELETE FROM cliente_endereço WHERE cliente_id = 1;
SELECT * FROM cliente JOIN cliente_endereço ON cliente_endereço.cliente_id = cliente.id JOIN endereço ON endereço.id = cliente_endereço.endereço_id