Pular para conteúdo

Versão 1.0

Data Definition Language

Conceito:

A Data Definition Language (DDL), ou Linguagem de Definição de Dados, é um subconjunto da linguagem SQL responsável pela criação, modificação e remoção de estruturas de dados em um banco de dados. Ela lida com os aspectos estruturais do banco, como tabelas, esquemas, índices e relacionamentos. Com comandos como CREATE, ALTER, DROP e TRUNCATE, a DDL permite que desenvolvedores e administradores definam como os dados serão armazenados, organizados e acessados, estabelecendo a base sobre a qual as operações de manipulação de dados (DML) irão atuar.

É importante destacar que os comandos DDL geralmente impactam a estrutura do banco de dados de forma permanente e são registrados automaticamente no log de transações, o que pode influenciar em estratégias de backup e recuperação. Além disso, por serem comandos voltados à estrutura, seu uso costuma ser mais frequente durante o desenvolvimento inicial de um sistema, na manutenção da base de dados ou em migrações.


Declarações de DDL no Software:

1. DROP e CREATE de um Schema

Para evitar problemas em casos de reconstrução do banco de dados, é feito um DROP do schema principal, cujo guarda todas as tabelas envolvidas no jogo Moonlighter Terminal Game. A operação é realizada da seguinte maneira:

DROP SCHEMA public CASCADE;
CREATE SCHEMA public;



2. Tabelas Bases

Nessa categoria estão as tabelas bases, cujo não possui nenhum tipo de dependência à outra Tabela. Isto é, Tabelas que não possuem chaves estrangeiras.

2.1. CREATE da Tabela "Local"

A tabela Local guarda as informações de locais disponíveis para locomoção do jogador dentro do jogo. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "local" (
    "nomeLocal" CHARACTER varying(60) PRIMARY KEY,
    "descricao" CHARACTER varying(200) NOT NULL,
    "tipoLocal" CHARACTER varying(20) NOT NULL,
    "acesso" CHARACTER varying(60),

    CONSTRAINT "fk_local" FOREIGN KEY ("acesso") REFERENCES "local" ("nomeLocal") ON DELETE SET NULL,
    CONSTRAINT "ck_tipo_local" CHECK (
        "tipoLocal" IN ('Local', 'Masmorra', 'Estabelecimento')
    )
);

2.2. CREATE da Tabela "Efeito"

A tabela Efeito guarda todos os tipos de efeitos, negativos ou positivos, que jogadores, monstros ou equipamentos podem ter ou aplicar. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "efeito" (
    "idEfeito" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    "nome" character varying(30) NOT NULL,
    "descricao" character varying(100) NOT NULL,
    "tipo" character varying(15) NOT NULL,
    "valor" SMALLINT NOT NULL,
    "duracaoTurnos" SMALLINT
);

2.3. CREATE da Tabela "Inventario"

A tabela Inventario armazena todos os tipos de inventários existentes no jogo, visto que o jogador possui diferentes espaços de armazenamento para propósitos diferentes. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "inventario" (
    "idInventario" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    "nome" character varying(30) NOT NULL,
    "slotMaximo" SMALLINT NOT NULL
);

2.4. CREATE da Tabela "Npc"

A tabela NPC armazena os dados dos NPC's disponíveis no jogo, isto é, personagens que irão interagir com o jogador de alguma maneira. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "npc" (
    "idNPC" integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
    "nome" character varying(60) NOT NULL,
    "tipoNPC" character varying(30) NOT NULL,
    "descricao" character varying(100) NOT NULL,
    "ativo" boolean NOT NULL
);

A tabela Dialogo armazena todas as falas e narrações que NPC's poderão executar com o jogador dentro do jogo. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "dialogo" (
    "idDialogo" integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
    "conteudo" character varying(300) NOT NULL,
    "ordem" SMALLINT NOT NULL,
    "tipo" character varying(60) NOT NULL,
    "idDialogoPai" INTEGER,

    CONSTRAINT "fk_dialogo_pai" FOREIGN KEY ("idDialogoPai") REFERENCES "dialogo" ("idDialogo") ON DELETE SET NULL
);




