Criar um banco de dados completo do zero: DDL (estrutura) + DML (dados). Domínio: Sistema de Biblioteca.
CREATE TABLE editora ( id SERIAL PRIMARY KEY, nome VARCHAR(100) NOT NULL UNIQUE ); CREATE TABLE autor ( id SERIAL PRIMARY KEY, nome VARCHAR(100) NOT NULL ); CREATE TABLE livro ( isbn CHAR(13) PRIMARY KEY, titulo VARCHAR(200) NOT NULL, ano INTEGER CHECK (ano > 1900), editora_id INTEGER NOT NULL REFERENCES editora(id) ); CREATE TABLE livro_autor ( -- tabela associativa N:M livro_isbn CHAR(13) REFERENCES livro(isbn), autor_id INTEGER REFERENCES autor(id), PRIMARY KEY (livro_isbn, autor_id) );
CREATE TABLE membro ( id SERIAL PRIMARY KEY, nome VARCHAR(100) NOT NULL, email VARCHAR(150) UNIQUE, dt_cadastro DATE DEFAULT CURRENT_DATE ); CREATE TABLE emprestimo ( id SERIAL PRIMARY KEY, membro_id INTEGER NOT NULL REFERENCES membro(id), livro_isbn CHAR(13) NOT NULL REFERENCES livro(isbn), dt_retirada DATE NOT NULL DEFAULT CURRENT_DATE, dt_devolucao DATE, CHECK (dt_devolucao IS NULL OR dt_devolucao >= dt_retirada) );
INSERT INTO editora (nome) VALUES ('Novatec'), ('Casa do Código'), ('O Reilly'); INSERT INTO autor (nome) VALUES ('Carlos Heuser'), ('Abraham Silberschatz'), ('Thomas Connolly'); INSERT INTO livro (isbn, titulo, ano, editora_id) VALUES ('9788577807826', 'Projeto de Banco de Dados', 2009, 1), ('9780073523323', 'Database System Concepts', 2019, 3), ('9780132943727', 'Database Systems', 2015, 3); INSERT INTO livro_autor VALUES ('9788577807826', 1), ('9780073523323', 2), ('9780132943727', 3); INSERT INTO membro (nome, email) VALUES ('Ana', 'ana@ufpa.br'), ('Bia', 'bia@ufpa.br'); INSERT INTO emprestimo (membro_id, livro_isbn, dt_retirada) VALUES (1, '9788577807826', '2026-05-01'), (2, '9780073523323', '2026-05-03');
Um membro pode reservar um livro. Campos: id (PK), membro_id (FK), livro_isbn (FK), dt_reserva (NOT NULL), status (VARCHAR: 'ativa', 'cancelada', 'concluída').
Insira mais 3 livros, 2 autores, 3 membros e 5 empréstimos. Registre 3 devoluções (UPDATE dt_devolucao). Insira 2 reservas.