Skip to main content

Documentação do Banco de Dados

Introdução

 Nesta seção, detalharemos a estrutura e a configuração do banco de dados utilizado no projeto. Utilizamos PostgreSQL como nosso sistema de gerenciamento de banco de dados relacional, juntamente com o FastAPI para a construção da API e Ormar como ORM (Object-Relational Mapping) para manipulação de dados.

Tabelas existentes

Tabela users:

 A tabela users armazena informações dos usuários do sistema.

  • id: Identificador único do usuário (chave primária).
  • username: Nome de usuário.
  • password: Senha do usuário.
  • admin: Indica se o usuário é administrador (true/false).
CREATE TABLE users (
id serial PRIMARY KEY,
username text,
password text,
admin bool
);

Tabela robot:

 A tabela robot armazena informações dos robôs associados aos usuários.

  • id: Identificador único do robô (chave primária).
  • name: Nome do robô.
  • user_id: Identificador do usuário ao qual o robô está associado (chave estrangeira referenciando users.id).
CREATE TABLE robot (
id serial PRIMARY KEY,
name text,
user_id integer REFERENCES users (id)
);

Tabela media:

 A tabela media armazena informações sobre mídias associadas aos robôs.

  • uuid: Identificador único da mídia (chave primária).
  • title: Título da mídia.
  • type: Tipo da mídia (true para vídeo, false para imagem).
  • date: Data de criação da mídia.
  • robot_id: Identificador do robô ao qual a mídia está associada (chave estrangeira referenciando robot.id).
CREATE TABLE media (
uuid uuid PRIMARY KEY,
title text,
type bool,
date timestamp,
robot_id integer REFERENCES robot (id)
);

Tabela log:

 A tabela log armazena registros de ações realizadas por usuários ao utilizarem a aplicação.

  • id: Identificador único do log (chave primária).
  • date: Data em que a ação foi realizada.
  • emergency_button: Se foi realizado o uso da parada de emergência durante o uso.
  • ia_request: Para registrar se foi necessário utilizar a visão computacional.
  • username: Identificar quem realizou as ações durante o uso da aplicação.
  • user_id: Chave estrangeira para referenciar o usuário que fez uso da aplicação.
CREATE TABLE log (
id serial PRIMARY KEY,
emergency_button bool,
ia_request bool,
username text,
date timestamp,
user_id integer REFERENCES users (id)
);

Tabela temperature:

 A tabela temperature armazena registro de temperatura medido pelo robô durante o seu uso.

  • id: Identificador único da temperatura (chave primária).
  • temp: Valor capturado pelo sensor do robô para medir a temperatura.
  • robot_id: Chave estrangeira para referenciar que robô foi utilizado.
CREATE TABLE temperature (
id serial PRIMARY KEY,
temp float,
robot_id integer REFERENCES robot (id)
);

Tabela location:

 A tabela location armazena a localização do robô no eixo x e y durante o seu uso na caldeira.

  • id: Identificador único da localização (chave primária).
  • location_x: Valor que representa a localização do robô no eixo x.
  • location_y: Valor que representa a localização do robô no eixo y.
  • robot_id: Chave estrangeira para referenciar que robô foi utilizado.
CREATE TABLE location (
id serial PRIMARY KEY,
location_x float,
location_y float,
robot_id integer REFERENCES robot (id)
);

Representação visual do Schema

 Abaixo está a representação visual do schema do banco de dados utilizando a sintaxe ERD (Entity-Relationship Diagram). Esta representação ajuda a compreender as relações entre as tabelas e como os dados estão organizados.

erDiagram
USERS {
int id
text username
text password
bool admin
}
ROBOT {
int id
text name
int user_id
}
MEDIA {
uuid uuid
text title
bool type
timestamp date
int robot_id
}
TEMPERATURE {
int id
float temp
int robot_id
}
LOCATION {
int id
float location_x
float location_y
int robot_id
}
LOG {
int id
bool emergency_button
bool ia_request
text username
timestamp date
int user_id
}

USERS ||--o{ ROBOT : "possui"
ROBOT ||--o{ MEDIA : "possui"
ROBOT ||--o{ TEMPERATURE : "registra"
ROBOT ||--o{ LOCATION : "registra"
USERS ||--o{ LOG : "gera"

Explicação das Relações

  • USERS e ROBOT: Um usuário pode possuir múltiplos robôs, mas cada robô está associado a um único usuário. Esta relação é representada como USERS ||--o{ ROBOT.

  • ROBOT e MEDIA: Cada robô pode ter várias mídias associadas, mas cada mídia está associada a um único robô. Esta relação é representada como ROBOT ||--o{ MEDIA.

  • ROBOT e TEMPERATURE: Cada robô pode registrar múltiplas temperaturas, mas cada registro de temperatura está associado a um único robô. Esta relação é representada como ROBOT ||--o{ TEMPERATURE.

  • ROBOT e LOCATION: Cada robô pode registrar múltiplas localizações, mas cada registro de localização está associado a um único robô. Esta relação é representada como ROBOT ||--o{ LOCATION.

  • USERS e LOG: Um usuário pode gerar múltiplos logs, mas cada log está associado a um único usuário. Esta relação é representada como USERS ||--o{ LOG.

 O diagrama acima mostra como as tabelas estão conectadas umas às outras através de chaves estrangeiras. Ele fornece uma visão clara de como os dados fluem entre as tabelas e como elas se relacionam umas com as outras.