... | ... | @@ -14,6 +14,57 @@ Foi decidido utilizar um banco de dados relacional PostgreSQL, uma vez que a apl |
|
|
|
|
|
|
|
|
# Diagrama do banco de dados
|
|
|
![GiftReminder](uploads/42b7d4f75a044b30f78abce63739e5be/GiftReminder.png)
|
|
|
![GiftReminder](uploads/e14f5d81f4c7009e7bea56a7b3e8ee82/image.png)
|
|
|
|
|
|
# Modelagem do Banco de Dados |
|
|
\ No newline at end of file |
|
|
# 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 `item_id` da tabela `Item` em uma relação de m-pra-muitos. |
|
|
\ No newline at end of file |