|
|
|
| [**Home**](home) | [Escopo e Cronograma](Escopo%20e%20Cronograma) | [Processo](Processo) | [Mockups](design_mockups) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Código](codigo) | [BD](banco_dados) | [Qualidade](qualidade) |
|
|
|
|
|
|
|
|
# Banco de Dados – Plataforma de Doações
|
|
|
|
|
|
|
|
## Visão Geral
|
|
|
|
O banco de dados foi projetado para suportar a plataforma de campanhas de arrecadação, contemplando usuários (administradores e doadores), endereços, campanhas, doações, pagamentos e eventos.
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## Entidades e Estrutura
|
|
|
|
### `user_account`
|
|
|
|
- `id` (UUID, PK)
|
|
|
|
- `email` (único, obrigatório)
|
|
|
|
- `password_hash`
|
|
|
|
|
|
|
|
### `admin`
|
|
|
|
- `user_id` (PK, FK → user_account.id)
|
|
|
|
- `root` (boolean, indica superadmin)
|
|
|
|
|
|
|
|
### `donor`
|
|
|
|
- `user_id` (PK, FK → user_account.id)
|
|
|
|
- `tax_id` (CPF, único)
|
|
|
|
- `full_name`, `birth_date`, `gender`, `phone`
|
|
|
|
|
|
|
|
### `address`
|
|
|
|
- `id` (UUID, PK)
|
|
|
|
- `state`, `city`, `street`, `number`, `complement`
|
|
|
|
|
|
|
|
### `donor_address`
|
|
|
|
- PK composta (`donor_id`, `address_id`)
|
|
|
|
- `is_primary` (boolean)
|
|
|
|
- `addr_type` (ex.: residencial, comercial)
|
|
|
|
|
|
|
|
### `campaign`
|
|
|
|
- `id` (UUID, PK)
|
|
|
|
- `description`, `target_amount`, `start_date`, `end_date`, `image_url`
|
|
|
|
- `status` (`campaign_status`)
|
|
|
|
- `admin_id` (FK → admin.user_id)
|
|
|
|
- `requester_id` (FK → donor.user_id)
|
|
|
|
|
|
|
|
### `donation`
|
|
|
|
- `id` (UUID, PK)
|
|
|
|
- `donation_type`
|
|
|
|
- `amount`, `periodicity`, `impact_area`
|
|
|
|
- `donor_id` (FK → donor.user_id)
|
|
|
|
- `campaign_id` (FK → campaign.id)
|
|
|
|
- `created_at` (timestamptz)
|
|
|
|
|
|
|
|
### `payment`
|
|
|
|
- `id` (UUID, PK)
|
|
|
|
- `method` (`payment_method`)
|
|
|
|
- `status` (`payment_status`)
|
|
|
|
- `amount`, `paid_at`
|
|
|
|
- `donation_id` (FK → donation.id)
|
|
|
|
|
|
|
|
### `event_item`
|
|
|
|
- `id` (UUID, PK)
|
|
|
|
- `url`, `description`, `start_date`, `end_date`, `created_at`
|
|
|
|
- `admin_id` (FK → admin.user_id)
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## Índices
|
|
|
|
- `donor_address(address_id)`
|
|
|
|
- `campaign(admin_id)`
|
|
|
|
- `donation(donor_id)`
|
|
|
|
- `donation(campaign_id)`
|
|
|
|
- `payment(donation_id)`
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
## Observações
|
|
|
|
- Constraints de **ON DELETE** foram configuradas conforme regras de negócio.
|
|
|
|
- Doações preservam histórico mesmo se a campanha for excluída.
|
|
|
|
- Defaults: `uuid_generate_v4()` para IDs e `NOW()` para timestamps. |