Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docs #15

Merged
merged 11 commits into from
Jan 14, 2025
15 changes: 12 additions & 3 deletions ddl/create_tables.sql
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ CREATE TABLE IF NOT EXISTS NPC (
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,
objetivo VARCHAR(255) NOT NULL,
progresso VARCHAR(50) NOT NULL,
fk_sala INT NOT NULL,
fk_cyberlutador INT NOT NULL,
FOREIGN KEY (fk_sala) REFERENCES Sala (idSala) ON DELETE CASCADE,
Expand All @@ -69,6 +70,8 @@ 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,
resposta VARCHAR(50) NOT NULL,
estado VARCHAR(50) NOT NULL,
fk_missao INT NOT NULL,
FOREIGN KEY (fk_missao) REFERENCES Missao (idMissao) ON DELETE CASCADE
);
Expand Down Expand Up @@ -116,7 +119,11 @@ CREATE TABLE IF NOT EXISTS Item (
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
fk_mochila INT,
fk_mercado_clandestino INT,
FOREIGN KEY (fk_item) REFERENCES Item (idItem),
FOREIGN KEY (fk_mochila) REFERENCES Mochila (idMochila),
FOREIGN KEY (fk_mercado_clandestino) REFERENCES MercadoClandestino (idMercadoClandestino)
);


Expand Down Expand Up @@ -202,7 +209,9 @@ CREATE TABLE IF NOT EXISTS Implante (
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
fk_cyberlutador INT NOT NULL,
FOREIGN KEY (fk_item) REFERENCES Item (idItem) ON DELETE CASCADE,
FOREIGN KEY (fk_cyberlutador) REFERENCES CyberLutador (idCyberLutador)
);

CREATE TABLE IF NOT EXISTS Biochip (
Expand Down
3 changes: 0 additions & 3 deletions dml/insert_data.sql
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,6 @@ INSERT INTO NetRunners (idNetRunners, fk_faccao, aumentaInte, aumentaPercep)
INSERT INTO CodeKeepers (idCodeKeepers, fk_faccao, aumentaVelo, aumentaResis)
VALUES (2, 2, 10, 10);

-----INSERT INTO VoidWalkers (idVoidWalkers, fk_faccao, aumentaVida, aumentaForca)
----- VALUES (3, 3, 10, 10);


-- MercadoClandestino

Expand Down
6 changes: 5 additions & 1 deletion docs/apresentacoes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Módulo 1

<iframe width="560" height="315" src="https://www.youtube.com/embed/L9jCedh0neM?si=UZKnhC7guZvwkp_x" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/L9jCedh0neM?si=UZKnhC7guZvwkp_x" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

# Módulo 2

<iframe width="560" height="315" src="https://www.youtube.com/embed/JCwEpZsERSc?si=fvNnY-inKbSnPf0N" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
9 changes: 3 additions & 6 deletions docs/modulo2/ddl.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,8 @@ Data Definition Language (DDL) é um elemento fundamental na gestão de bancos d
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.
</p>


??? Tabelas

```sql
CREATE TABLE IF NOT EXISTS Regiao (
```sql
CREATE TABLE IF NOT EXISTS Regiao (
idRegiao INT PRIMARY KEY DEFAULT nextval('regiao_id_seq'),
nomeRegiao VARCHAR(50) NOT NULL
);
Expand Down Expand Up @@ -228,7 +225,7 @@ Segundo Silberschatz, Korth e Sudarshan (2011), a DDL desempenha um papel fundam
aumentaResis INT NOT NULL,
FOREIGN KEY (fk_implante) REFERENCES Implante (idImplante) ON DELETE CASCADE
);
```
```


# Referência Bibliográfica
Expand Down
222 changes: 221 additions & 1 deletion docs/modulo2/dml.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,232 @@
# Introdução

<p align="justify">
Este documento aborda o uso de Data Manipulation Language para a criação e manipulação de dados, no contexto do jogo cyberpunk, adotado como temática do projeto do grupo. Inclui inserções, atualizações e exclusões de registros em tabelas relacionadas a regiões, salas, personagens, missões, recompensas, puzzles, diálogos e outros elementos do jogo.
</p>

# Data Manipulation Language

<p align="justify">
O Data Manipulation Language é um conjunto de comandos SQL utilizado para manipular os dados armazenados nas tabelas. Ele inclui operações como inserção, atualização e exclusão de registros. No projeto, as operações DML implementam a lógica do jogo, como a criação de personagens, missões, itens e interações entre eles.
</p>

