-- Tabela Atendente
CREATE TABLE Atendente (
CPF VARCHAR(11) PRIMARY KEY, -- Chave Primária
Nome_Completo VARCHAR(255) NOT NULL -- Nome do atendente é obrigatório
);
-- Tabela Cliente
CREATE TABLE Cliente (
CPF VARCHAR(11) PRIMARY KEY, -- Chave Primária
Nome_Completo VARCHAR(255) NOT NULL, -- Nome do cliente é obrigatório
Telefone VARCHAR(15), -- Telefone opcional
Endereco VARCHAR(255), -- Endereço opcional
Email VARCHAR(255), -- Email opcional
CPF_Atendente VARCHAR(11), -- Chave estrangeira que referencia o atendente que cadastrou o cliente
FOREIGN KEY (CPF_Atendente) REFERENCES Atendente(CPF) -- Relacionamento com Atendente
);
-- Tabela Jogo
CREATE TABLE Jogo (
Codigo INT PRIMARY KEY, -- Código do jogo é chave primária
Nome VARCHAR(255) NOT NULL, -- Nome do jogo é obrigatório
Fabricante VARCHAR(255), -- Fabricante do jogo
Numero_Maximo_Jogadores INT, -- Número máximo de jogadores
Ano_Publicacao INT, -- Ano de publicação do jogo
Numero_Copias INT, -- Número de cópias disponíveis do jogo
CPF_Atendente VARCHAR(11), -- Chave estrangeira que referencia o atendente que cadastrou o jogo
FOREIGN KEY (CPF_Atendente) REFERENCES Atendente(CPF) -- Relacionamento com Atendente
);
-- Tabela Aluguel
CREATE TABLE Aluguel (
Codigo_Aluguel INT PRIMARY KEY, -- Código único para o aluguel (chave primária)
Data_Aluguel DATE NOT NULL, -- Data do aluguel
Valor_Total DECIMAL(10, 2), -- Valor total do aluguel
CPF_Cliente VARCHAR(11), -- Chave estrangeira para o cliente que fez o aluguel
CPF_Atendente VARCHAR(11), -- Chave estrangeira para o atendente que registrou o aluguel
FOREIGN KEY (CPF_Cliente) REFERENCES Cliente(CPF), -- Relacionamento com Cliente
FOREIGN KEY (CPF_Atendente) REFERENCES Atendente(CPF) -- Relacionamento com Atendente
);
-- Tabela Aluguel_Jogo (Relacionamento entre Aluguel e Jogo)
CREATE TABLE Aluguel_Jogo (
Codigo_Aluguel INT, -- Chave estrangeira que referencia o aluguel
Codigo_Jogo INT, -- Chave estrangeira que referencia o jogo
PRIMARY KEY (Codigo_Aluguel, Codigo_Jogo), -- Chave composta, formando a relação muitos-para-muitos
FOREIGN KEY (Codigo_Aluguel) REFERENCES Aluguel(Codigo_Aluguel), -- Relacionamento com Aluguel
FOREIGN KEY (Codigo_Jogo) REFERENCES Jogo(Codigo) -- Relacionamento com Jogo
);
-- Tabela Atendente CREATE TABLE Atendente ( CPF VARCHAR(11) PRIMARY KEY, -- Chave Primária Nome_Completo VARCHAR(255) NOT NULL -- Nome do atendente é obrigatório );
-- Tabela Cliente CREATE TABLE Cliente ( CPF VARCHAR(11) PRIMARY KEY, -- Chave Primária Nome_Completo VARCHAR(255) NOT NULL, -- Nome do cliente é obrigatório Telefone VARCHAR(15), -- Telefone opcional Endereco VARCHAR(255), -- Endereço opcional Email VARCHAR(255), -- Email opcional CPF_Atendente VARCHAR(11), -- Chave estrangeira que referencia o atendente que cadastrou o cliente FOREIGN KEY (CPF_Atendente) REFERENCES Atendente(CPF) -- Relacionamento com Atendente );
-- Tabela Jogo CREATE TABLE Jogo ( Codigo INT PRIMARY KEY, -- Código do jogo é chave primária Nome VARCHAR(255) NOT NULL, -- Nome do jogo é obrigatório Fabricante VARCHAR(255), -- Fabricante do jogo Numero_Maximo_Jogadores INT, -- Número máximo de jogadores Ano_Publicacao INT, -- Ano de publicação do jogo Numero_Copias INT, -- Número de cópias disponíveis do jogo CPF_Atendente VARCHAR(11), -- Chave estrangeira que referencia o atendente que cadastrou o jogo FOREIGN KEY (CPF_Atendente) REFERENCES Atendente(CPF) -- Relacionamento com Atendente );
-- Tabela Aluguel CREATE TABLE Aluguel ( Codigo_Aluguel INT PRIMARY KEY, -- Código único para o aluguel (chave primária) Data_Aluguel DATE NOT NULL, -- Data do aluguel Valor_Total DECIMAL(10, 2), -- Valor total do aluguel CPF_Cliente VARCHAR(11), -- Chave estrangeira para o cliente que fez o aluguel CPF_Atendente VARCHAR(11), -- Chave estrangeira para o atendente que registrou o aluguel FOREIGN KEY (CPF_Cliente) REFERENCES Cliente(CPF), -- Relacionamento com Cliente FOREIGN KEY (CPF_Atendente) REFERENCES Atendente(CPF) -- Relacionamento com Atendente );
-- Tabela Aluguel_Jogo (Relacionamento entre Aluguel e Jogo) CREATE TABLE Aluguel_Jogo ( Codigo_Aluguel INT, -- Chave estrangeira que referencia o aluguel Codigo_Jogo INT, -- Chave estrangeira que referencia o jogo PRIMARY KEY (Codigo_Aluguel, Codigo_Jogo), -- Chave composta, formando a relação muitos-para-muitos FOREIGN KEY (Codigo_Aluguel) REFERENCES Aluguel(Codigo_Aluguel), -- Relacionamento com Aluguel FOREIGN KEY (Codigo_Jogo) REFERENCES Jogo(Codigo) -- Relacionamento com Jogo );