Pular para conteúdo

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