<p align="justify">
Enquanto o DML se concentra na manipulação de dados, a consulta desses dados é feita na seção Data Query Language, onde comandos como *SELECT* são usados para recuperar informações do banco de dados.
</p>

<p align="justify">
Abaixo, estão descritas as seções do projeto que utilizam comandos DML para criar e gerenciar os elementos do jogo.
</p>

### Regiões
Essa tabela armazena as diferentes regiões do jogo. Cada região tem um identificador único e um nome.
```sql
INSERT INTO Regiao (idRegiao, nomeRegiao)
VALUES (1, 'Regiao Inicial');
```

### Salas
As salas pertencem a uma região e representam os espaços que os jogadores podem explorar. A chave estrangeira `fk_regiao` associa cada sala à sua respectiva região.
```sql
INSERT INTO Sala (idSala, nomeSala, fk_regiao)
VALUES (1, 'Sala Spawn', 1),
(2, 'Sala 2', 1),
(3, 'Sala 3', 1),
(4, 'Sala 4', 1),
(5, 'Sala 5', 1),
(6, 'Sala 6', 1),
(7, 'Sala 7', 1),
(8, 'Sala 8', 1),
(9, 'Sala 9', 1),
(10, 'Sala 10', 1),
(11, 'Sala 11', 1),
(12, 'Sala 12', 1),
(13, 'Sala 13', 1),
(14, 'Sala 14', 1),
(15, 'Sala 15', 1),
(16, 'Sala 16', 1),
(17, 'Sala 17', 1),
(18, 'Sala 18', 1),
(19, 'Sala 19', 1),
(20, 'Sala 20', 1);
```

### ExoHumanos
Os ExoHumanos são personagens presentes no jogo, associados a uma sala específica.
```sql
INSERT INTO ExoHumano (idExoHumano, nome, fk_sala)
VALUES (1,'ExoHumano Inicial', 1);
```

### Missões
As missões são desafios que os jogadores devem completar. Cada missão está associada a uma sala e a um CyberLutador específico.
```sql
INSERT INTO Missao (idMissao, nomeMissao, descricao, fk_sala, fk_cyberlutador)
VALUES (1, 'Missao Inicial', 'Descricao 1', 1, 1),
(2, 'Decodificação inicial', 'Descricao 2', 2, 1);
```

### Recompensas
As recompensas são atribuídas a missões ou a combates contra inimigos.
```sql
INSERT INTO Recompensa (idRecompensa, dinheiro, item, fk_instancia_inimigo, fk_cyberlutador)
VALUES (1, 100, 'Item Recompensa Inicial', 1, 1);

INSERT INTO RecompensaMissao (idRecompensaMissao, dinheiro, item, fk_sala, fk_cyberLutador)
VALUES (1, 100, 'Item Recompensa Missao Inicial', 1, 1);
```

### Puzzles
Os puzzles são desafios que os jogadores precisam resolver dentro de uma missão. Eles podem ser de tipos diferentes, como matemáticos ou de decodificação.
```sql
INSERT INTO Puzzle (idPuzzlle, nomePuzzle, dificuldade, fk_missao)
VALUES (1, 'Puzzle Inicial', 'Facil', 1);

INSERT INTO Matematico (fk_puzzle, expressao)
VALUES (1, '2 + 2 = ?');

INSERT INTO Decodificar (fk_puzzle, codigo)
VALUES (2, 'A = 1, B = 2, C = 3, D = 4, E = 5, F = 6, G = 7, H = 8, I = 9, J = 10, K = 11, L = 12, M = 13, N = 14, O = 15, P = 16, Q = 17, R = 18, S = 19, T = 20, U = 21, V = 22, W = 23, X = 24, Y = 25, Z = 26');
```

### Diálogos
Os diálogos são frases associadas aos NPCs para interagir com os jogadores em diferentes salas.
```sql
INSERT INTO Dialogo (idDialogo, nomeDialogo, fk_npc)
VALUES ('Olá, bem vindo ao jogo!', 1),
('Você está na sala 1', 1),
('Você está na sala 2', 2),
('Você está na sala 3', 3),
('Você está na sala 4', 4),
('Você está na sala 5', 5),
('Você está na sala 6', 6),
('Você está na sala 7', 7),
('Você está na sala 8', 8),
('Você está na sala 9', 9),
('Você está na sala 10', 10),
('Você está na sala 11', 11),
('Você está na sala 12', 12),
('Você está na sala 13', 13),
('Você está na sala 14', 14),
('Você está na sala 15', 15),
('Você está na sala 16', 16),
('Você está na sala 17', 17),
('Você está na sala 18', 18),
('Você está na sala 19', 19),
('Você está na sala 20', 20);
```

