Modelo Lógico
Introdução
O Modelo lógico é uma representação abstrata de um banco de dados que descreve a estrutura dos dados e as relações entre eles. Ele é independente do banco de dados físico que detalha como os dados serão implementados.
O modelo lógico serve como um modelo para os dados usados e leva os elementos de modelagem de dados conceituais um passo adiante, adicionando mais informações a eles.
O modelo lógico incorpora todos os elementos de informação que são vitais para o funcionamento do dia a dia dos negócios. Um projeto lógico é a implementação do modelo lógico em um banco de dados real.
Ele descreve como os dados serão armazenados e organizados em tabelas, colunas e chaves primárias e estrangeiras. O projeto lógico é baseado no modelo lógico e é usado para criar um banco de dados físico que possa ser usado para armazenar e recuperar dados
Modelo Relacional
O modelo relacional usa uma coleção de tabelas para representar tanto os dados quanto as relações entre esses dados. Cada tabela tem várias colunas, e cada coluna tem um nome exclusivo. As tabelas também são conhecidas como relações.
O modelo relacional é um exemplo de modelo baseado em registro. Os modelos baseados em registro são assim chamados porque o banco de dados é estruturado em registros de vários tipos com formato fixo.
Cada tabela contém registros de um tipo específico. Cada tipo de registro define um número fixo de campos ou atributos. As colunas da tabela correspondem aos atributos do tipo de registro. O modelo de dados relacional é o modelo de dados mais amplamente utilizado, e a grande maioria dos sistemas de banco de dados atuais é baseada no modelo relacional. ¹
Dependências Funcionais
As dependências funcionais são uma parte importante do modelo relacional. Uma dependência funcional é uma relação entre dois atributos de uma tabela, onde um atributo determina o valor de outro. Em outras palavras, se o valor de um atributo A determina o valor de um atributo B, então dizemos que B é funcionalmente dependente de A.
As dependências funcionais são usadas para garantir que os dados em uma tabela sejam consistentes e precisos. Elas também são usadas para ajudar a normalizar as tabelas, o que pode melhorar o desempenho do banco de dados e reduzir a redundância de dados.
Normalização
A normalização é um processo importante na modelagem relacional. Ela é usada para garantir que os dados em uma tabela sejam consistentes e precisos, além de ajudar a reduzir a redundância de dados e melhorar o desempenho do banco de dados.
A normalização é baseada em dependências funcionais, que são relações entre dois atributos de uma tabela, onde um atributo determina o valor de outro. A normalização é dividida em várias formas normais, cada uma com um conjunto de regras que devem ser seguidas para garantir que a tabela esteja normalizada.
As formas normais mais comuns são a primeira forma normal (1NF), a segunda forma normal (2NF) e a terceira forma normal (3NF). Há também as formas normais mais avançadas como a quarta forma normal (4NF) e a forma normal de Boyce-Codd (FNBC). Cada forma normal tem um conjunto de regras que devem ser seguidas para garantir que a tabela esteja normalizada.
Dicionario de Dados
O dicionário de dados é uma ferramenta importante na modelagem de banco de dados relacionais. Ele contém informações detalhadas sobre as tabelas, colunas, tipos de dados, restrições e outras informações relevantes para o banco de dados.
O dicionário de dados é usado para documentar o modelo de dados e garantir que todos os desenvolvedores e usuários do banco de dados tenham uma compreensão clara dos dados armazenados e como eles são organizados. Ele também pode ser usado para ajudar a garantir a integridade dos dados e a consistência do modelo de dados.
Dicionario de Dados
Tabela | Event | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
EventId | Identificador de Evento | Serial | PK | |
EventType | Identidica o tipo do evento | Varchar | 10 | Not Null |
Tabela | ChatEvent | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
EventId | Chave estrangeira para Event e Identificador de Evento |
Int | FK / PK | |
IsUnique | Define se o evento acontece apenas uma vez |
Boolean | Default False | |
AlreadyFired | Marcador para registrar se o evento ja aconteceu |
Boolean | Default False | |
Comand | Representa um linha de comando em SQL que o sgbd vai realizar quando o evento for chamado |
Varchar | 250 | Not Null |
Tabela | InteractEvent | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
EventId | Chave estrangeira para Event e Identificador de Evento |
Int | FK / PK | |
AlreadyFired | Marcador para registrar se o evento ja aconteceu |
Boolean | Default False | |
ConsumesItem | Define se o evento Consume O item utilizado na interação |
Boolean | Default True | |
Comand | Representa um linha de comando em SQL que o sgbd vai realizar quando o evento for chamado |
Varchar | 250 | Not Null |
Tabela | RoomEvent | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
EventId | Chave estrangeira para Event e Identificador de Evento |
Int | FK / PK | |
AlreadyFired | Marcador para registrar se o evento ja aconteceu |
Boolean | Default False | |
Comand | Representa um linha de comando em SQL que o sgbd vai realizar quando o evento for chamado |
Varchar | 250 | Not Null |
Tabela | Phase | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
PhaseId | Identificador unico da fase | Serial | PK | |
PhaseName | Nome da fase | Varchar | 20 | Unique / Not Null |
PhaseDescription | Descrição da fase | Varchar | 250 | Not Null |
Tabela | Region | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
RegionId | Identificador unico da região | Serial | PK | |
RegionName | Nome da região | Varchar | 20 | Unique / Not Null |
RegionDescription | Descrição da região | Varchar | 250 | Not Null |
PhaseId | Chave estrangeira para fase que a região Pertence |
Int | FK / Not Null | |
Requirement | Chave estrangeira para Equipment que representa um item necessario para entrar na regiao |
Int | FK | |
IsVisited | Marcador de região nunca visitada | Boolean | Default FALSE |
Tabela | RegionGeo | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
RegionId | Chave estrangeira para regiao e Identificador unico de RegionGeo |
Int | PK / FK | |
North | Chave estrangeira referenciando o id da região que intentifica a região Norte |
Int | FK | |
South | Chave estrangeira referenciando o id da região que intentifica a região Sul |
Int | FK | |
East | Chave estrangeira referenciando o id da região que intentifica a região Leste |
Int | FK | |
West | Chave estrangeira referenciando o id da região que intentifica a região Oeste |
Int | FK |
Tabela | Structure | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
StrucutureId | Identificador Unico de Estrutura | Serial | PK | |
StrucutureName | Nome da estrutura | Varchar | 20 | Unique / Not Null |
RegionId | Chave estrangeira que informa a região que a estrutura pertence |
Int | FK / Not Null | |
InitialRoom | Chave estrangeira que informa a Sala inicial da estrutura |
Int | FK / Not Null |
Tabela | Room | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
RoomId | Identificador Unico de room | Serial | PK | |
RoomName | Nome da sala | Varchar | 20 | Unique / Not Null |
RoomDescription | Descrição da sala | Varchar | 250 | Not Null |
IsVisited | Marcador de Sala nunca visitada | Boolean | Default FALSE | |
StructureId | Chave estrangeira que informa a Estrutura que a sala pertence |
Int | FK / Not Null | |
BlockedBy | Chave estrangeira que informa se um Objeto bloquear uma sala |
int | FK | |
EventId | Chave estrangeira que informa um Evento que pode ser gerado |
Int | FK |
Tabela | Conection | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
ConectionId | Identificador Unico da conexão | Serial | PK | |
ConectionName | Nome da conexão | Varchar | 20 | Not Null |
Room1Id | Id do quarto que esta conectado | Int | FK | |
Room2Id | Id do outro quarto que esta conectado | Int | FK |
Tabela | Location | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
LocationId | Identificador unico da localização | Serial | PK | |
RegionId | Chave estrangeira que informa a região da localização |
Int | FK / Not Null | |
RoomId | Chave estrangeira que informa a sala da localização caso tenha |
Int | FK |
Tabela | Object | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
ObjectId | Identificador Unico de Objeto |
Serial | PK | |
ObjectName | Nome do Objeto | Varchar | 20 | Not Null |
ObjectDescription | Descrição do Objeto | Varchar | 20 | Not Null |
Locks | Marcador se objeto esta trancando uma sala |
Boolean | Default False | |
DescriptionOnInteract | Descrição do Objeto ao tentar realizar uma interação |
Varchar | 250 | Not Null |
ObjectLocationId | Chave estrangeira para Location caso o objeto esteja no mapa |
Int | FK | |
ActivationItem | Chave estrangeira para Item caso seja necessario um item para sua ativação |
Int | FK | |
EventId | Chave estrangeira para O evento gerado apos a ativação |
Int | FK |
Tabela | Character | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
CharacterId | Identificador unico de personagem | Serial | PK | |
CharacterType | Aponta para o tipo de personagem | varchar | 20 | Not Null |
Tabela | NPC | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
CharacterId | Chave estrangeira para Character e Identificador unico de personagem |
Int | PK / FK | |
NpcName | Nome do NPC | Varchar | 20 | Unique / Not Null |
NpcDescription | Descrição do personagem no mapa | Varchar | 50 | Not Null |
IsWordMachine | Define se o NPC é a "ENTIDADE" | Boolean | Default False | |
IsGod | Define se o NPC é "DEUS" | Boolean | Default False | |
NpcLocationId | Chave estrangeira que informa a localização de um NPC pode ser NULL |
Int | FK | |
EventId | Chave estrangeira para o evento gerado ao interagir com o npc |
Int | FK / Not Null |
Tabela | PC | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
CharacterId | Chave estrangeira para Character e Identificador unico de personagem |
Int | PK / FK | |
PcName | Nome do PC | Varchar | 4 | Default 'NIKO' |
KnowsGod | Marcador que define se Niko conhece DEUS |
Boolean | Default False | |
PcLocationId | Chave estrangeira que informa a localização do PC |
Int | FK |
Tabela | VisitedRegion | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
CharacterId | Id do PC que visitou determinadas regiôes |
Int | PK / FK | |
RegionId | Id da Região que determinado PC Visitou |
Int | PK / FK |
Tabela | Item | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
ItemId | Identificador Unico de Item | Serial | PK | |
ItemType | Identifica o tipo do item | Varchar | 10 | Not Null |
Tabela | ItemMaterial | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
ItemId | Identificador Unico e Chave estrangeira para Item |
Int | PK / FK | |
ItemName | Nome do item | Varchar | 20 | Unique / Not Null |
ItemDescription | Descrição do item fisicamente | Varchar | 50 | Unique / Not Null |
ItemLocationId | Caso o Item esteja no mapa ele possui uma localização |
Int | FK |
Tabela | ItemEquipment | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
ItemId | Identificador Unico e Chave estrangeira para Item |
Int | PK / FK | |
ItemName | Nome do item | Varchar | 20 | Unique / Not Null |
ItemDescription | Descrição do item fisicamente | Varchar | 50 | Unique / Not Null |
ItemLocationId | Caso o Item esteja no mapa ele possui uma localização |
Int | FK |
Tabela | Combination | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
CraftID | Identificador unico da receita | Serial | PK | |
Material1Id | Chave estrangeira para o Material usado no craft |
Int | FK / Not Null | |
Material2Id | Chave estrangeira para o outro Material usado no craft |
Int | FK / Not Null | |
Result1Id | Chave estrangeira para o Resultado primario do craft |
Int | FK / Not Null | |
Result2Id | Chave estrangeira para o possivel resultado secundario do craft |
Int | FK | |
equipmentId | Chave estrangeira para o possivel equipamento necessario no craft |
Int | FK |
Tabela | Inventory | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
CharacterId | Chave estrangeira para o Personagem dono do inventario |
int | PK / FK | |
ItemId | Chave estrangeira para o item no inventario |
int | PK / FK |
Tabela | Dialogue | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
DialogueId | Identificador do Dialogo | Serial | PK | |
Text | Texto do dialogo | Varchar | 250 | Not Null |
CharacterId | Chave estrangeira para Character Para representar o nome de quem esta falando |
int | FK / Not Null | |
NextDialogue | Continuação do dialogo | int | FK | |
HaveChoice | Marcador caso dialogo ramifique | Boolean | Not Null |
Tabela | DialogueChoice | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
DialogueId | Identificador e chave estrangeira para Dialogo | Int | PK, FK | |
ChoiceId | Identificador unico e escolhas de determinado dialogo | Serial | PK | |
NextDialogue | Chave estrangeira para o proximo dialogo apos a escolha |
Int | FK |
Tabela | Command | |||
---|---|---|---|---|
Nome | Descrição | Tipo de Dado | Tamanho | Restrições de Dominio |
FunctionId | Identificador da função | Serial | PK | |
Function | Função que o jogador insere para controlar o jogo |
Varchar | 50 | Not Null |
PcID | Chave estrangeira para o Pc que esta sendo controlado pelos comandos |
Int | FK |
Diagrama do Esquema Relacional
O esquema relacional é a representação do modelo de dados relacional em forma de diagrama, que mostra as tabelas, seus atributos e as relações entre elas.
O esquema relacional é uma ferramenta importante na modelagem de banco de dados, pois ajuda a visualizar a estrutura do banco de dados e a identificar as relações entre as tabelas.
Figura 1 : Diagrama do Esquema Relacional
Clique aqui para ver a imagem em tela cheia.
Ou clique aqui para baixar o arquivo do draw.io.
Histórico de Versão
Data | Versão | Descrição | Autor |
---|---|---|---|
25/11/23 | 1.0 | Criação do documento | João Lucas |
Bilbiografia
AVI SILBERSCHATZ, HENRY F. KORTH, S. SUDARSHAN. Database System Concepts. [s.l: s.n.].