Skip to content

DDL - Data Definition Language

Linguagem de definição de dados: São comandos que interagem com objetos dentro de um banco de dados (views, functions, procedures, sendo as tabelas os mais comuns). Os comandos DDL permitem que a gente interaja com esses objetos. As principais formas de interagir com esses objetos é por meio dos comandos:

  • CREATE: Cria um novo objeto.
  • ALTER: Altera um objeto existente.
  • DROP: Exclui um objeto, como uma tabela ou banco de dados.

CREATE

CREATE TABLE mapa (
    nome varchar(30) PRIMARY KEY
);

CREATE TABLE sala (
    numero int PRIMARY KEY,
    nome varchar(30),
    nome_mapa varchar(30),
    descriçao varchar(2000)
);

CREATE TABLE entidade (
    identidade int auto_increment PRIMARY KEY,
    tipo enum('protagonista', 'npc')
);

CREATE TABLE protagonista (
    id_entidade int PRIMARY KEY,
    nickname varchar(25),
    killcount int,
    dinheirorecebido int,
    fk_sala_numero int,
    vida int,
    dano int,
    arma_equipada INT DEFAULT NULL,
    equipamento_equipado INT DEFAULT NULL
);

CREATE TABLE npc (
    tipo enum('chefe', 'vendedor', 'zumbi', 'plaga', 'cachorro_zumbi'),
    id_entidade int PRIMARY KEY
);


CREATE TABLE item (
    iditem int auto_increment PRIMARY KEY,
    tipo enum('arma','consumivel','equipamento','dinheiro')
);


CREATE TABLE missao (
    tipo enum('assassinato','recuperacao'),
    nome varchar(30),
    PRIMARY KEY (nome, tipo)
);

CREATE TABLE assassinato(
    nome varchar(30) PRIMARY KEY,
    completa bool,
    multiplicador int,
    missao_tipo enum('assassinato'),
    nome_mapa varchar(30),
    descricao varchar(150)
);

CREATE TABLE recuperacao(
    nome varchar(30) PRIMARY KEY,
    completa bool,
    multiplicador int,
    missao_tipo enum('recuperacao'),
    nome_mapa varchar(30),
    descricao varchar(150)
);

CREATE TABLE instancianpc (
    idinstancianpc int auto_increment PRIMARY KEY,
    id_entidadenpc int,
    fk_sala_numero int,
    missao_nome varchar(30),
    id_protagonista int,
    vida_atual int
);

CREATE TABLE inventario (
    idinventario int auto_increment PRIMARY KEY,
    pesomax int,
    id_protagonista int,
    id_instancianpc int
);


CREATE TABLE arma (
    nome varchar(50),
    dano int,
    nivel int,
    chanceerro int,
    chancecritico int,
    maxmuni int,
    id_item int PRIMARY KEY,
    descricao varchar(150),
    valor int,
    peso int
);

CREATE TABLE equipamento (
    defesa int,
    nivel int,
    id_item int PRIMARY KEY,
    nome varchar(30),
    descricao varchar(150),
    valor int,
    peso int
);


CREATE TABLE consumivel (
    efeito varchar(50),
    id_item int PRIMARY KEY,
    nome varchar(30),
    descricao varchar(150),
    valor int,
    peso int
);


CREATE TABLE dinheiro (
    valor int,
    id_item int PRIMARY KEY,
    nome varchar(30),
    descricao varchar(150),
    peso int
);

CREATE TABLE vendedor (
    id_entidade int PRIMARY KEY,
    nome varchar(20),
    vida int,
    dano int
);

CREATE TABLE reputacao (
    nivel_reputacao int,
    id_entidade int PRIMARY KEY
);

CREATE TABLE habilidade (
    nome varchar(50) PRIMARY KEY,
    tempo_recarga_turno int,
    tempo_recarga_tempo int,
    dano int
);

CREATE TABLE chefe (
    id_entidade int PRIMARY KEY,
    nome varchar(20),
    vida int,
    dano int
);

CREATE TABLE usa (
    id_entidade int PRIMARY KEY,
    nome_habilidade varchar(50),
    nivel int,
    ultimo_uso DATETIME
);


CREATE TABLE instanciaitem (
    idinstanciaitem int auto_increment PRIMARY KEY,
    id_item int,
    id_inventario int,
    nome_missao varchar(30)
);


CREATE TABLE zumbi (
    id_entidade int PRIMARY KEY,
    nome varchar(20),
    vida int,
    dano int
);

CREATE TABLE cachorro_zumbi (
    id_entidade int PRIMARY KEY,
    nome varchar(20),
    vida int,
    dano int
);

CREATE TABLE plaga (
    id_entidade int PRIMARY KEY,
    nome varchar(20),
    vida int,
    dano int
);

CREATE TABLE caminho (
    sala_atual INT,
    prox_sala INT,
    PRIMARY KEY (sala_atual, prox_sala)
);

