... | @@ -3,8 +3,6 @@ |
... | @@ -3,8 +3,6 @@ |
|
|
|
|
|
# Página do Banco de Dados
|
|
# Página do Banco de Dados
|
|
|
|
|
|
Aqui deve ser explicado com modelos e explicações como o Banco de Dados foi construido, onde se deve focar em:
|
|
|
|
|
|
|
|
##### Banco de dados: **PostgreSQL**
|
|
##### Banco de dados: **PostgreSQL**
|
|
|
|
|
|
Escolhemos utilizar o banco de dados PostgreSQL, pois ele é um dos SGBDs Opensource mais avançados disponíveis hoje, com recursos avançados como: [PostgreSQL](https://pt.wikipedia.org/wiki/PostgreSQL)
|
|
Escolhemos utilizar o banco de dados PostgreSQL, pois ele é um dos SGBDs Opensource mais avançados disponíveis hoje, com recursos avançados como: [PostgreSQL](https://pt.wikipedia.org/wiki/PostgreSQL)
|
... | @@ -21,171 +19,32 @@ Escolhemos utilizar o banco de dados PostgreSQL, pois ele é um dos SGBDs Openso |
... | @@ -21,171 +19,32 @@ Escolhemos utilizar o banco de dados PostgreSQL, pois ele é um dos SGBDs Openso |
|
* Estrutura para guardar dados Georreferenciados PostGIS
|
|
* Estrutura para guardar dados Georreferenciados PostGIS
|
|
|
|
|
|
|
|
|
|
--- Como ele foi desenvolvido, com Imagens e Diagramas
|
|
## Modelo Lógico
|
|
|
|
![](https://tools.ages.pucrs.br/garbus/garbus-wiki/raw/feat/ModelagemDB/Images/db_garbus.png)
|
|
|
|
|
|
|
|
|
|
* o Collections(Entities)
|
|
|
|
|
|
|
|
* o ScriptSQL
|
|
|
|
|
|
|
|
##### Script SQL para criação do schema inicial do banco de dados:
|
|
|
|
```
|
|
|
|
CREATE TABLE IF NOT EXISTS TYPES_EVENTS (
|
|
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
NAME VARCHAR NOT NULL,
|
|
|
|
DESCRIPTION VARCHAR
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS ZONES (
|
|
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
NAME VARCHAR NOT NULL NOT NULL,
|
|
|
|
DESCRIPTION VARCHAR NOT NULL,
|
|
|
|
LONGITUDE NUMERIC,
|
|
|
|
LATITUDE NUMERIC
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS TRASH_STATUS (
|
|
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
NAME VARCHAR NOT NULL,
|
|
|
|
DESCRIPTION VARCHAR NOT NULL
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS TYPE_TRASH (
|
|
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
NAME VARCHAR NOT NULL,
|
|
|
|
DESCRIPTION VARCHAR NOT NULL
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS PROFILES (
|
|
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
NAME VARCHAR NOT NULL,
|
|
|
|
DESCRIPTION VARCHAR NOT NULL
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS EVENTS (
|
|
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
DESCRIPTION VARCHAR,
|
|
|
|
CREATION_DATE TIMESTAMP NOT NULL,
|
|
|
|
PROBLEM_STATUS VARCHAR NOT NULL,
|
|
|
|
ID_TYPE_EVENTS INTEGER
|
|
|
|
);
|
|
|
|
|
|
|
|
ALTER TABLE EVENTS ADD CONSTRAINT FK_TYPE_EVENTS
|
|
|
|
FOREIGN KEY (ID_TYPE_EVENTS)
|
|
|
|
REFERENCES TYPES_EVENTS (ID);
|
|
|
|
|
|
|
|
|
|
##### Modelo atualizado
|
|
|
|
Para desenvolvimento do banco de dados, utilizamos a ferramenta para modelagem online ([DBDiagram](https://dbdiagram.io)), o que facilita a manter o modelo atualizado e colaborativo.
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS BUILDINGS (
|
|
[Link Modelo Garbus](https://dbdiagram.io/d/60b19c43b29a09603d170e44)
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
NAME VARCHAR NOT NULL,
|
|
|
|
LONGITUDE NUMERIC NOT NULL,
|
|
|
|
LATITUDE NUMERIC NOT NULL,
|
|
|
|
ID_ZONE INTEGER NOT NULL
|
|
|
|
);
|
|
|
|
|
|
|
|
ALTER TABLE BUILDINGS ADD CONSTRAINT FK_BUILDINGS_ZONES
|
|
<a href="https://dbdiagram.io/d/60b19c43b29a09603d170e44"><img src="https://community.dbdiagram.io/uploads/default/original/1X/4431f78b1742115d112e87b93af510e8ce32d222.png" alt="DBDiagram" width="123" /></a>
|
|
FOREIGN KEY (ID_ZONE)
|
|
|
|
REFERENCES ZONES (ID);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS USERS (
|
|
## Collections(Entities)
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
EMAIL VARCHAR,
|
|
|
|
NAME VARCHAR NOT NULL,
|
|
|
|
LOGIN VARCHAR NOT NULL,
|
|
|
|
PASSWORD VARCHAR NOT NULL,
|
|
|
|
BLOCKED BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
DT_REGISTER TIMESTAMP NOT NULL,
|
|
|
|
ID_PROFILE INTEGER
|
|
|
|
);
|
|
|
|
|
|
|
|
ALTER TABLE USERS ADD CONSTRAINT FK_USERS_PROFILES
|
|
Entities | Description
|
|
FOREIGN KEY (ID_PROFILE)
|
|
--------- | ------
|
|
REFERENCES PROFILES (ID);
|
|
trashes | Entidade responsável por armazenar detalhes da lixeira como, localização, ocupação e outros dados da lixeira
|
|
|
|
trash_status | Armazena os status possíveis da lixeira como, ativa e inativa
|
|
|
|
type_trash | Armazena o tipo de lixeira, papel, vidro, etc
|
|
CREATE TABLE IF NOT EXISTS USER_ZONE (
|
|
trashes_threshold | Armazena os valores de capacidade que irá gerar os alertas de cheia, vazia ou meio cheia
|
|
ID SERIAL PRIMARY KEY,
|
|
trashes_events | Armazena os eventos gerados pelas lixeiras, como manutenção e capacidade
|
|
ID_USER INTEGER,
|
|
buildings | Armazena os dados dos prédios como, localização e zona
|
|
ID_ZONE INTEGER
|
|
zones | Armazena o nome e a localização da zona
|
|
);
|
|
events | Armazena os tipos dos eventos
|
|
|
|
profiles |
|
|
ALTER TABLE USER_ZONE ADD CONSTRAINT FK_USER_ZONE
|
|
|
|
FOREIGN KEY (ID_USER)
|
|
|
|
REFERENCES USERS (ID);
|
|
|
|
|
|
|
|
ALTER TABLE USER_ZONE ADD CONSTRAINT FK_ZONE_USER
|
|
|
|
FOREIGN KEY (ID_ZONE)
|
|
|
|
REFERENCES ZONES (ID);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS TRASHES (
|
|
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
BRAND VARCHAR NOT NULL,
|
|
|
|
DESCRIPTION VARCHAR NOT NULL,
|
|
|
|
CAPACITY FLOAT NOT NULL,
|
|
|
|
OCCUPATION FLOAT NOT NULL,
|
|
|
|
ID_STATUS INTEGER,
|
|
|
|
ID_TYPE INTEGER,
|
|
|
|
ID_BUILDING INTEGER,
|
|
|
|
ID_ZONE INTEGER,
|
|
|
|
LOCAL_DESCRIPTION VARCHAR,
|
|
|
|
LONGITUDE NUMERIC,
|
|
|
|
LATITUDE NUMERIC
|
|
|
|
);
|
|
|
|
|
|
|
|
ALTER TABLE TRASHES ADD CONSTRAINT FK_TRASHES_BUILDINGS
|
|
|
|
FOREIGN KEY (ID_BUILDING)
|
|
|
|
REFERENCES Buildings (ID);
|
|
|
|
|
|
|
|
ALTER TABLE TRASHES ADD CONSTRAINT FK_TYPE_LIV
|
|
|
|
FOREIGN KEY (ID_TYPE)
|
|
|
|
REFERENCES TYPE_TRASH (ID);
|
|
|
|
|
|
|
|
ALTER TABLE TRASHES ADD CONSTRAINT FK_TRASH_STATUS
|
|
|
|
FOREIGN KEY (ID_STATUS)
|
|
|
|
REFERENCES TRASH_STATUS (ID);
|
|
|
|
|
|
|
|
ALTER TABLE TRASHES ADD CONSTRAINT FK_ZONES_TRASHES
|
|
|
|
FOREIGN KEY (ID_ZONE)
|
|
|
|
REFERENCES ZONES (ID);
|
|
|
|
|
|
|
|
ALTER TABLE TRASHES ADD CONSTRAINT TRASH_BUILDING_OR_ZONE
|
|
|
|
CHECK (ID_ZONE IS NULL OR ID_BUILDING IS NULL);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS TRASHES_EVENTS (
|
|
|
|
ID SERIAL PRIMARY KEY,
|
|
|
|
ID_EVENT INTEGER,
|
|
|
|
ID_TRASH INTEGER,
|
|
|
|
ID_USER INTEGER,
|
|
|
|
OCCUPATION FLOAT,
|
|
|
|
OTHERS VARCHAR,
|
|
|
|
DATE TIMESTAMP NOT NULL
|
|
|
|
);
|
|
|
|
|
|
|
|
ALTER TABLE TRASHES_EVENTS ADD CONSTRAINT FK_TRASHES_EVENTS_EVENTS
|
|
|
|
FOREIGN KEY (ID_EVENT)
|
|
|
|
REFERENCES EVENTS (ID);
|
|
|
|
|
|
|
|
ALTER TABLE TRASHES_EVENTS ADD CONSTRAINT FK_TRASHES_EVENTS_USERS
|
|
|
|
FOREIGN KEY (ID_USER)
|
|
|
|
REFERENCES USERS (ID);
|
|
|
|
|
|
|
|
ALTER TABLE TRASHES_EVENTS ADD CONSTRAINT FK_TRASHES_EVENTS_TRASH
|
|
|
|
FOREIGN KEY (ID_TRASH)
|
|
|
|
REFERENCES TRASHES (ID);
|
|
|
|
|
|
|
|
|
|
* o ScriptSQL
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS TRASHES_THRESHOLD (
|
|
##### Script SQL para criação do schema inicial do banco de dados: |
|
ID SERIAL PRIMARY KEY,
|
|
\ No newline at end of file |
|
MAX_OCCUPATION FLOAT,
|
|
|
|
COLOR VARCHAR NOT NULL,
|
|
|
|
ID_TRASH INTEGER NOT NULL
|
|
|
|
);
|
|
|
|
``` |
|
|
|
\ No newline at end of file |
|
|