|
| [Home](home) | [**Escopo**](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Gerência](gerencia) | [Código](codigo) | [BD](Banco de Dados) | [Qualidade](qualidade) | [Frontend](frontend) | [Backend](backend) |
|
|
| [Home](home) | [Escopo](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Gerência](gerencia) | [Código](codigo) | [**BD**](Banco-de-Dados) | [Qualidade](qualidade) | [Frontend](frontend) | [Backend](backend) |
|
|
| :----------: | :-------------------------------: | :------------------: | :--------------: | :--------------------------: | :--------------------: | :------------------------: | :--------------: | :---------------: | :--------------------: | :---------------: | :--------------------: | |
|
| :----------: | :-------------------------------: | :------------------: | :--------------: | :--------------------------: | :--------------------: | :------------------------: | :--------------: | :---------------: | :--------------------: | :---------------: | :--------------------: |
|
|
\ No newline at end of file |
|
|
|
|
|
![Static Badge](https://img.shields.io/badge/Banco_de_dados-Relacional-blue)
|
|
|
|
[![MySQL](https://shields.io/badge/MySQL-lightgrey?logo=mysql&logoColor=white&labelColor=blue)](https://www.mysql.com/)
|
|
|
|
|
|
|
|
|
|
|
|
- [Descrição](#descrição)
|
|
|
|
- [Modelo e provedor escolhido (MySQL)](#modelo-e-provedor-escolhido-mysql)
|
|
|
|
- [Diagrama do Banco de Dados](#diagrama-do-banco-de-dados)
|
|
|
|
- [Configuração do Prisma](#configuração-do-prisma)
|
|
|
|
- [Utilização do Prisma](#utilização-do-prisma)
|
|
|
|
- [Arquivos e pastas no diretório prisma/](#arquivos-e-pastas-no-diretório-prisma)
|
|
|
|
- [Comandos úteis (definidos no *package.json*):](#comandos-úteis-definidos-no-packagejson)
|
|
|
|
- [Outros](#outros)
|
|
|
|
|
|
|
|
## Descrição
|
|
|
|
|
|
|
|
Esta seção da documentação visa apresentar o banco de dados utilizado no projeto, bem como sua configuração e utilização. O banco de dados utilizado no projeto é o [MySQL](https://mysql.com), e o ORM utilizado para a conexão com o banco de dados é o [Prisma](https://prisma.io). O banco de dados é utilizado para armazenar os dados da aplicação, como usuários, projetos, tarefas, etc.
|
|
|
|
|
|
|
|
## Modelo e provedor escolhido (MySQL)
|
|
|
|
|
|
|
|
O modelo de banco de dados escolhido para o projeto foi o relacional, devido a sua simplicidade e facilidade de implementação. Ainda, o modelo relacional é o modelo mais utilizado atualmente, e é o modelo que a equipe possui mais experiência e conhecimento.
|
|
|
|
Após definido o modelo, foi necessário escolher o provedor de banco de dados que seria utilizado e, sem muita discussão, optou-se por utilizar o MySQL ao invés de, por exemplo. Ele é um dos bancos de dados mais utilizados atualmente, e é também um dos bancos de dados mais utilizados pela equipe, o que facilita a manutenção e o desenvolvimento do projeto.
|
|
|
|
|
|
|
|
## Diagrama do Banco de Dados
|
|
|
|
|
|
|
|
![Relational MySQL Schema](uploads/schema.png)
|
|
|
|
|
|
|
|
## Configuração do Prisma
|
|
|
|
|
|
|
|
Para melhor manutenção do banco de dados e de seus componentes, optou-se por utilizar o [**Prisma**](https://www.prisma.io/) como ORM (Object Relational Mapping) para o projeto. O Prisma é uma ferramenta que permite a criação de um banco de dados através de um schema, e a partir deste schema, o Prisma gera um cliente que pode ser utilizado para realizar as operações de CRUD no banco de dados.
|
|
|
|
|
|
|
|
Para fazer a instalação inicial do prisma, é necessário rodar o seguinte comando no terminal do backend do projeto:
|
|
|
|
|
|
|
|
```
|
|
|
|
npm install @prisma/cli --save-dev
|
|
|
|
```
|
|
|
|
|
|
|
|
Após a instalação, é necessário rodar o seguinte comando para inicializar o prisma no projeto:
|
|
|
|
|
|
|
|
```
|
|
|
|
npx prisma init
|
|
|
|
```
|
|
|
|
|
|
|
|
Este comando irá criar uma pasta chamada prisma, com um arquivo chamado schema.prisma, que será o arquivo que irá conter o schema do banco de dados. O schema do banco de dados é definido através de um modelo de dados, que é uma linguagem declarativa própria do Prisma. É neste arquivo que iremos definir as tabelas do banco de dados, bem como seus atributos, relacionamentos e, principalmente, a conexão com o banco de dados e o provedor de banco de dados que será utilizado.
|
|
|
|
|
|
|
|
Para definir a conexão com o banco de dados, é necessário definir a url de conexão com o banco de dados no arquivo schema.prisma, na variável `DATABASE_URL`. Esta variável é definida no arquivo `.env`, que deve ser criado na raiz do projeto.
|
|
|
|
|
|
|
|
```prisma
|
|
|
|
// file: schema.prisma
|
|
|
|
|
|
|
|
datasource db {
|
|
|
|
provider = "mysql"
|
|
|
|
url = env("DATABASE_URL")
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
O arquivo `.env` deve seguir a estrutura do arquivo `.env.example`, e deve conter a url de conexão com o banco de dados, que deve seguir o seguinte padrão:
|
|
|
|
|
|
|
|
```
|
|
|
|
mysql://<user>:<password>@host:port/schema_name
|
|
|
|
```
|
|
|
|
|
|
|
|
Por exemplo:
|
|
|
|
|
|
|
|
```
|
|
|
|
mysql://root:senha@localhost:3306/globoaplausos
|
|
|
|
```
|
|
|
|
|
|
|
|
Após definida a URL de conexão e montado o schema no arquivo schema.prisma, é necessário rodar o seguinte comando para que o Prisma crie as tabelas no banco de dados:
|
|
|
|
|
|
|
|
```
|
|
|
|
npx prisma migrate dev --name init
|
|
|
|
```
|
|
|
|
|
|
|
|
Para criar também os usuários e outros componentes "padrão" da aplicação há um arquivo que contém os dados que serão inseridos no banco de dados. O arquivo de seed do projeto é o `seed.ts`, que está localizado na pasta `prisma/seed.ts`, e pode ser executado através do comando:
|
|
|
|
|
|
|
|
```
|
|
|
|
npx prisma db seed --preview-feature
|
|
|
|
```
|
|
|
|
|
|
|
|
Após a execução do comando, o Prisma irá inserir os dados no banco de dados, e o banco de dados estará pronto para ser utilizado.
|
|
|
|
|
|
|
|
## Utilização do Prisma
|
|
|
|
### Arquivos e pastas no diretório prisma/
|
|
|
|
|
|
|
|
- `migrations`: Esta pasta contém as migrações do banco de dados. Saiba mais sobre elas na documentação: https://pris.ly/d/understanding-migrations
|
|
|
|
- `*/migration.sql`: Este arquivo contém as instruções SQL que são executadas quando você executa a migração.
|
|
|
|
- `migration_lock.toml`: Este arquivo contém o estado da migração. Não deve ser editado manualmente.
|
|
|
|
- `schema.prisma`: Este arquivo contém o seu schema. Saiba mais sobre ele na documentação: https://pris.ly/d/prisma-schema
|
|
|
|
- `seed.ts`: Este arquivo contém o script que preenche o banco de dados com dados. Você pode executá-lo executando `npm run prisma:update`
|
|
|
|
|
|
|
|
### Comandos úteis (definidos no *package.json*):
|
|
|
|
|
|
|
|
Depois de editar o arquivo schema.prisma, você precisa atualizar a biblioteca Prisma Client
|
|
|
|
|
|
|
|
```sh
|
|
|
|
npm run prisma:format
|
|
|
|
```
|
|
|
|
|
|
|
|
Se houveram mudanças no schema.prisma, você precisa gerar uma nova migração:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
npm run prisma:update
|
|
|
|
```
|
|
|
|
|
|
|
|
Se você quiser conferir que a migração está correta, você pode utilizar o Prisma Studio, que é uma ferramenta que permite visualizar e editar os dados do banco de dados. Para iniciar o Prisma Studio, execute o seguinte comando:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
npm run prisma
|
|
|
|
```
|
|
|
|
|
|
|
|
## Outros
|
|
|
|
|
|
|
|
Para mais informações sobre configuração de ambiente e servidor de banco de dados, acesse a seção de [configuração](configuracao) da documentação. |