CREATE TABLE item_sala (
    id INT AUTO_INCREMENT PRIMARY KEY,
    fk_sala INT,
    id_item INT,
    quantidade INT DEFAULT 1
);

CREATE TABLE backup_instancianpc (
    idinstancianpc INT PRIMARY KEY AUTO_INCREMENT,
    id_entidadenpc INT,
    fk_sala_numero INT,
    missao_nome VARCHAR(30),
    vida_atual INT,
    CONSTRAINT FK_backup_instancianpc_npc FOREIGN KEY (id_entidadenpc) REFERENCES npc(id_entidade) ON DELETE CASCADE,
    CONSTRAINT FK_backup_instancianpc_sala FOREIGN KEY (fk_sala_numero) REFERENCES sala(numero) ON DELETE CASCADE,
    CONSTRAINT FK_backup_instancianpc_missao FOREIGN KEY (missao_nome) REFERENCES missao(nome) ON DELETE CASCADE
);

CREATE TABLE backup_instanciaitem (
    idinstanciaitem INT PRIMARY KEY AUTO_INCREMENT,
    id_item INT,
    id_inventario INT,
    nome_missao VARCHAR(30),
    CONSTRAINT FK_backup_instanciaitem_item FOREIGN KEY (id_item) REFERENCES item(iditem) ON DELETE CASCADE,
    CONSTRAINT FK_backup_instanciaitem_inventario FOREIGN KEY (id_inventario) REFERENCES inventario(idinventario) ON DELETE CASCADE,
    CONSTRAINT FK_backup_instanciaitem_missao FOREIGN KEY (nome_missao) REFERENCES missao(nome) ON DELETE CASCADE
);

CREATE TABLE backup_item_sala (
    id INT AUTO_INCREMENT PRIMARY KEY,
    fk_sala INT,
    id_item INT,
    quantidade INT DEFAULT 1,
    CONSTRAINT FK_backup_item_sala_sala FOREIGN KEY (fk_sala) REFERENCES sala(numero) ON DELETE CASCADE,
    CONSTRAINT FK_backup_item_sala_item FOREIGN KEY (id_item) REFERENCES item(iditem) ON DELETE CASCADE
);

ALTER TABLE sala ADD CONSTRAINT FK_sala_2
    FOREIGN KEY (nome_mapa)
    REFERENCES mapa (nome)
    ON DELETE RESTRICT;

ALTER TABLE protagonista ADD CONSTRAINT FK_protagonista_2
    FOREIGN KEY (id_entidade)
    REFERENCES entidade (identidade)
    ON DELETE CASCADE;

ALTER TABLE protagonista ADD CONSTRAINT FK_protagonista_3
    FOREIGN KEY (fk_sala_numero)
    REFERENCES sala (numero)
    ON DELETE CASCADE;

ALTER TABLE npc ADD CONSTRAINT FK_npc_2
    FOREIGN KEY (id_entidade)
    REFERENCES entidade (identidade)
    ON DELETE CASCADE;

ALTER TABLE inventario ADD CONSTRAINT FK_inventario_2
    FOREIGN KEY (id_protagonista) 
    REFERENCES protagonista(id_entidade)
    ON DELETE CASCADE;

ALTER TABLE inventario ADD CONSTRAINT FK_inventario_3
    FOREIGN KEY (id_instancianpc)
    REFERENCES instancianpc (idinstancianpc)
    ON DELETE RESTRICT;

ALTER TABLE arma ADD CONSTRAINT FK_arma_2
    FOREIGN KEY (id_item)
    REFERENCES item (iditem)
    ON DELETE CASCADE;

ALTER TABLE assassinato ADD CONSTRAINT FK_assassinato_2
    FOREIGN KEY (nome_mapa)
    REFERENCES mapa (nome)
    ON DELETE CASCADE;

ALTER TABLE assassinato ADD CONSTRAINT FK_assassinato_3
    FOREIGN KEY (nome)
    REFERENCES missao (nome)
    ON DELETE CASCADE;

ALTER TABLE recuperacao ADD CONSTRAINT FK_recuperacao_2
    FOREIGN KEY (nome_mapa)
    REFERENCES mapa (nome)
    ON DELETE CASCADE;

ALTER TABLE recuperacao ADD CONSTRAINT FK_recuperacao_3
    FOREIGN KEY (nome)
    REFERENCES missao (nome)
    ON DELETE CASCADE;

ALTER TABLE equipamento ADD CONSTRAINT FK_equipamento_2
    FOREIGN KEY (id_item)
    REFERENCES item (iditem)
    ON DELETE CASCADE;

ALTER TABLE instancianpc ADD CONSTRAINT FK_instancianpc_2
    FOREIGN KEY (id_entidadenpc)
    REFERENCES npc (id_entidade)
    ON DELETE CASCADE;

ALTER TABLE instancianpc ADD CONSTRAINT FK_instancianpc_3
    FOREIGN KEY (fk_sala_numero)
    REFERENCES sala (numero)
    ON DELETE SET NULL;