3. Tabelas Dependentes

Nesta Categoria estão tabelas que precisam da existência de outras tabelas, seja base ou não. Em outras palavras, são tabelas que possuem chaves estrangeiras.

3.1. CREATE da Tabela "Jogador"

A tabela Jogador guarda as principais informações do personagem controlado pelo usuário. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "jogador" (
    "nickname" character varying(60) PRIMARY KEY,
    "maxHP" SMALLINT NOT NULL,
    "atualHP" SMALLINT NOT NULL,
    "ouro" SMALLINT NOT NULL,
    "PosiçãoX_Jogador" SMALLINT NOT NULL,
    "PosiçãoY_Jogador" SMALLINT NOT NULL,
    "nomeLocal" CHARACTER varying(60) NOT NULL,
    "idEfeito" integer,

    CONSTRAINT "fk_efeito" FOREIGN KEY ("idEfeito") REFERENCES "efeito" ("idEfeito") ON DELETE CASCADE,
    CONSTRAINT "fk_local" FOREIGN KEY ("nomeLocal") REFERENCES "local" ("nomeLocal") ON DELETE CASCADE
);

3.2. CREATE da Tabela "Mundo"

A tabela Mundo guarda as informacões de tempo e evolução do mundo do jogador. Também serve como ponte de relacionamento para outras tabelas com o jogador. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "mundo" (
    "seedMundo" character varying(30) PRIMARY KEY,
    "nickname" character varying(60) NOT NULL,
    "periodo" character varying(8) NOT NULL,
    "dia" integer NOT NULL,
    "nivelMundo" SMALLINT NOT NULL,

    CONSTRAINT "fk_jogador" FOREIGN KEY ("nickname") REFERENCES "jogador" ("nickname") ON DELETE CASCADE
);

3.3. CREATE da Tabela "Masmorra"

A tabela Masmorra é uma tabela que representa uma especialização da tabela Local, cujo identifica os locais que são classificados como Masmorra. Aqui são guardadas informações sobre a lógica de acesso e exploraçãopor parte do jogador. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "masmorra" (
    "nomeLocal" character varying(60) PRIMARY KEY,
    "nivelDesbloqueio" SMALLINT NOT NULL,
    "qtdAndar" SMALLINT NOT NULL,

    CONSTRAINT "fk_local" FOREIGN KEY ("nomeLocal") REFERENCES "local" ("nomeLocal") ON DELETE CASCADE
);

3.4. CREATE da Tabela "Estabelecimento"

A tabela Estabelecimento é uma tabela que representa uma especialização da tabela Local, cujo identifica os locais que são classificados como Estabelecimento. Aqui é guardada o nome do local para que outras tabelas possam relacionar-se de forma exclusiva, sem afetar os locais classificados como Masmorras. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "estabelecimento" (
    "nomeLocal" character varying(60) PRIMARY KEY,

    CONSTRAINT "fk_local" FOREIGN KEY ("nomeLocal") REFERENCES "local" ("nomeLocal") ON DELETE CASCADE
);

3.5. CREATE da Tabela "Inst_Masmorra"

A Tabela Inst_Masmorra é uma instância que é gerada para cada Mundo criado, isto é, para cada jogador criado. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "inst_masmorra" (
    "seedMundo" CHARACTER varying(30) NOT NULL,
    "seedMasmorra" character varying(30) NOT NULL,
    "nomeLocal" character varying(60) NOT NULL,
    "ativo" BOOLEAN NOT NULL,

    CONSTRAINT "fk_masmorra" FOREIGN KEY ("nomeLocal") REFERENCES "masmorra" ("nomeLocal") ON DELETE CASCADE,
    CONSTRAINT "pk_inst_masmorra" PRIMARY KEY ("seedMundo", "seedMasmorra")
);

3.6. CREATE da Tabela "Sala"

