Ir para o conteúdo

Introdução

Este documento tem como objetivo apresentar de forma detalhada o uso da DDL (Data Definition Language) no contexto do projeto. A ênfase será em como essas operações são empregadas para definir e organizar o esquema do banco de dados, assegurando que a estrutura seja robusta, flexível e eficiente. O intuito é proporcionar uma base sólida para as operações subsequentes de manipulação de dados, garantindo, ao longo do ciclo de vida do sistema, a integridade e a consistência dos dados.

Data Definition Language

Data Definition Language (DDL) é um elemento fundamental na gestão de bancos de dados, sendo responsável pela definição e organização do esquema de dados. Através da DDL, é possível criar, modificar e excluir objetos em um banco de dados, como tabelas, índices e visões. Ela também permite estabelecer restrições e garantir a integridade referencial, assegurando que os dados sejam armazenados de forma consistente e estruturada.

Segundo Silberschatz, Korth e Sudarshan (2011), a DDL desempenha um papel fundamental na definição tanto do layout físico quanto da organização lógica dos dados. Comandos como CREATE, ALTER e DROP são empregados para estabelecer a arquitetura do banco de dados, que serve como alicerce para as operações subsequentes de manipulação de dados (DML). Além de definir a estrutura do banco de dados, a DDL exerce uma influência direta no desempenho e na eficiência das operações de consulta e manipulação de dados, pois possibilita a otimização da organização interna dos dados.

  CREATE TABLE IF NOT EXISTS Regiao (
      idRegiao INT PRIMARY KEY DEFAULT nextval('regiao_id_seq'),
      nomeRegiao VARCHAR(50) NOT NULL
    );

    CREATE TABLE IF NOT EXISTS Sala (
      idSala INT PRIMARY KEY DEFAULT nextval('sala_id_seq'),
      nomeSala VARCHAR(50) NOT NULL,
      fk_regiao INT NOT NULL,
      FOREIGN KEY (fk_regiao) REFERENCES Regiao (idRegiao) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS CyberLutador (
      idCyber INT PRIMARY KEY DEFAULT nextval('cyberlutador_id_seq'),
      inteligencia INT NOT NULL,
      resistencia INT NOT NULL,
      furtividade INT NOT NULL,
      percepcao INT NOT NULL,
      vida INT NOT NULL,
      velocidade INT NOT NULL,
      forca INT NOT NULL
    );

    CREATE TABLE IF NOT EXISTS NPC (
      idNPC INT PRIMARY KEY DEFAULT nextval('npc_id_seq'),
      nomeNPC VARCHAR(50) NOT NULL,
      descricao VARCHAR(255) NOT NULL,
      fk_sala INT NOT NULL,
      FOREIGN KEY (fk_sala) REFERENCES Sala (idSala) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Missao (
      idMissao INT PRIMARY KEY DEFAULT nextval('missao_id_seq'),
      nomeMissao VARCHAR(50) NOT NULL,
      descricao VARCHAR(255) NOT NULL,
      fk_sala INT NOT NULL,
      fk_cyberlutador INT NOT NULL,
      FOREIGN KEY (fk_sala) REFERENCES Sala (idSala) ON DELETE CASCADE, 
      FOREIGN KEY (fk_cyberlutador) REFERENCES CyberLutador (idCyber) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Puzzle (
      idPuzzle INT PRIMARY KEY DEFAULT nextval('puzzle_id_seq'),
      nomePuzzle VARCHAR(30) NOT NULL,
      dificuldade VARCHAR(10) NOT NULL,
      fk_missao INT NOT NULL,
      FOREIGN KEY (fk_missao) REFERENCES Missao (idMissao) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Matematico (
      fk_puzzle INT PRIMARY KEY,
      expressao VARCHAR(50) NOT NULL,
      FOREIGN KEY (fk_puzzle) REFERENCES Puzzle (idPuzzle) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Decodificar (
      fk_puzzle INT PRIMARY KEY,
      codigo VARCHAR(50) NOT NULL,
      FOREIGN KEY (fk_puzzle) REFERENCES Puzzle (idPuzzle) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Inimigo (
      idInimigo INT PRIMARY KEY DEFAULT nextval('inimigo_id_seq'),
      qtdDano INT NOT NULL,
      vida INT NOT NULL,
      fk_npc INT NOT NULL,
      FOREIGN KEY (fk_npc) REFERENCES NPC (idNPC) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS InstanciaInimigo (
      idInstanciaInimigo INT PRIMARY KEY DEFAULT nextval('instancia_inimigo_id_seq'),
      fk_inimigo INT NOT NULL,
      FOREIGN KEY (fk_inimigo) REFERENCES Inimigo (idInimigo) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Dialogo (
      idDialogo INT PRIMARY KEY DEFAULT nextval('dialogo_id_seq'),
      nomeDialogo VARCHAR(30) NOT NULL,
      fk_npc INT NOT NULL,
      FOREIGN KEY (fk_npc) REFERENCES NPC (idNPC) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Item (
      idItem INT PRIMARY KEY DEFAULT nextval('item_id_seq'),
      nomeItem VARCHAR(50) NOT NULL,
      descricao VARCHAR(255) NOT NULL,
      valor INT NOT NULL
    );

    CREATE TABLE IF NOT EXISTS InstanciaItem (
      idInstanciaItem INT PRIMARY KEY DEFAULT nextval('instancia_item_id_seq'),
      fk_item INT NOT NULL,
      FOREIGN KEY (fk_item) REFERENCES Item (idItem) ON DELETE CASCADE
    );


    CREATE TABLE IF NOT EXISTS Faccao (
      idFaccao INT PRIMARY KEY DEFAULT nextval('faccao_id_seq'),
      fk_cyberlutador INT NOT NULL,
      nomeFaccao VARCHAR(50) NOT NULL,
      ideologia VARCHAR(255) NOT NULL,
      FOREIGN KEY (fk_cyberlutador) REFERENCES CyberLutador (idCyber) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Recompensa (
      idRecompensa INT PRIMARY KEY DEFAULT nextval('recompensa_id_seq'),
      dinheiro INT NOT NULL,
      item VARCHAR(50),
      fk_instancia_inimigo INT NOT NULL,
      fk_cyberlutador INT NOT NULL,
      FOREIGN KEY (fk_instancia_inimigo) REFERENCES InstanciaInimigo (idInstanciaInimigo) ON DELETE CASCADE,
      FOREIGN KEY (fk_cyberlutador) REFERENCES CyberLutador (idCyber) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS RecompensaMissao (
      idRecompensaMissao INT PRIMARY KEY DEFAULT nextval('recompensamissao_id_seq'),
      dinheiro INT NOT NULL,
      item VARCHAR(50),
      fk_sala INT NOT NULL,
      fk_cyberlutador INT NOT NULL,
      FOREIGN KEY (fk_sala) REFERENCES Sala (idSala) ON DELETE CASCADE,
      FOREIGN KEY (fk_cyberlutador) REFERENCES CyberLutador (idCyber) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Mentor (
      idMentor INT PRIMARY KEY DEFAULT nextval('mentor_id_seq'),
      fk_npc INT NOT NULL,
      aumentaInteligencia INT NOT NULL,
      aumentaFurtividade INT NOT NULL,
      aumentaPercepcao INT NOT NULL,
      FOREIGN KEY (fk_npc) REFERENCES NPC (idNPC) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS NetRunners (
      idNetRunners INT PRIMARY KEY DEFAULT nextval('netrunners_id_seq'),
      fk_faccao INT NOT NULL,
      aumentaInte INT NOT NULL,
      aumentaPercep INT NOT NULL,
      FOREIGN KEY (fk_faccao) REFERENCES Faccao (idFaccao) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS CodeKeepers (
      idCodeKeepers INT PRIMARY KEY DEFAULT nextval('codekeepers_id_seq'),
      fk_faccao INT NOT NULL,
      aumentaVelo INT NOT NULL,
      aumentaResis INT NOT NULL,
      FOREIGN KEY (fk_faccao) REFERENCES Faccao (idFaccao) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS MercadoClandestino (
      idMercadoClandestino INT PRIMARY KEY DEFAULT nextval('mercado_clandestino_id_seq'),
      nomeMercado VARCHAR(50) NOT NULL,
      descricao VARCHAR(100) NOT NULL,
      fk_sala INT NOT NULL,
      FOREIGN KEY (fk_sala) REFERENCES Sala (idSala) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Mochila (
      idMochila INT PRIMARY KEY DEFAULT nextval('mochila_id_seq'),
      capacidade INT NOT NULL,
      fk_cyberlutador INT NOT NULL,
      fk_instanciaitem INT NOT NULL,
      FOREIGN KEY (fk_cyberlutador) REFERENCES CyberLutador (idCyber) ON DELETE CASCADE,
      FOREIGN KEY (fk_instanciaitem) REFERENCES InstanciaItem (idInstanciaItem) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Carro (
      idCarro INT PRIMARY KEY DEFAULT nextval('carro_id_seq'),
      combustivel INT NOT NULL,
      fk_regiao INT NOT NULL,
      FOREIGN KEY (fk_regiao) REFERENCES Regiao (idRegiao) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Implante (
      idImplante INT PRIMARY KEY DEFAULT nextval('implante_id_seq'),
      nomeImplante VARCHAR(50) NOT NULL,
      tipo VARCHAR(50) NOT NULL,
      fk_item INT NOT NULL,
      FOREIGN KEY (fk_item) REFERENCES Item (idItem) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS Biochip (
      idBiochip INT PRIMARY KEY DEFAULT nextval('biochip_id_seq'),
      regeneraVida INT NOT NULL,
      fk_item INT NOT NULL,
      FOREIGN KEY (fk_item) REFERENCES Item (idItem) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS VisaoCibernetica (
      idVisaocibernetica INT PRIMARY KEY DEFAULT nextval('visaocibernetica_id_seq'),
      fk_implante INT NOT NULL,
      aumentaFurti INT NOT NULL,
      aumentaPercep INT NOT NULL,
      FOREIGN KEY (fk_implante) REFERENCES Implante (idImplante) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS BracoRobotico (
      idBracorobotico INT PRIMARY KEY DEFAULT nextval('bracorobotico_id_seq'),
      fk_implante INT NOT NULL,
      aumentaForca INT NOT NULL,
      aumentaVeloc INT NOT NULL,
      FOREIGN KEY (fk_implante) REFERENCES Implante (idImplante) ON DELETE CASCADE
    );

    CREATE TABLE IF NOT EXISTS CapaceteNeural (
      idCapaceteneural INT PRIMARY KEY DEFAULT nextval('capaceteneural_id_seq'),
      fk_implante INT NOT NULL,
      aumentaInt INT NOT NULL,
      aumentaResis INT NOT NULL,
      FOREIGN KEY (fk_implante) REFERENCES Implante (idImplante) ON DELETE CASCADE
    );

Referência Bibliográfica

1. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. Tradução: Daniel Vieira. Revisão técnica: Enzo Seraphim; Thatyana de Faria Piola Seraphim. 6. ed. São Paulo: Pearson Addison Wesley, 2011. Capítulo 2 Conceitos e arquitetura do sistema de banco de dados, tópico 2.3 Linguagens e interfaces do banco de dados, páginas 24 e 25.

2. SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Database system concepts. 6. ed. New York: McGraw-Hill, 2011. Capítulo 1 Introduction, tópico 1.4.2 Data-Definition Language, páginas 12 a 13.

Histórico de versões

Versão Data Descrição Autor
1.0 06/01/2024 Criação do Documento Gabrielly Assunção
1.1 10/01/2024 Adicionando tabelas Gabrielly Assunção e João Victor