Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GiftReminder
  • Wiki
  • Wiki
  • Banco de Dados

Last edited by Leonardo Vargas Soares Jul 09, 2024
Page history

Banco de Dados

Home Escopo Git Workflow Design/Mockups Configuração Arquitetura Gerência BD Qualidade

Sumário

  • Sumário
  • Descrição
  • Modelo e provedor escolhido (PostgreSQL)
  • Diagrama do banco de dados
  • Modelagem do Banco de Dados
    • Tabela User
    • Tabela Friendship
    • Tabela Event
    • Tabela Item
    • Tabela Wishlist
    • Tabela Itemlist

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.

PostgreSQL

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

GiftReminder

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.

Tabela User

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

Tabela Friendship

Representa as entidades 'Amizade'. Suas colunas são:

  • sender_id, chave estrangeira, relacionada à coluna user_id da tabela User em uma relação de muitos-pra-muitos.
  • reciever_id, chave estrangeira, relacionada à coluna user_id da tabela User em uma relação de muitos-pra-muitos.
  • status, utilizada para definir o estado da amizade e do convite de amizade. Pode ser Pending, para pedidos de amizade enviados, mas que não foram respondidos, Accepted, para pedidos aceitos e representam uma amizade concreta e Denied, 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.

Tabela Event

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 à coluna user_id da tabela User em uma relação de muitos-pra-um.
  • description, representa a descrição do evento, pode ser personalizada pelo usuário

Tabela Item

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

Tabela Wishlist

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 à coluna user_id da tabela User em uma relação de muitos-pra-um.
  • event_id, chave estrangeira, relacionada à coluna event_id da tabela Event em uma relação de um-pra-um.

Tabela Itemlist

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 à coluna item_id da tabela Item em uma relação de muitos-pra-um.
  • list_id, chave estrangeira, relacionada à coluna wishlist_id da tabela wishlist em uma relação de m-pra-muitos.
Clone repository
  • Banco de Dados
  • Configuracao
  • Design_Mockups
  • Git Workflow
  • arquitetura
  • escopo
  • gerencia
  • Home
  • qualidade