A Tabela Sala armazena as principais informações de salas individuais presente nas instâncias de masmorras. Uma Instância de Masmorra é formada pelo conjunto de Salas, organizadas em forma de Matriz. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "sala" (
    "seedSala" character varying(30) PRIMARY KEY,
    "posicaoX" integer NOT NULL,
    "posicaoY" integer NOT NULL,
    "categoria" character varying(60) NOT NULL,
    "seedMundo" character varying(30) NOT NULL,
    "seedMasmorra" character varying(30) NOT NULL,
    "nomeLocal" character varying(60) NOT NULL,

    CONSTRAINT "fk_inst_masmorra" FOREIGN KEY ("seedMasmorra", "seedMundo") REFERENCES "inst_masmorra" ("seedMasmorra", "seedMundo") ON DELETE CASCADE,
    CONSTRAINT "fk_masmorra" FOREIGN KEY ("nomeLocal") REFERENCES "masmorra" ("nomeLocal") ON DELETE CASCADE
);

3.7. CREATE da Tabela "Monstro"

A Tabela Monstro descreve o Bestiário do jogo Moonlighter Terminal Game. Em outras palavras, armazena todos os monstros existentes do jogo e que, posteriormente, poderão ser instanciados. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "monstro" (
    "idMonstro" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    "nome" character varying(30) NOT NULL,
    "descricao" character varying(100) NOT NULL,
    "nivel" SMALLINT NOT NULL,
    "vidaMaxima" SMALLINT NOT NULL,
    "ouroDropado" SMALLINT NOT NULL,
    "dadoAtaque" character varying(4) NOT NULL,
    "chanceCritico" REAL NOT NULL,
    "multiplicador" SMALLINT NOT NULL,
    "multiplicadorCritico" SMALLINT NOT NULL,
    "chefe" boolean NOT NULL,
    "nomeLocal" character varying(60) NOT NULL,
    "idEfeito" integer,

    CONSTRAINT "fk_masmorra" FOREIGN KEY ("nomeLocal") REFERENCES "masmorra" ("nomeLocal") ON DELETE CASCADE,
    CONSTRAINT "fk_efeito" FOREIGN KEY ("idEfeito") REFERENCES "efeito" ("idEfeito") ON DELETE CASCADE
);

3.8. CREATE da Tabela "Inst_Monstro"

A Tabela Inst_Monstro armazena todas as instâncias de monstros criados durante o jogo pelo jogador. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "inst_monstro" (
    "seedMundo" CHARACTER varying(30),
    "idMonstro" integer,
    "vidaAtual" SMALLINT NOT NULL,
    "status" integer NOT NULL,
    "seedSala" character varying(30) NOT NULL,

    CONSTRAINT "pk_inst_monstro" PRIMARY KEY ("seedMundo", "idMonstro"),
    CONSTRAINT "fk_mundo" FOREIGN KEY ("seedMundo") REFERENCES "mundo" ("seedMundo") ON DELETE CASCADE,
    CONSTRAINT "fk_monstro" FOREIGN KEY ("idMonstro") REFERENCES "monstro" ("idMonstro") ON DELETE CASCADE,
    CONSTRAINT "fk_sala" FOREIGN KEY ("seedSala") REFERENCES "sala" ("seedSala") ON DELETE CASCADE
);

3.9. CREATE da Tabela "Item"

A tabela Item armazena todos os itens disponíveis no jogo Moonlighter Terminal Game e que, posteriormente, poderão ser instanciadas. Sua criação foi realizada com SQL com a seguinte operação:

CREATE TABLE "item" (
    "idItem" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    "nome" character varying(80) UNIQUE NOT NULL,
    "descricao" character varying(500) NOT NULL,
    "tipo" character varying(15),
    "precoBase" INTEGER NOT NULL,
    "cultura" CHARACTER varying(10) NOT NULL,
    "stackMaximo" SMALLINT NOT NULL,
    "idEfeito" integer,

    CONSTRAINT "fk_efeito" FOREIGN KEY ("idEfeito") REFERENCES "efeito" ("idEfeito") ON DELETE CASCADE
);

3.10. CREATE da Tabela "Arma"

