... | ... | @@ -10,3 +10,105 @@ Espaço destinado ao compartilhamento de informações sobre o Banco de Dados do |
|
|
## Modelagem
|
|
|
|
|
|
![eddiagr](uploads/4f93e0698ca0d8a7b5060bf461d8a148/eddiagr.png)
|
|
|
|
|
|
<br>
|
|
|
|
|
|
# Banco de Dados
|
|
|
|
|
|
O banco foi desenvolvido utilizando Flask como framework e SQLAlchemy como ORM, a escolha destas tecnologias ocorreu para facilitar a interação com o banco de dados de forma mais intuitiva e estruturada.
|
|
|
|
|
|
## Tabelas
|
|
|
|
|
|
1 - User
|
|
|
Armazena informações sobre os usuários do sistema, como os administradores do sistema ou o pessoal responsável pelas escolas.
|
|
|
```
|
|
|
• id: Identificador único do usuário (chave primária).
|
|
|
• name: Nome do usuário.
|
|
|
• email: E-mail único para cada usuário.
|
|
|
• password: Senha criptografada do usuário.
|
|
|
• role: Privilégio administrativo do usuário.
|
|
|
```
|
|
|
2 - School
|
|
|
Representa as escolas que utilizam o sistema. Cada escola pode ter várias turmas associadas.
|
|
|
```
|
|
|
• id: Identificador único da escola (chave primária).
|
|
|
• user_id: Relaciona o leitor ao seu usuário específico (chave estrangeira).
|
|
|
• name: Nome da escola.
|
|
|
• address: Endereço da escola.
|
|
|
• CNPJ: CNPJ da escola.
|
|
|
```
|
|
|
3 - Class
|
|
|
Representa as turmas dentro de uma escola. Cada turma pode ter vários leitores, ou alunos, associados e pode ter um ou mais livros sendo lidos.
|
|
|
```
|
|
|
• id: Identificador único da turma (chave primária).
|
|
|
• school_id: Relaciona a turma a uma escola específica (chave estrangeira).
|
|
|
• name: Nome da turma.
|
|
|
```
|
|
|
4 - Reader
|
|
|
Armazena informações sobre os alunos, ou leitores, que estão utilizando o sistema para acompanhar seu progresso na leitura de livros.
|
|
|
```
|
|
|
• id: Identificador único do leitor (chave primária).
|
|
|
• user_id: Relaciona o leitor ao seu usuário específico (chave estrangeira).
|
|
|
• school_id: Relaciona o leitor a uma escola específica (chave estrangeira).
|
|
|
• class_id: Relaciona o leitor a uma turma específica (chave estrangeira).
|
|
|
• name: Nome do leitor.
|
|
|
```
|
|
|
5 - Category
|
|
|
Representa as categorias dos livros disponíveis no sistema. Os livros foram classificados de maneira pré-definida, como "Ficção", "Aventura", "Educação", etc.
|
|
|
```
|
|
|
• id: Identificador único da categoria (chave primária).
|
|
|
• name: Nome da categoria.
|
|
|
```
|
|
|
6 - Book
|
|
|
Armazena informações sobre os livros disponíveis no sistema, incluindo os dados do livro e a associação com categorias.
|
|
|
```
|
|
|
• id: Identificador único do livro (chave primária).
|
|
|
• title: Título do livro.
|
|
|
• cover: Caminho para a imagem de capa do livro.
|
|
|
• total_page: Número total de páginas do livro.
|
|
|
• category_id: Relaciona o livro a uma categoria (chave estrangeira).
|
|
|
• file_id: Relaciona o livro a um arquivo PDF (chave estrangeira).
|
|
|
```
|
|
|
7 - Chapter
|
|
|
Armazena os capítulos de cada livro. Cada capítulo pode conter uma descrição e um GIF para ilustrar o que aconteceu no capítulo.
|
|
|
```
|
|
|
• id: Identificador único do capítulo (chave primária).
|
|
|
• book_id: Relaciona o capítulo ao livro (chave estrangeira).
|
|
|
• title: Título do capítulo.
|
|
|
• start_page: Página inicial do capítulo.
|
|
|
• end_page: Página final do capítulo.
|
|
|
```
|
|
|
8 - ReaderProgress
|
|
|
Monitora o progresso de leitura de cada aluno para cada livro. Armazena em que capítulo o aluno está e o percentual de progresso.
|
|
|
```
|
|
|
• id: Identificador único do progresso (chave primária).
|
|
|
• reader_id: Relaciona o progresso a um aluno (chave estrangeira).
|
|
|
• book_id: Relaciona o progresso ao livro (chave estrangeira).
|
|
|
• chapter_number: O último capítulo que o leitor parou.
|
|
|
• page_numer: A última página que o leitor parou.
|
|
|
```
|
|
|
9 - File
|
|
|
Armazena os arquivos PDF dos livros, que são os documentos de leitura.
|
|
|
```
|
|
|
• id: Identificador único do arquivo (chave primária).
|
|
|
• book_id: Relaciona o arquivo ao livro (chave estrangeira).
|
|
|
• name: Nome do arquivo.
|
|
|
• file_url: Caminho para o arquivo PDF do livro.
|
|
|
```
|
|
|
_________________________________________________________________________________________________________
|
|
|
|
|
|
## Relações Entre as Tabelas
|
|
|
|
|
|
• <b>User ↔ School:</b> Um usuário com o privilégio de escola pode ter acesso a uma escolas, assim como cada escola tem um único usuário com privilégio de escola.
|
|
|
|
|
|
• <b>School ↔ Class:</b> Uma escola pode ter várias turmas, mas cada turma pertence a uma única escola.
|
|
|
|
|
|
• <b>Class ↔ Reader:</b> Uma turma pode ter vários leitores (alunos), mas cada aluno pertence a uma única turma.
|
|
|
|
|
|
• <b>Category ↔ Book:</b> Cada livro pertence a uma categoria, mas uma categoria pode ter vários livros associados.
|
|
|
|
|
|
• <b>Book ↔ Chapter:</b> Cada livro pode ter vários capítulos, mas um capítulo pertence a um único livro.
|
|
|
|
|
|
• <b>Reader ↔ ReaderProgress ↔ Book ↔ Chapter:</b> Cada leitor pode ter um ou mais registros de progresso, cada um associando o progresso do leitor a um livro e um capítulo específicos. Isso permite monitorar em que ponto o aluno está em cada livro e capítulo.
|
|
|
|
|
|
• <b>Book ↔ File:</b> Cada livro tem um arquivo PDF associado, armazenado na tabela File. |