DDL
DDL (Data Definition Language) é uma parte da linguagem SQL usada para definir e modificar a estrutura dos objetos no banco de dados, como tabelas, índices e restrições. Abaixo estão as definições de tabelas utilizadas no banco de dados.
Tabela tema ()
CREATE TABLE tema (
id_tema INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nome VARCHAR(100) NOT NULL
);
Tabela responsável por armazenar os temas das habilidades e dungeons.
- id_tema
: Identificador único do tema.
- nome
: Nome do tema.
Tabela habilidades ()
CREATE TABLE habilidades (
id_habilidade INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
tipo_habilidade VARCHAR(10) NOT NULL,
nivel INT NOT NULL,
coolDown INT NOT NULL,
id_tema INT NOT NULL,
CONSTRAINT fk_id_tema FOREIGN KEY (id_tema) REFERENCES tema(id_tema)
);
Define as habilidades existentes.
- id_habilidade
: Identificador único.
- nome
: Nome da habilidade.
- tipo_habilidade
: Pode ser Ataque, Cura ou Defesa.
- nivel
, coolDown
: Atributos da habilidade.
- id_tema
: Chave estrangeira para tema
.
Tabela criatura ()
CREATE TABLE criatura (
id_criatura INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nivel INT NOT NULL,
vida_max INT NOT NULL,
tipo_criatura VARCHAR(100) NOT NULL,
nome VARCHAR(100) NOT NULL,
descricao VARCHAR(255) NOT NULL
);
Representa qualquer tipo de criatura do jogo.
- id_criatura
: Identificador único.
- nivel
, vida_max
, tipo_criatura
, nome
, descricao
.
Tabela campus () e setor ()
CREATE TABLE campus (
id_campus INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
descricao VARCHAR(255) NOT NULL
);
CREATE TABLE setor (
id_setor INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
id_campus INT NOT NULL,
nome VARCHAR(100) NOT NULL,
descricao VARCHAR(255) NOT NULL,
id_proxSetor INT,
id_prevSetor INT,
CONSTRAINT fk_id_campus FOREIGN KEY (id_campus) REFERENCES campus(id_campus),
CONSTRAINT fk_id_proxSetor FOREIGN KEY (id_proxSetor) REFERENCES setor(id_setor),
CONSTRAINT fk_id_prevSetor FOREIGN KEY (id_prevSetor) REFERENCES setor(id_setor)
);
Estrutura o mapa do jogo
- campus
: Cada campus tem seu id nome e descrição.
- setor
: Pertence a um campus, com nome, descrição e referências para setores anterior e próximo.
Tabela sala_comum ()
CREATE TABLE sala_comum (
id_sala INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
id_setor INT NOT NULL,
id_prevSala INT,
id_proxSala INT,
descricao VARCHAR(255) NOT NULL,
nome VARCHAR(100) NOT NULL,
tem_loja BOOLEAN NOT NULL,
tem_dungeon BOOLEAN NOT NULL,
CONSTRAINT fk_id_setor FOREIGN KEY (id_setor) REFERENCES setor(id_setor),
CONSTRAINT fk_id_prevSala FOREIGN KEY (id_prevSala) REFERENCES sala_comum(id_sala),
CONSTRAINT fk_id_proxSala FOREIGN KEY (id_proxSala) REFERENCES sala_comum(id_sala)
);
Define salas dentro de setores, que podem conter lojas ou dungeons.
- Contém informações como descricao
, tem_loja
, tem_dungeon
.
Tabela estudante ()
CREATE TABLE estudante (
id_estudante INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
id_sala INT NOT NULL,
nome VARCHAR(100) NOT NULL,
vida INT NOT NULL,
estresse INT NOT NULL,
total_dinheiro INT NOT NULL,
CONSTRAINT fk_id_sala FOREIGN KEY (id_sala) REFERENCES sala_comum(id_sala)
);
Define jogadores/estudantes com vida, estresse e dinheiro, associados a uma sala.
Tabela afinidade ()
CREATE TABLE afinidade (
id_estudante INT NOT NULL,
id_tema INT NOT NULL,
xp_atual INT NOT NULL,
nivel_atual INT NOT NULL,
PRIMARY KEY (id_estudante, id_tema),
CONSTRAINT fk_estudante FOREIGN KEY (id_estudante) REFERENCES estudante(id_estudante),
CONSTRAINT fk_tema FOREIGN KEY (id_tema) REFERENCES tema(id_tema)
);
Relaciona estudantes com temas, com campos de XP e nível atual.
Tabela dungeon_academica ()
CREATE TABLE dungeon_academica (
id_dungeon INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
descricao VARCHAR(255) NOT NULL,
id_tema INT NOT NULL,
CONSTRAINT fk_id_tema FOREIGN KEY (id_tema) REFERENCES tema(id_tema)
);
Define as dungeons do jogo, ligadas a temas.
Tabelas reliquia (), boss (), monstro_simples ()
CREATE TABLE reliquia (
id_reliquia INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
tipo VARCHAR(100) NOT NULL
);
CREATE TABLE boss (
id_criatura INT NOT NULL PRIMARY KEY,
id_reliquia INT NOT NULL,
CONSTRAINT fk_id_criatura FOREIGN KEY (id_criatura) REFERENCES criatura(id_criatura)
CONSTRAINT fk_reliquia FOREIGN KEY (id_reliquia) REFERENCES reliquia(id_reliquia)
);
CREATE TABLE monstro_simples (
id_criatura INT NOT NULL PRIMARY KEY,
xp_tema INT NOT NULL,
qtd_moedas INT NOT NULL,
CONSTRAINT fk_id_criatura FOREIGN KEY (id_criatura) REFERENCES criatura(id_criatura)
);
Definem entidades de combate. boss
e monstro_simples
herdam de criatura
.
Tabela instancia_de_criatura ()
CREATE TABLE instancia_de_criatura (
id_instanciaMonstro INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
id_criatura INT NOT NULL,
vida_atual INT NOT NULL,
id_dungeon INT NOT NULL,
CONSTRAINT fk_criatura FOREIGN KEY (id_criatura) REFERENCES criatura(id_criatura),
CONSTRAINT fk_dungeon FOREIGN KEY (id_dungeon) REFERENCES dungeon_academica(id_dungeon)
);
Define instâncias específicas de criaturas dentro de dungeons.
Tabela item (), consumivel (), equipavel () e monetario ()
CREATE TABLE item (
id_item INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
descricao VARCHAR(255) NOT NULL,
item_tipo VARCHAR(100) NOT NULL
);
CREATE TABLE consumivel (
id_item INT NOT NULL PRIMARY KEY,
efeito FLOAT NOT NULL,
preco FLOAT NOT NULL,
CONSTRAINT fk_id_item FOREIGN KEY (id_item) REFERENCES item(id_item)
);
CREATE TABLE equipavel (
id_item INT NOT NULL PRIMARY KEY,
efeito INT NOT NULL,
preco INT NOT NULL,
equipado BOOLEAN NOT NULL,
CONSTRAINT fk_id_item FOREIGN KEY (id_item) REFERENCES item(id_item)
);
CREATE TABLE monetario (
id_item INT NOT NULL PRIMARY KEY,
valor INT NOT NULL,
CONSTRAINT fk_id_item FOREIGN KEY (id_item) REFERENCES item(id_item)
);
Define os itens do jogo: consumivel
, equipavel
, monetario
.
Tabela loja_item ()
CREATE TABLE loja_item (
id_sala INT NOT NULL,
id_item INT NOT NULL,
PRIMARY KEY (id_sala, id_item),
CONSTRAINT fk_sala FOREIGN KEY (id_sala) REFERENCES sala_comum(id_sala),
CONSTRAINT fk_item FOREIGN KEY (id_item) REFERENCES item(id_item)
);
Relaciona salas com os itens disponíveis.
Tabela habilidade_criatura () e habilidade_estudante ()
CREATE TABLE habilidade_criatura (
id_criatura INT NOT NULL,
id_habilidade INT NOT NULL,
PRIMARY KEY (id_criatura, id_habilidade),
CONSTRAINT fk_criatura FOREIGN KEY (id_criatura) REFERENCES criatura(id_criatura),
CONSTRAINT fk_habilidade FOREIGN KEY (id_habilidade) REFERENCES habilidades(id_habilidade)
);
CREATE TABLE habilidade_estudante (
id_estudante INT NOT NULL,
id_habilidade INT NOT NULL,
PRIMARY KEY (id_estudante, id_habilidade),
CONSTRAINT fk_estudante FOREIGN KEY (id_estudante) REFERENCES estudante(id_estudante),
CONSTRAINT fk_habilidade FOREIGN KEY (id_habilidade) REFERENCES habilidades(id_habilidade)
);
Relacionam habilidades com criaturas ou estudantes.
Tabela loja () e habilidade_loja ()
CREATE TABLE loja (
id_loja INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
nome VARCHAR(100) NOT NULL
);
CREATE TABLE habilidade_loja (
id_loja INT NOT NULL,
id_habilidade INT NOT NULL,
PRIMARY KEY (id_loja, id_habilidade),
CONSTRAINT fk_loja FOREIGN KEY (id_loja) REFERENCES loja(id_loja),
CONSTRAINT fk_habilidade FOREIGN KEY (id_habilidade) REFERENCES habilidades(id_habilidade)
);
Define lojas e suas habilidades à venda.
Tabela instancia_de_item ()
CREATE TABLE instancia_de_item (
id_instanciaItem INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
id_item INT NOT NULL,
id_sala INT NOT NULL,
id_estudante INT NOT NULL,
CONSTRAINT fk_id_item FOREIGN KEY (id_item) REFERENCES item(id_item),
CONSTRAINT fk_id_sala FOREIGN KEY (id_sala) REFERENCES sala_comum(id_sala),
CONSTRAINT fk_id_estudante FOREIGN KEY (id_estudante) REFERENCES estudante(id_estudante)
);
Itens possuídos por estudantes, localizados em salas.
Ataque, Cura, Defesa
CREATE TABLE Ataque (
id_habilidade INT NOT NULL PRIMARY KEY,
danoCausado INT NOT NULL,
porcentagemAcerto FLOAT NOT NULL,
CONSTRAINT fk_habilidade FOREIGN KEY (id_habilidade) REFERENCES habilidades(id_habilidade)
);
CREATE TABLE Cura (
id_habilidade INT NOT NULL PRIMARY KEY,
vidaRecuperada INT NOT NULL,
CONSTRAINT fk_id_habilidade FOREIGN KEY (id_habilidade) REFERENCES habilidades(id_habilidade)
);
CREATE TABLE Defesa (
id_habilidade INT NOT NULL PRIMARY KEY,
danoMitigado INT NOT NULL,
CONSTRAINT fk_id_habilidade FOREIGN KEY (id_habilidade) REFERENCES habilidades(id_habilidade)
);
Subtipos de habilidades com atributos específicos:
- Ataque
: dano causado e chance de acerto.
- Cura
: quantidade de vida recuperada.
- Defesa
: dano mitigado.
Histórico de Versões
Versão | Data | Descrição | Autor |
---|---|---|---|
1.0 | 31/05/2025 | Inclusão das tabelas do banco de dados | Milena Marques |