A tabela Arma representa uma especialização da Tabela Item, cujo classifica alguns itens para o tipo de arma. Aqui, são armazenado dados adicionais de ataque e comportamentos em batalhas. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "arma" (
    "idItem" integer PRIMARY KEY,
    "dadoAtaque" character varying(3) NOT NULL,
    "chanceCritico" real NOT NULL,
    "multiplicador" SMALLINT NOT NULL,
    "multiplicadorCritico" SMALLINT NOT NULL,
    "tipoArma" character varying(15) NOT NULL,

    CONSTRAINT "fk_item" FOREIGN KEY ("idItem") REFERENCES "item" ("idItem") ON DELETE CASCADE
);

3.11. CREATE da Tabela "Armadura"

A tabela Armadura representa uma especialização da Tabela Item, cujo classifica alguns itens para o tipo de armadura. Aqui, são armazenado dados adicionais de defesa e comportamentos em batalhas. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "armadura" (
    "idItem" integer PRIMARY KEY,
    "dadoDefesa" character varying(3) NOT NULL,
    "defesaPassiva" SMALLINT NOT NULL,
    "criticoDefensivo" SMALLINT NOT NULL,
    "bonusDefesa" SMALLINT NOT NULL,
    "tipoArmadura" character varying(15) NOT NULL,

    CONSTRAINT "fk_item" FOREIGN KEY ("idItem") REFERENCES "item" ("idItem") ON DELETE CASCADE
);

3.12. CREATE da Tabela "Pocao"

A tabela Pocao representa uma especialização da Tabela Item, cujo classifica alguns itens para o tipo de poção. Aqui, são armazenado dados adicionais de comportamentos em batalhas quando ingerido pelo jogador. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "pocao" (
    "idItem" integer PRIMARY KEY,
    "duracaoTurnos" SMALLINT NOT NULL,

    CONSTRAINT "fk_item" FOREIGN KEY ("idItem") REFERENCES "item" ("idItem") ON DELETE CASCADE
);

3.13. CREATE da Tabela "Loja_Jogador"

A Tabela Loja_Jogador irá registrar todas as lojas "Moonlighter" para cada Mundo gerado, ou seja, para cada jogador. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "loja_jogador" (
    "seedMundo" CHARACTER varying(30) PRIMARY KEY,
    "nomeLocal" character varying(60),
    "nivel" SMALLINT NOT NULL,
    "exposicaoMaxima" SMALLINT NOT NULL,
    "exposicaoUsada" SMALLINT NOT NULL,

    CONSTRAINT "fk_mundo" FOREIGN KEY ("seedMundo") REFERENCES "mundo" ("seedMundo") ON DELETE CASCADE,
    CONSTRAINT "fk_estabelecimento" FOREIGN KEY ("nomeLocal") REFERENCES "estabelecimento" ("nomeLocal") ON DELETE CASCADE
);

3.14. CREATE da Tabela "Inst_Inventario"

A Tabela Inst_Inventario representa uma instância de um inventário para cada jogador criado pelo usuário e para cada tipo de inventario. Aqui, é armazenado apenas o slot ocupado por itens obtidos pelo jogador. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "inst_inventario" (
    "idInventario" integer,
    "nickname" character varying(60) NOT NULL,
    "slotOcupado" integer NOT NULL,

    CONSTRAINT "fk_inventario" FOREIGN KEY ("idInventario") REFERENCES "inventario" ("idInventario") ON DELETE CASCADE,
    CONSTRAINT "fk_jogador" FOREIGN KEY ("nickname") REFERENCES "jogador" ("nickname") ON DELETE CASCADE,
    CONSTRAINT "pk_inst_inventario" PRIMARY KEY ("idInventario", "nickname")
);

3.15. CREATE da Tabela "Inst_Forja"

A Tabela Inst_Forja representa uma instância de uma forjaria para cada Mundo criado pelo usuário. Aqui são armazenada dados bases para as forjas, adminstradas por NPC's. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "inst_forja" (
    "seedMundo" character varying(30) PRIMARY KEY,
    "nomeLocal" character varying(60) NOT NULL,
    "idNPC" integer NOT NULL,

    CONSTRAINT "fk_mundo" FOREIGN KEY ("seedMundo") REFERENCES "mundo" ("seedMundo") ON DELETE CASCADE,
    CONSTRAINT "fk_estabelecimento" FOREIGN KEY ("nomeLocal") REFERENCES "estabelecimento" ("nomeLocal") ON DELETE CASCADE,
    CONSTRAINT "fk_npc" FOREIGN KEY ("idNPC") REFERENCES "npc" ("idNPC") ON DELETE CASCADE
);

