Banco de Dados
Visão Geral
Este repositório documenta a estrutura do banco de dados do projeto, incluindo tabelas, atributos e relacionamentos.
Juntamente com imagens e tabelas ilustrativas, e a descrição das ferramentas utilizadas.
Modelagem
O modelo abaixo apresenta a modelagem do banco de dados do projeto Lucky Draw, nele podemos ver quais tabelas do banco compõem o sistema. Com isso, podemos observar os atributos de cada tabela, bem como os tipos de cada um, e o relacionamento de cada uma por meio das ligações apresentadas utilizando a mesma nomenclatura disponível no dbdiagram.io.
![imagem_2025-03-26_194848364]()
Tabelas
License
Campo |
Tipo |
Descrição |
id_license |
Integer (PK) |
Identificador único da licença |
text |
Varchar |
Texto da licença |
data_created |
Timestamp |
Data de criação da licença |
User
Campo |
Tipo |
Descrição |
id_user |
Integer (PK) |
Identificador do usuário |
name |
Varchar |
Nome do usuário |
nickname |
Varchar |
User |
email |
Varchar |
Email |
password |
Varchar |
Senha |
bio |
Text |
Biografia |
coins |
Integer |
Moedas |
is_admin |
Boolean |
Tipo de usuário |
offender_day |
Integer |
Dias de ofensiva |
data_last_active |
Timestamp |
Última atividade |
photo |
Varchar |
Foto do usuário |
license_id |
Integer (FK) |
Licença do usuário |
active |
Boolean |
Status da conta |
Deck
Campo |
Tipo |
Descrição |
id_deck |
Integer (PK) |
Identificador do baralho |
name |
Varchar |
Nome do baralho |
price |
Float |
Preço |
number_cards |
Integer |
Número de cartas |
art |
Varchar |
Arte |
UserDeck
Campo |
Tipo |
Descrição |
id_user_deck |
Integer (PK) |
Identificador |
id_user |
Integer (FK) |
Usuário |
id_deck |
Integer (FK) |
Baralho |
Card
Campo |
Tipo |
Descrição |
id_card |
Integer (PK) |
Identificador da carta |
art |
Varchar |
Arte |
id_deck |
Integer (FK) |
Baralho |
DailyCards
Campo |
Tipo |
Descrição |
id_daily_cards |
Integer (PK) |
Identificador |
card1 |
Integer (FK) |
Carta 1 |
card2 |
Integer (FK) |
Carta 2 |
card3 |
Integer (FK) |
Carta 3 |
card4 |
Integer (FK) |
Carta 4 |
date |
Timestamp |
Data |
Posts
Campo |
Tipo |
Descrição |
id_post |
Integer (PK) |
Identificador do post |
post_art |
Varchar |
Arte |
card1 |
Integer (FK) |
Carta 1 |
card2 |
Integer (FK) |
Carta 2 |
card3 |
Integer (FK) |
Carta 3 |
card4 |
Integer (FK) |
Carta 4 |
post_type |
Varchar |
Tipo do post |
number_reports |
Integer |
Número de denúncias |
is_active |
Boolean |
Ativo |
post_data |
Timestamp |
Data |
Report
Campo |
Tipo |
Descrição |
id_report |
Integer (PK) |
Identificador do reporte |
id_user |
Integer (FK) |
Usuário |
id_post |
Integer (FK) |
Post reportado |
data_report |
Timestamp |
Data |
Relacionamentos
- Usuários podem possuir múltiplos Decks por meio da tabela UserDeck.
- Cada Deck contém várias Cards.
- O sistema gera um conjunto de DailyCards.
- Usuários podem criar Posts associados a cartas.
-
Posts podem ser denunciados por usuários na tabela Report.
Ferramentas
PostgreSQL
O PostgreSQL é um Sistema Gerenciador de Banco de Dados Relacional de código aberto que proporciona escalabilidade e segurança no armazenamento e recuperação de dados. A modularidade da sua arquitetura junto a recursos como transações ACID (atomicidade, consistência, isolamento e durabilidade) e suporte para trabalhar com JSON (JavaScript Object Notation) fez com que o escolhessemos para este projeto. Além disso, o fato de ser um banco relacional facilita o aprendizado dado que é o tipo de tecnologia mais visto em disciplinas de banco no curso de Engenharia de Software.
DBeaver
Recomendamos o uso do DBeaver neste projeto para trabalhar com o banco de dados PostgreSQL porque ele oferece uma interface intuitiva, poderosa e unificada que facilita a visualização das tabelas, execução de queries e gerenciamento do banco como um todo. Além disso, o DBeaver é gratuito, multiplataforma e possui integração nativa com PostgreSQL, o que agiliza o desenvolvimento e minimiza erros, especialmente em trabalhos colaborativos.