Modelo de dados
Introdução
Os modelos de dados a seguir servem para descrever como será projetado a arquitetura do banco de dados do aplicativo QR Comer. A fim de estabelecer estratégias para desenvolvimento, a modelagem faz-se necessário para manipulação dos dados do sistema, tornando pragmático a visibilidade dos objetos e relacionamentos do sistema.
Versão 2.0
Após um planejamento do grupo e analisado as vantagens e desvantagens das possíveis arquiteturas, foi acordado que o modelo de microserviços seria utilizado para o desenvolvimento do backend da aplicação QR Comer. Portanto o modelo de dados foi fragmentado e será apresentado abaixo fazendo referência ao seu microserviço correspondente.
Costumer Service
Diagrama Entidade Relacionamento

| DER01 | DER |
|---|---|
| Versão | Atual: 1.0 (16/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de usuário |
| Autor | Alan Lima |
Diagrama Lógico

| DL01 | DL |
|---|---|
| Versão | Atual: 1.0 (16/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para a aplicação |
| Autor | Alan Lima |
Restaurant Service
Diagrama Entidade Relacionamento

| DER02 | DER |
|---|---|
| Versão | Atual: 2.0 (17/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de restaurante |
| Autor | Alan Lima |

| DER02 | DER |
|---|---|
| Versão | Atual: 1.0 (16/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de restaurante |
| Autor | Alan Lima |
Diagrama Lógico

| DL02 | DL |
|---|---|
| Versão | Atual: 2.0 (17/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de restaurante |
| Autor | Alan Lima |

| DL02 | DL |
|---|---|
| Versão | Atual: 1.0 (16/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de restaurante |
| Autor | Alan Lima |
Order Service
Diagrama Entidade Relacionamento

| DER03 | DER |
|---|---|
| Versão | Atual: 1.0 (16/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de pedidos |
| Autor | Alan Lima |
Diagrama Lógico

| DL03 | DL |
|---|---|
| Versão | Atual: 1.0 (16/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de pedidos |
| Autor | Alan Lima |
Payment Service
Diagrama Entidade Relacionamento

| DER04 | DER |
|---|---|
| Versão | Atual: 1.0 (18/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de pagamento |
| Autor | Alan Lima |
Diagrama Lógico

| DL04 | DL |
|---|---|
| Versão | Atual: 1.0 (18/09) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para o microserviço de pagamento |
| Autor | Alan Lima |
Versão 1.0
Modelo Entidade Relacionamento
| Entidade | Atributo |
|---|---|
| SHOPPING | cnpj nomeShopping telefone(multivalorado) endereco(composto) |
| CATEGORIARESTAURANTE | idCategoria nomeCategoria descricao |
| RESTAURANTE | cnpjRestaurante nomeRestaurante numero bloco descricao idCategoria |
| USUARIO | cpf nomeUsuario senha |
| CARDAPIO | idCardapio nomeCardapio descricao cnpjRestaurante |
| CARTAO | numero nomeTitular validade cvv |
| CATEGORIAITEM | idCategoriaItem nomeCategoriaItem descricao |
| ITEM | idItem nomeItem descricao valorUnitario quantidade idCategoriaItem cnpjRestaurante idCardapio |
| PEDIDO | codigo dataHoraRealizado valorTotal statusPedido cpf cnpjShopping cnpjRestaurante |
| Entidade | relação | Entidade | Descrição | Cardinalidade |
|---|---|---|---|---|
| SHOPPING | possui | RESTAURANTE | Um shopping possui um ou mais restaurantes cadastrados. Um restaurante pode estar associado a um ou mais shoppings | N:M |
| RESTAURANTE | possui | CATEGORIARESTAURANTE | Um restaurante possui uma ou mais categorias. Uma categoria pode estar associada a um ou mais restaurantes. | N:M |
| RESTAURANTE | possui | CARDAPIO | Um restaurante possui um ou mais cardapios. Um cardapio pode estar associada a um ou mais restaurante. | N:M |
| RESTAURANTE | possui | ITEM | Um restaurante possui um ou mais itens. Um item pode estar associada a um ou mais restaurantes. | N:M |
| CARDAPIO | possui | ITEM | Um cardapio possui um ou mais itens. Um item pode estar associada a um ou mais cardapios. | N:M |
| ITEM | possui | CATEGORIAITEM | Um item possui um ou mais categorias. Uma categoria pode estar associada a um ou mais itens. | N:M |
| USUARIO | realiza | PEDIDO | Um usuario realiza um ou mais pedidos. Um pedido pode estar associada a um ou mais usuarios. | N:M |
| PEDIDO | possui | ITEM | Um pedido possui um ou mais itens. Um item pode estar associado a um ou mais pedidos. | N:M |
| MER01 | MER |
|---|---|
| Versão | Atual: 1.0 (16/09) Anterior: - |
| Descrição | Modelo Entidade Relacionamento |
| Autor | Leonardo Barreiros |
Diagrama Entidade Relacionamento

| DER01 | DER |
|---|---|
| Versão | Atual: 1.0 (26/08) Anterior: - |
| Descrição | Diagrama Entidade Relacionamento para a aplicação |
| Autor | Alan Lima |
Diagrama Lógico

| DL01 | DL |
|---|---|
| Versão | Atual: 1.0 (26/08) Anterior: - |
| Descrição | Diagrama Lógico baseado no Diagrama Entidade Relacionamento inicial de dados |
| Autor | Matheus Blanco |
Dicionário de dados
Entidade: Cartão
Descrição: Modo de pagamento utilizado pelo cliente
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| numero | chave primária obrigatória | bigint | 16 | Número da frente do cartão |
| cpfcnpj | obrigatória | bigint | 20 | Dados jurídicos do dono |
| validade | obrigatória | date | Validade do cartão | |
| cvv | obrigatória | int | Código de segurança | |
| nomeTitular | obrigatória | varchar | 50 | |
| chave estrangeira obrigatória | varchar | 50 | E-mail do usuário |
Entidade: Usuário
Descrição: Usuário da aplicação, público-alvo
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| nome | obrigatória | varchar | 50 | Nome do Usuário |
| chave primária obrigatória | varchar | 50 | E-mail do Usuário | |
| senha | obrigatória | varchar | 20 | Senha do Usuário na aplicação |
Entidade: Avaliação_Pedido
Descrição: Momento de visualização do pedido pelo restaurante
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave primária obrigatória | bigint | 16 | Identificação do pedido |
| nota | obrigatória | varchar | 200 | Nota fiscal |
| descricao | obrigatória | varchar | 200 | Descrição do pedido |
| dataHora | obrigatória | date time | Hora e dia do registro do pedido | |
| numero | obrigatória | int | Número do pedido a ser chamado | |
| horaRealizado | obrigatória | time | Hora da montagem do pedido | |
| formaPagamento | obrigatória | enum('Debito', 'Credito', 'Dinheiro') | Forma na qual o pedido foi pago | |
| chave estrangeira obrigatória | varchar | 50 | E-mail do usuário |
Relacionamento: possui
Descrição: Possessão de status de pedido
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave estrangeira obrigatória | int | 3 | Identificação do status do pedido |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do pedido |
Entidade: StatusPedido
Descrição: Status de um pedido
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave primária obrigatória | int | 3 | Identificação do status do pedido |
| descricao | obrigatória | varchar | 200 | Descrição do status |
Relacionamento: possui
Descrição: Possessão de item no cardápio referente ao pedido
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do item no cardápio |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do pedido |
Entidade: ItemCardapio
Descrição: Representa um item contido no cardápio
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave primária obrigatória | bigint | 16 | Identificação do item no cardápio |
| nome | obrigatória | varchar | 50 | Nome do item |
| valor | obrigatória | float | Preço do item | |
| descricao | obrigatória | varchar | 200 | Descrição do item |
| observação | obrigatória | varchar | 200 | Observação em referência ao item pedido |
Relacionamento: possui
Descrição: Possessão de categoria referente a cardápios
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do item no cardápio |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação da categoria de cardápio |
Entidade: CategoriaCardapio
Descrição: Representa uma categoria que identifica o cardápio
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave primária obrigatória | bigint | 16 | Identificação da categoria de cardápio |
| descricao | obrigatória | varchar | 200 | Descrição da categoria do cardápio |
Relacionamento: possui
Descrição: Possessão de cardápios referente a categorias
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do cardápio em questão |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação da categoria de cardápio |
Entidade: Cardapio
Descrição: Representa um cardápio de determinado restaurante
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| numero | obrigatória | int | Número id do restaurante | |
| descricao | obrigatória | varchar | 200 | Descrição do cardápio e seus itens |
| id | chave primária obrigatória | bigint | 16 | Identificação do cardápio em questão |
Relacionamento: possui
Descrição: Possessão de cardápios referente a estabelecimentos
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| cnpj | chave estrangeira obrigatória | bigint | 20 | CNPJ do estabelecimento |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do cardápio em questão |
Entidade: Estabelecimento
Descrição: Representa um estabelecimento restaurante
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| cnpj | chave primária obrigatória | bigint | 20 | CNPJ do estabelecimento |
| nome | obrigatória | varchar | 50 | Nome do estabelecimento |
| numero | obrigatória | int | Número da loja, em questão de endereço | |
| descricao | obrigatória | varchar | 200 | Descrição do estabelecimento e seus alimentos |
| tempoPreparo | obrigatória | time | Tempo necessário para se preparar um alimento |
Relacionamento: possui
Descrição: Possessão de estabelecimentos em relação a categorias
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| cnpj | chave estrangeira obrigatória | bigint | 20 | CNPJ do estabelecimento |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação da categoria |
Entidade: CategoriaEstabelecimento
Descrição: Representa a categoria de um estabelecimento
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave primária obrigatória | bigint | 16 | Identificação da categoria |
| descricao | obrigatória | varchar | 200 | Descrição da categoria do estabelecimento |
Relacionamento: realiza
Descrição: Realização de pedidos
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| chave estrangeira obrigatória | varchar | 50 | E-mail do Usuário | |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do pedido |
Relacionamento: em
Descrição: Possessão de local de realização de pedidos
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| cnpj | chave estrangeira obrigatória | bigint | 20 | CNPJ do estabelecimento |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do pedido |
Relacionamento: possui
Descrição: Possessão de categoria de itens
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do item no cardápio |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação da categoria do item |
Entidade: CategoriaItem
Descrição: Representa a categoria de um item
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| titulo | obrigatória | varchar | 50 | Título da categoria do item |
| descricao | obrigatória | varchar | 200 | Descrição da categoria do item |
| statusObrigatório | obrigatória | enum('S','N') | ? | |
| id | chave primária obrigatória | bigint | 16 | Identificação da categoria do item |
Relacionamento: tem
Descrição: Possessão de item por categoria
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| id | chave estrangeira obrigatória | bigint | 16 | Identificação da categoria do item |
| id | chave estrangeira obrigatória | bigint | 16 | Identificação do item da categoria |
Entidade: ItemCategoria
Descrição: Representa o item de uma categoria
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| titulo | obrigatória | varchar | 50 | Título do item da categoria |
| descricao | obrigatória | varchar | 200 | Descrição do item da categoria |
| valor | obrigatória | float | Preço do item da categoria | |
| id | chave primária obrigatória | bigint | 16 | Identificação do item da categoria |
Relacionamento: possui
Descrição: Possessão de horários
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| diaSemana | chave estrangeira obrigatória | varchar | 16 | Dias da semana que o estabelecimento funciona |
| cnpj | chave estrangeira obrigatória | bigint | 20 | CNPJ do estabelecimento |
Entidade: HorarioFuncionamento
Descrição: Representa o horário de funcionamento de um estabelecimento
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| diaSemana | chave primária obrigatória | varchar | 16 | Dias da semana que o estabelecimento funciona |
| horaInicial | obrigatória | time | Hora de abertura | |
| horaFinal | obrigatória | time | Hora de fechamento |
Relacionamento: possui
Descrição: Possessão de horários por parte do Shopping
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| diaSemana | chave estrangeira obrigatória | varchar | 16 | Dias da semana que o Shopping funciona |
| cnpj | chave estrangeira obrigatória | bigint | 20 | CNPJ do Shopping |
Entidade: Shopping
Descrição: Representa o shopping que abriga um estabelecimento
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| nome | obrigatória | varchar | 50 | Nome do shopping |
| cnpj | chave primária obrigatória | bigint | 20 | CNPJ do Shopping |
| telefone | chave estrangeira obrigatória | varchar | 30 | Identificação do telefone do shopping |
Entidade: telefone
Descrição: Representa o telefone de um shopping
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| telefone | chave primária obrigatória | varchar | 30 | Identificação do telefone do shopping |
| telefone | obrigatória | varchar | 30 | Identificação do telefone do shopping |
Relacionamento: possui
Descrição: Possessão de endereço por parte do Shopping
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| cnpj | chave estrangeira obrigatória | bigint | 20 | CNPJ do Shopping |
| latitude | chave estrangeira obrigatória | bigint | 16 | Latitude da localização do endereço |
| longitude | chave estrangeira obrigatória | bigint | 16 | Longitude da localização do endereço |
Entidade: Endereço
Descrição: Representa o endereço de um shopping
| Atributo | Propriedades do Atributo | Tipo de dado | Tamanho | Descrição |
|---|---|---|---|---|
| rua | obrigatória | varchar | 20 | Rua do shopping |
| numero | obrigatória | int | Número do shopping | |
| logradouro | obrigatória | varchar | 20 | Logradouro do shopping |
| cidade | obrigatória | varchar | 20 | Cidade onde o shopping se localiza |
| estado | obrigatória | varchar | 20 | Estado onde o shopping se localiza |
| pais | obrigatória | varchar | 20 | Pais onde o shopping se localiza |
| latitude | chave estrangeira obrigatória | bigint | 16 | Latitude da localização do endereço |
| longitude | chave estrangeira obrigatória | bigint | 16 | Longitude da localização do endereço |
| bairro | obrigatória | varchar | 20 | Bairro onde o shopping se localiza |