3.16. CREATE da Tabela "Inst_Varejo"

A Tabela Inst_Varejo representa uma instância de um Varejo para cada Mundo criado pelo usuário. Aqui, é armazenao o dado de margem de lucro que a instância terá com relação ao preço base dos itens à serem vendidos. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "inst_varejo" (
    "seedMundo" character varying(30) PRIMARY KEY,
    "nomeLocal" character varying(60) NOT NULL,
    "idNPC" integer NOT NULL,
    "margemLucro" SMALLINT NOT NULL,

    CONSTRAINT "fk_mundo" FOREIGN KEY ("seedMundo") REFERENCES "mundo" ("seedMundo") ON DELETE CASCADE,
    CONSTRAINT "fk_estabelecimento" FOREIGN KEY ("nomeLocal") REFERENCES "estabelecimento" ("nomeLocal") ON DELETE CASCADE,
    CONSTRAINT "fk_npc" FOREIGN KEY ("idNPC") REFERENCES "npc" ("idNPC") ON DELETE CASCADE
);

3.17. CREATE da Tabela "Inst_Banco"

A Tabela Inst_Banco representa uma instância de um Banco para cada Mundo criado pelo usuário. Aqui é armazenado dados da quantidade de ouro para que a moeda do jogador possa render após algum tempo. Sua criação foi feita em SQL com a seguinte operação:

CREATE TABLE "inst_banco" (
    "seedMundo" character varying(30) PRIMARY KEY,
    "nomeLocal" character varying(60) NOT NULL,
    "idNPC" integer NOT NULL,
    "valorEntrada" SMALLINT NOT NULL,
    "valorAtual" SMALLINT NOT NULL,

    CONSTRAINT "fk_mundo" FOREIGN KEY ("seedMundo") REFERENCES "mundo" ("seedMundo") ON DELETE CASCADE,
    CONSTRAINT "fk_estabelecimento" FOREIGN KEY ("nomeLocal") REFERENCES "estabelecimento" ("nomeLocal") ON DELETE CASCADE,
    CONSTRAINT "fk_npc" FOREIGN KEY ("idNPC") REFERENCES "npc" ("idNPC") ON DELETE CASCADE
);

3.18. CREATE da Tabela "Inst_Item"

A Tabela Inst_Item representa a instância de Item para cada geração e utilização dentro do jogo, seja em monstros, salas, verejos, etc. Aqui são armazenadas dados individuais de cada instância, como sua quantidade, e várias chavez estrangeiras que ditará a localização deste item.

CREATE TABLE "inst_item" (
    "idItem" integer PRIMARY KEY,
    "quantidade" SMALLINT NOT NULL,

    -- REFERENCIA À TABELA INST_MONSTRO
    "idMonstro" integer,
    "seedMundoInstMonstro" CHARACTER varying(30),

    -- REFERENCIA À TABELA INST_INVENTARIO
    "nickname" character varying(60),
    "idInventario" integer,

    -- REFERENCIA À TABELA INST_VAREJO
    "seedMundoInstVarejo" character varying(30),

    -- REFERENCIA À TABELA SALA
    "seedSala" character varying(30),

    -- REFERENCIA À TABELA LOJA_JOGADOR
    "seedMundoLojaJogador" character varying(30),

    CONSTRAINT "fk_item" FOREIGN KEY ("idItem") REFERENCES "item" ("idItem") ON DELETE CASCADE,
    CONSTRAINT "fk_inst_monstro" FOREIGN KEY ("idMonstro", "seedMundoInstMonstro") REFERENCES "inst_monstro" ("idMonstro", "seedMundo") ON DELETE CASCADE,
    CONSTRAINT "fk_inst_inventario" FOREIGN KEY ("idInventario", "nickname") REFERENCES "inst_inventario" ("idInventario", "nickname") ON DELETE CASCADE,
    CONSTRAINT "fk_inst_varejo" FOREIGN KEY ("seedMundoInstVarejo") REFERENCES "inst_varejo" ("seedMundo") ON DELETE CASCADE,
    CONSTRAINT "fk_sala" FOREIGN KEY ("seedSala") REFERENCES "sala" ("seedSala") ON DELETE CASCADE,
    CONSTRAINT "fk_loja_jogador" FOREIGN KEY ("seedMundoLojaJogador") REFERENCES "loja_jogador" ("seedMundo") ON DELETE CASCADE
);




