11. Diagrama Entidade-Relacionamento Visual

O diagrama abaixo ilustra as principais tabelas do banco de dados, suas colunas com respectivos tipos de dados, e os relacionamentos entre elas, fornecendo uma visão clara da estrutura de dados da aplicação. A explicação detalhada de cada tabela e relacionamento segue abaixo.

Diagrama Entidade-Relacionamento do Trace Point

11.1. Detalhamento do Esquema do Banco de Dados

O banco de dados trace_point é projetado para gerenciar usuários, locais, eventos e os relacionamentos entre eles, como quais usuários visitaram quais locais e quais usuários estão inscritos em quais eventos. A seguir, uma descrição de cada tabela baseada no esquema fornecido.

Entidades Principais

Tabela: user (Usuário)

Armazena informações sobre os usuários da plataforma.

Referenciada por: Tabela booking (via user_id), Tabela visited_places (via user_id).

Tabela: place (Local)

Representa os locais físicos cadastrados na aplicação.

Referenciada por: Tabela event (via place_id), Tabela visited_places (via place_id).

Tabela: event (Evento)

Descreve os eventos que ocorrerão e podem ser gerenciados pela plataforma.

Referenciada por: Tabela booking (via event_id).

Tabelas de Relacionamento (Junção)

Tabela: booking (Reserva/Inscrição em Evento)

Implementa o relacionamento Muitos-para-Muitos entre Usuários (user) e Eventos (event).

A combinação de event_id e user_id é a chave primária, garantindo que um usuário só possa se inscrever uma vez em cada evento.

Tabela: visited_places (Locais Visitados)

Implementa o relacionamento Muitos-para-Muitos entre Usuários (user) e Locais (place), e armazena a data da visita.

A combinação de user_id e place_id é assumida como a chave primária para este relacionamento, indicando que um usuário só pode ter um registro de visita para um local específico nesta tabela; a visit_date armazena quando essa única visita registrada ocorreu. Para registrar múltiplas visitas de um mesmo usuário ao mesmo local em datas diferentes, a visit_date precisaria ser incluída na chave primária (formando uma PK composta por user_id, place_id, visit_date) ou a tabela visited_places deveria ter um identificador único próprio (como um campo id do tipo UUID).

Resumo dos Relacionamentos Principais