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.
![diagrama_atualizado]()
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 |
| id_user |
Integer |
ID do usuário associado ao DailyCards |
Posts
| Campo |
Tipo |
Descrição |
| id_post |
Integer (PK) |
Identificador do post |
| id_daily_cards |
Integer (FK) |
Identificador do DailyCards associado ao post |
| post_art |
Varchar |
Arte |
| 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.