4. Tabelas de Relacionamento

Nesta Categoria, estão tabelas que representam o relacionamento de outras 2 tabelas. Em outras palavras, é um relacionamento que realiza a relação Muitos para Muitos (0,N) no Diagrama Entidade-Relacionamento e que, portanto, precisou se tornar uma tabela dentro do Modelo Relacional.

4.1. CREATE da Tabela "Receita"

A tabela Receita é um relacionamento pelo Diagrama Entidade-Relacionamento que se tornou, além de uma Tabela pelo Modelo Relacional, uma agregação. Aqui, é registrada, através de um auto-relacionamento de Item com Item, os objetos necessários para se fabricar um novo item. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "receita" (
    "idItemFabricado" integer NOT NULL,
    "idItemFabricador" integer NOT NULL,
    "quantidade" SMALLINT NOT NULL,

    CONSTRAINT "fk_itemResultado" FOREIGN KEY ("idItemFabricado") REFERENCES "item" ("idItem") ON DELETE CASCADE,
    CONSTRAINT "fk_item" FOREIGN KEY ("idItemFabricador") REFERENCES "item" ("idItem") ON DELETE CASCADE
);

4.2. CREATE da Tabela "Monstro_Item"

A Tabela Monstro_Item representa um relacionamento de Muito para Muitos entre a Tabela Monstro e Item. Aqui é registrado quais são os itens que cada monstro poderá deixar cair (Dropar) caso o jogador o derrote. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "monstro_item" (
    "idMonstro" integer NOT NULL,
    "idItem" integer NOT NULL,
    "chanceDrop" real NOT NULL,
    "qtdMinima" SMALLINT NOT NULL,
    "qtdMaxima" SMALLINT NOT NULL,

    CONSTRAINT "fk_monstro" FOREIGN KEY ("idMonstro") REFERENCES "monstro" ("idMonstro") ON DELETE CASCADE,
    CONSTRAINT "fk_monstrp" FOREIGN KEY ("idItem") REFERENCES "item" ("idItem") ON DELETE CASCADE
);

4.3. CREATE da Tabela "Inst_Forja_Item"

A Tabela Inst_Forja_Item representa um relacionamento Muito para Muitos entre a tabela Inst_Forja e Item. Aqui é registrada quais são os itens que cada instância está oferecendo para forjar. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "inst_forja_item" (
    "idItem" integer NOT NULL,
    "seedMundo" character varying(10) NOT NULL,

    CONSTRAINT "fk_item" FOREIGN KEY ("idItem") REFERENCES "item" ("idItem") ON DELETE CASCADE,
    CONSTRAINT "fk_inst_item" FOREIGN KEY ("seedMundo") REFERENCES "inst_forja" ("seedMundo") ON DELETE CASCADE
);

4.4. CREATE da Tabela "Dialogo_Npc"

A Tabela Dialogo_Npc representa um relacionamento Muito para Muitos entre a tabela Dialogo e Npc. Aqui todos os diálogos são conectados com algum NPC existente no jogo. Sua criação foi realizada em SQL com a seguinte operação:

CREATE TABLE "dialogo_npc" (
    "idDialogo" integer NOT NULL,
    "idNPC" integer NOT NULL,

    CONSTRAINT "fk_dialogo" FOREIGN KEY ("idDialogo") REFERENCES "dialogo" ("idDialogo") ON DELETE CASCADE,
    CONSTRAINT "fk_npc" FOREIGN KEY ("idNPC") REFERENCES "npc" ("idNPC") ON DELETE CASCADE
);

Versão

Data Versão Autor(es) Mudanças
11/06/2025 1.0 Todos da Equipe Criação da Página e Inserção do DDL