### CyberLutadores
Os CyberLutadores são os personagens controlados pelos jogadores. Seus atributos podem ser atualizados conforme o progresso do jogo.
```sql
INSERT INTO CyberLutador (idCyber, inteligencia, resistencia, furtividade, percepcao, vida, velocidade, forca)
VALUES (1, 10, 10, 10, 10, 100, 10, 10);

UPDATE CyberLutador
SET inteligencia = inteligencia + num,
resistencia = resistencia + num,
furtividade = furtividade + num,
percepcao = percepcao + num,
vida = vida + num,
velocidade = velocidade + num,
forca = forca + num
WHERE idCyber = 1;
```

### Itens
Os itens representam os objetos que os jogadores podem coletar e usar ao longo do jogo.
```sql
INSERT INTO Item (idItem, nomeItem, descricao, valor)
VALUES (1, 'Item Inicial', 'Item de teste', 100);

INSERT INTO InstanciaItem (idInstanciaItem, fk_item)
VALUES (1, 1);

DELETE FROM InstanciaItem
WHERE idInstanciaItem = 1;
```

### NPCs
Os NPCs fornecem interações e desafios aos jogadores.
```sql
INSERT INTO NPC (idNPC, nomeNPC, descricao, fk_sala)
VALUES (1, 'NPC Inicial', 'Descricao npc 1', 1);

INSERT INTO Mentor (fk_npc, aumentaInteligencia, aumentaFurtividade, aumentaPercepcao)
VALUES (1, 10, 10, 10);
```

### Facções
As facções agrupam CyberLutadores com ideologias e habilidades específicas.
```sql
INSERT INTO Faccao (idFaccao, fk_cyberlutador, nomeFaccao, ideologia)
VALUES (1, 1, 'Faccao Teste', 'Ideologia de teste'),
(2, 2, 'NetRunners', 'Ideologia NetRunners'),
(3, 3, 'CodeKeepers', 'Ideologia CodeKeepers'),
(4, 4, 'VoidWalkers', 'Ideologia VoidWalkers');

INSERT INTO NetRunners (idNetRunners, fk_faccao, aumentaInte, aumentaPercep)
VALUES (1, 1, 10, 10);

INSERT INTO CodeKeepers (idCodeKeepers, fk_faccao, aumentaVelo, aumentaResis)
VALUES (2, 2, 10, 10);
```

### Mercado Clandestino
Representa os mercados onde os jogadores podem negociar itens.
```sql
INSERT INTO MercadoClandestino (idMercadoClandestino, nomeMercado, desccricao, fk_sala)
VALUES (1, 'Mercado Inicial', 'Descricao teste', 1);
```

### Mochilas
As mochilas armazenam itens coletados pelos jogadores durante o jogo.
```sql
INSERT INTO Mochila (idMochila, capacidade, fk_cyberlutador, fk_instanciaitem)
VALUES (1, 50, 1, 1);
```

### Carros
Os carros são meios de transporte associados a uma região específica.
```sql
INSERT INTO Carro (idCarro, combustivel, fk_regiao)
VALUES (1, 50, 1);
```

### Inimigos
Os inimigos oferecem desafios de combate aos jogadores.
```sql
INSERT INTO Inimigo (qtdDano, vida, fk_npc)
VALUES (10, 100, 1);

INSERT INTO InstanciaInimigo (idInstanciaInimigo, fk_inimigo)
VALUES (1, 1);

UPDATE InstanciaInimigo
SET qtdDano = qtdDano + num,
vida = vida + num
WHERE idInstanciaInimigo = 1;

DELETE FROM InstanciaInimigo
WHERE idInstanciaInimigo = 1;
```

### Implantes
Os implantes oferecem melhorias aos CyberLutadores, aumentando suas capacidades no jogo.
```sql
INSERT INTO Implante (idImplante, nomeImplante, tipo, fk_cyberLutador)
VALUES (1, 'Implante Inicial', 'Implante de teste', 1);
```

# Referência Bibliográfica

> <a id="REF1" href="#anchor_1">1.</a> 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.

> <a id="REF2" href="#anchor_2">2.</a> 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](https://github.com/GabriellyAssuncao) |
| 1.0 | 06/01/2025 | Criação do Documento| [Gabrielly Assunção](https://github.com/GabriellyAssuncao) |
| 1.1 | 12/01/2025 | Adicionando introdução e script explicado do DML| [Maria Eduarda Marques](https://github.com/EduardaSMarques) e [Lucas Meireles](https://github.com/Katuner)|

Loading
Loading