ALTER TABLE instancianpc ADD CONSTRAINT FK_instancianpc_4
    FOREIGN KEY (missao_nome)
    REFERENCES missao (nome)
    ON DELETE CASCADE;

ALTER TABLE instancianpc ADD CONSTRAINT FK_instancianpc_5
    FOREIGN KEY (id_protagonista)
    REFERENCES protagonista (id_entidade)
    ON DELETE CASCADE;

ALTER TABLE zumbi ADD CONSTRAINT FK_zumbi_2
    FOREIGN KEY (id_entidade)
    REFERENCES npc (id_entidade)
    ON DELETE CASCADE;

ALTER TABLE cachorro_zumbi ADD CONSTRAINT FK_cachorro_zumbi_2
    FOREIGN KEY (id_entidade)
    REFERENCES npc (id_entidade)
    ON DELETE CASCADE;

ALTER TABLE plaga ADD CONSTRAINT FK_plaga_2
    FOREIGN KEY (id_entidade)
    REFERENCES npc (id_entidade)
    ON DELETE CASCADE;

ALTER TABLE consumivel ADD CONSTRAINT FK_consumivel_2
    FOREIGN KEY (id_item)
    REFERENCES item (iditem)
    ON DELETE CASCADE;

ALTER TABLE instanciaitem ADD CONSTRAINT FK_instanciaitem_1
    FOREIGN KEY (id_item)
    REFERENCES item (iditem)
    ON DELETE CASCADE;

ALTER TABLE instanciaitem ADD CONSTRAINT FK_instanciaitem_2
    FOREIGN KEY (id_inventario)
    REFERENCES inventario (idinventario)
    ON DELETE SET NULL;

ALTER TABLE instanciaitem ADD CONSTRAINT FK_instanciaitem_3
    FOREIGN KEY (nome_missao)
    REFERENCES missao (nome)
    ON DELETE CASCADE;

ALTER TABLE protagonista ADD CONSTRAINT FK_protagonista_4
    FOREIGN KEY (equipamento_equipado)
    REFERENCES instanciaitem (id_item)
    ON DELETE CASCADE;

ALTER TABLE protagonista ADD CONSTRAINT FK_protagonista_5
    FOREIGN KEY (arma_equipada)
    REFERENCES item(id_item)
    ON DELETE CASCADE;    


ALTER TABLE dinheiro ADD CONSTRAINT FK_dinheiro_2
    FOREIGN KEY (id_item)
    REFERENCES item (iditem)
    ON DELETE CASCADE;

ALTER TABLE vendedor ADD CONSTRAINT FK_vendedor_2
    FOREIGN KEY (id_entidade)
    REFERENCES npc (id_entidade)
    ON DELETE CASCADE;

ALTER TABLE reputacao ADD CONSTRAINT FK_reputacao_1
    FOREIGN KEY (id_entidade)
    REFERENCES protagonista (id_entidade)
    ON DELETE RESTRICT;

ALTER TABLE chefe ADD CONSTRAINT FK_chefe_2
    FOREIGN KEY (id_entidade)
    REFERENCES npc (id_entidade)
    ON DELETE CASCADE;

ALTER TABLE usa ADD CONSTRAINT FK_usa_1
    FOREIGN KEY (id_entidade)
    REFERENCES protagonista (id_entidade)
    ON DELETE RESTRICT;

ALTER TABLE usa ADD CONSTRAINT FK_usa_2
    FOREIGN KEY (nome_habilidade)
    REFERENCES habilidade (nome)
    ON DELETE SET NULL;

ALTER TABLE caminho ADD CONSTRAINT FK_caminho_2
    FOREIGN KEY (sala_atual)
    REFERENCES sala (numero)
    ON DELETE CASCADE;

ALTER TABLE caminho ADD CONSTRAINT FK_caminho_3
    FOREIGN KEY (prox_sala)
    REFERENCES sala (numero)
    ON DELETE CASCADE;

ALTER TABLE item_sala ADD CONSTRAINT FK_item_sala_2
    FOREIGN KEY (fk_sala) 
    REFERENCES sala(numero) 
    ON DELETE CASCADE;

ALTER TABLE item_sala ADD CONSTRAINT FK_item_sala_3
    FOREIGN KEY (id_item) 
    REFERENCES item(iditem) 
    ON DELETE CASCADE;

Versão Descrição Autor(es) Data
1.0 Criação Bruno Cruz e Breno Yuri 08/01/2025
1.1 Inserção de informação José Oliveira 13/01/2025
1.2 Alterações Anne de Capdeville 13/01/2025
1.3 Alterações José Oliveira 31/01/2025
2.0 Alterações Pablo Cunha 02/02/2025
2.1 DDL alterado Anne de Capdeville, Bruno Cruz e Pablo Cunha 02/02/2025
3.0 DDL Final Bruno Cruz e Anne de Capdeville 03/02/2025