Home | Escopo | Git Workflow | Design/Mockups | Configuração | Arquitetura | Gerência | Código | BD | Qualidade |
---|
Sumário
- Sumário
- Descrição
- Modelo e provedor escolhido (PostgreSQL)
- Diagrama do banco de dados
- Modelagem do Banco de Dados
Descrição
Esta seção visa fornecer uma breve introdução ao banco de dados selecionado, bem como abordar sua configuração e aplicação no contexto do projeto. Optou-se pelo PostgreSQL como o sistema de gerenciamento de banco de dados (SGBD). O PostgreSQL é utilizado para armazenar os dados essenciais da aplicação, incluindo informações sobre usuários, projetos, tarefas e outros elementos relevantes.
Modelo e provedor escolhido (PostgreSQL)
Foi decidido utilizar um banco de dados relacional PostgreSQL, uma vez que a aplicação não exigia um grande número de tabelas e buscava-se pela simplicidade na sua implementação.
Diagrama do banco de dados
Modelagem do Banco de Dados
A modelagem do banco de dados é bastante intuitiva, com uma tabela para cada entidade relevante ao projeto, com uma tabela auxiliar para as listas de desejos.
User
Tabela Representa as entidades 'Usuário'. Suas colunas são:
-
user_id
, chave primária da entidade -
username
, representa o nome de usuário no aplicativo, utilizado para encontrar usuários e é público a todos -
name
, representa o nome real do usuário, é privado ao usuário por padrão -
email
, representa o email do usuário, necessário para entrar em uma conta -
password
, representa a senha do usuário -
profile picture
, representa a foto do usuário,null
por padrão -
date_of_birth
, representa a data de nascimento do usuário, também é utilizada para determinar o seu aniversário -
pix
, representa a chave pix do usuário,null
por padrão
Friendship
Tabela Representa as entidades 'Amizade'. Suas colunas são:
-
sender_id
, chave estrangeira, relacionada à colunauser_id
da tabelaUser
em uma relação de muitos-pra-muitos. -
reciever_id
, chave estrangeira, relacionada à colunauser_id
da tabelaUser
em uma relação de muitos-pra-muitos. -
status
, utilizada para definir o estado da amizade e do convite de amizade. Pode serPending
, para pedidos de amizade enviados, mas que não foram respondidos,Accepted
, para pedidos aceitos e representam uma amizade concreta eDenied
, para pedidos recusados, não representam uma amizade.
Observação: A chave primária desta tabela é uma chave combinada das colunas sender_id
e reciever_id
.
Event
Tabela Representa as entidades 'Evento'. Suas colunas são:
-
event_id
, chave primária da entidade -
name
, representa o nome da entidade -
date
, representa a data em que ocorrerá o evento -
private
, indicador que representa se um evento poderá ser visto por qualquer usuário ou apenas pelo seu criador e pessoas autorizadas -
admin_id
, chave estrangeira, relacionada à colunauser_id
da tabelaUser
em uma relação de muitos-pra-um. -
description
, representa a descrição do evento, pode ser personalizada pelo usuário
Item
Tabela Representa as entidades 'Item'. Suas colunas são:
-
item_id
, chave primária da entidade -
name
, representa o nome da entidade -
description
, representa a descrição da entidade -
price
, representa o preço da entidade, com duas casas decimais -
item_category
, representa uma categoria relacionada à entidade, pode ser utilizada para recomendações personalizadas para usuários -
link
, representa um endereço link que redirecionará o usuário à pagina da web de uma loja parceira, para comprar o produto -
picture_link
, representa um endereço link para uma imagem da entidade na pagina de uma loja parceira
Wishlist
Tabela Utilizada para representar uma lista de desejos de um usuário que pode ou não estar associada a um evento. Suas colunas são:
-
wishlist_id
, chave primária da entidade -
owner_id
, chave estrangeira, relacionada à colunauser_id
da tabelaUser
em uma relação de muitos-pra-um. -
event_id
, chave estrangeira, relacionada à colunaevent_id
da tabelaEvent
em uma relação de um-pra-um.
Itemlist
Tabela Utilizada para adaptar a relação muitos-pra-muitos entre itens e listas de desejos para uma relação muitos-pra-um e outra um-pra-muitos. Suas colunas são:
-
item_list_id
, chave primária da entidade -
item_id
, chave estrangeira, relacionada à colunaitem_id
da tabelaItem
em uma relação de muitos-pra-um. -
list_id
, chave estrangeira, relacionada à colunawishlist_id
da tabelawishlist
em uma relação de m-pra-muitos.