Avançar para o conteúdo
Read this post in: de_DEen_USes_ESfr_FRid_IDjapl_PLpt_PTru_RUvizh_TW
Home » Data Modeling / Database » Projetando um Sistema de Biblioteca: Do Diagrama Entidade-Relacionamento à Normalização ao Esquema de Banco de Dados

Projetando um Sistema de Biblioteca: Do Diagrama Entidade-Relacionamento à Normalização ao Esquema de Banco de Dados

Introdução

Projetar um sistema de banco de dados robusto e eficiente é um passo fundamental no desenvolvimento de um sistema de gestão de biblioteca. Esse processo envolve várias etapas, começando pelo design do Diagrama Entidade-Relacionamento (ERD), seguido pela normalização e, finalmente, pela criação do esquema de banco de dados. Neste artigo, percorreremos cada uma dessas etapas, demonstrando como transformar um conceito em um banco de dados para sistema de biblioteca bem estruturado e otimizado.

Processo de Modelagem de Dados a partir do ERD, Normalização e Esquema de Banco de Dados

  1. Diagrama Entidade-Relacionamento (ERD)

O primeiro passo no projeto de um banco de dados para um sistema de biblioteca é criar um Diagrama Entidade-Relacionamento (ERD). Um ERD é uma representação visual das entidades de dados e de suas relações dentro do sistema. Aqui estão alguns componentes principais a considerar:

a. Entidades: Identifique as entidades principais no seu sistema de biblioteca. Elas podem incluir livros, autores, usuários, funcionários e transações.

b. Atributos: Para cada entidade, defina os atributos ou propriedades. Por exemplo, uma entidade “Livro” pode ter atributos como ISBN, título, autor, data de publicação, entre outros.

c. Relações: Determine as relações entre entidades. Por exemplo, uma entidade “Usuário” pode ter uma relação “Emprestar” com uma entidade “Livro” para representar o empréstimo de livros.

d. Cardinalidade: Especifique a cardinalidade das relações, indicando quantas instâncias de uma entidade estão associadas a outra. Por exemplo, um usuário pode emprestar múltiplos livros, mas cada livro pode ser emprestado por apenas um usuário por vez.

  1. Normalização

A normalização é o processo de organizar os dados em um banco de dados para eliminar redundâncias e melhorar a integridade dos dados. O objetivo é minimizar a duplicação de dados e garantir que cada peça de informação seja armazenada no local mais apropriado. Aqui estão os passos envolvidos na normalização de um banco de dados para sistema de biblioteca:

a. Identificar Dependências Funcionais: Analise os atributos nas suas entidades e determine quais atributos dependem de outros. Por exemplo, na entidade “Livro”, o nome do autor depende do ISBN do livro.

b. Aplicar as Regras de Normalização: Use as regras de normalização (por exemplo, Primeira Forma Normal, Segunda Forma Normal, Terceira Forma Normal) para dividir entidades complexas em entidades mais simples e criar tabelas separadas para informações relacionadas.

c. Criar Relações: Estabeleça relações entre as tabelas normalizadas usando chaves primárias e chaves estrangeiras para manter a integridade dos dados.

d. Eliminar Redundância: Certifique-se de que cada peça de dados seja armazenada em apenas um local. Por exemplo, as informações do autor devem ser armazenadas em uma tabela separada chamada “Autor”, em vez de serem duplicadas em cada entrada de livro.

  1. Esquema de Banco de Dados

Uma vez que o seu banco de dados esteja totalmente normalizado, você pode prosseguir para criar o esquema do banco de dados. O esquema define a estrutura do banco de dados, incluindo tabelas, colunas, tipos de dados e restrições. Aqui estão os passos para criar um esquema de banco de dados para um sistema de biblioteca:

a. Definir Tabelas: Crie tabelas com base nas entidades que você identificou no ERD e nos dados normalizados. Cada tabela deve representar uma entidade específica (por exemplo, “Livros”, “Autores”, “Usuários”).

b. Definir Colunas: Especifique as colunas para cada tabela, representando os atributos identificados no ERD. Certifique-se de que os tipos de dados e restrições (por exemplo, chaves primárias, chaves estrangeiras, restrições únicas) sejam definidos corretamente.

c. Estabelecer Relações: Use chaves estrangeiras para estabelecer relações entre tabelas, ligando dados relacionados. Por exemplo, a tabela “Livros” pode ter uma chave estrangeira que referencia a tabela “Autores”.

d. Indexação: Implemente indexação em colunas frequentemente usadas para busca, a fim de melhorar o desempenho das consultas.

Estudo de Caso: Sistema de Biblioteca

Diagrama de Relacionamento de Entidades

Definimos quatro tabelas: Autores, Livros, Usuários e Transações. Aqui está o que cada tabela representa:

  1. Autores: Contém informações sobre os autores dos livros. Possui um AuthorID como chave primária e um atributo Nome.
  2. Livros: Representa os detalhes do livro. Inclui ISBN (Chave Primária), Título, Data de Publicação e um AuthorID como chave estrangeira, referenciando a tabela Autores para estabelecer uma relação entre livros e autores.
  3. Usuários: Armazena informações sobre os usuários da biblioteca. Possui um PatronID como chave primária e um atributo Nome.
  4. Transações: Esta tabela registra as transações quando os usuários emprestam livros. Inclui um TransactionID (Chave Primária), BookID (chave estrangeira que referencia Livros), PatronID (chave estrangeira que referencia Usuários) e DueDate.

As relações entre essas tabelas são representadas da seguinte forma:

  • Autores e livros estão ligados por uma relação um-para-muitos, indicando que um autor pode escrever vários livros.
  • Livros e transações estão ligados, representando o fato de que cada livro pode fazer parte de múltiplas transações, mas cada transação corresponde a um único livro.
  • Leitores e transações estão conectados, indicando que cada leitor pode ter múltiplas transações, mas cada transação pertence a um único leitor.

Processo de Normalização

Vamos percorrer o processo de normalização para o banco de dados do nosso sistema de biblioteca usando tabelas. Vamos começar com um conjunto inicial de tabelas e normalizá-las progressivamente pela Primeira Forma Normal (1FN), Segunda Forma Normal (2FN) e Terceira Forma Normal (3FN).

Tabelas Iniciais:

  1. Livros
    • ISBN (PK)
    • Título
    • Data de Publicação
    • AuthorID (FK)
  2. Autores
    • AuthorID (PK)
    • Nome
  3. Leitores
    • PatronID (PK)
    • Nome
  4. Transações
    • TransactionID (PK)
    • BookID (FK)
    • PatronID (FK)
    • Data de Vencimento

Primeira Forma Normal (1FN):

Na Primeira Forma Normal, cada tabela deve ter uma chave primária, e não deve haver grupos repetidos ou arrays em nenhuma coluna. Nossas tabelas iniciais já satisfazem a 1FN porque possuem chaves primárias e cada célula contém um único valor.

Segunda Forma Normal (2FN):

Para alcançar a 2FN, precisamos garantir que os atributos não-chave dependam da chave primária inteira. Nas nossas tabelas iniciais, a tabela Livros possui dependência parcial, pois Título e Data de Publicação dependem apenas do ISBN, e não da chave primária inteira. Vamos dividir a tabela Livros em duas tabelas:

Livros (2FN):

  • ISBN (PK)
  • AuthorID (FK)

Detalhes do Livro (2FN):

  • ISBN (FK)
  • Título
  • Data de Publicação

Agora, cada tabela tem atributos que dependem da chave primária inteira.

Terceira Forma Normal (3FN):

Na 3FN, eliminamos as dependências transitivas. A tabela de Patrões não possui dependências transitivas, mas a tabela de Transações possui uma dependência transitiva sobre Livros através do BookID. Para remover essa dependência, criaremos uma nova tabela para transações:

Transações (3FN):

  • ID da Transação (PK)
  • ID do Patrão (FK)
  • Data de Vencimento

Livros Emprestados (3FN):

  • ID da Transação (FK)
  • ID do Livro (FK)

Agora, a tabela de Transações depende apenas do ID do Patrão, e a tabela de Livros Emprestados gerencia a relação entre transações e livros.

Nossas tabelas normalizadas na 3FN são as seguintes:

Livros (3FN):

  • ISBN (PK)
  • ID do Autor (FK)

Detalhes do Livro (3FN):

  • ISBN (FK)
  • Título
  • Data de Publicação

Autores (3FN):

  • ID do Autor (PK)
  • Nome

Patrões (3FN):

  • ID do Patrão (PK)
  • Nome

Transações (3FN):

  • ID da Transação (PK)
  • PatronID (FK)
  • DataDeVencimento

LivrosEmprestados (3FN):

  • TransactionID (FK)
  • BookID (FK)

Ao seguir o processo de normalização até a 3FN, melhoramos a integridade dos dados, reduzimos a redundância e eliminamos dependências indesejadas, resultando em um banco de dados bem estruturado e normalizado para o sistema de biblioteca.

Esquema do Banco de Dados

— Tabela para Autores
CREATE TABLE Autores (
AuthorID INT PRIMARY KEY,
Nome VARCHAR(255)
);

— Tabela para Livros
CREATE TABLE Livros (
ISBN VARCHAR(13) PRIMARY KEY,
AuthorID INT,
FOREIGN KEY (AuthorID) REFERENCES Autores(AuthorID)
);

— Tabela para Detalhes do Livro
CREATE TABLE DetalhesDoLivro (
ISBN VARCHAR(13),
Título VARCHAR(255),
DataDePublicação DATE,
FOREIGN KEY (ISBN) REFERENCES Livros(ISBN)
);

— Tabela para Leitores
CREATE TABLE Leitores (
PatronID INT PRIMARY KEY,
Nome VARCHAR(255)
);

— Tabela para Transações
CREATE TABLE Transações (
IDTransação INT PRIMARY KEY,
IDLeitor INT,
DataDeVencimento DATE,
CHAVE ESTRANGEIRA (IDLeitor) REFERENCIA Leitores(IDLeitor)
);

— Tabela para LivrosEmprestados (para representar a relação muitos-para-muitos entre Transações e Livros)
CREATE TABLE LivrosEmprestados (
IDTransação INT,
ISBN VARCHAR(13),
CHAVE ESTRANGEIRA (IDTransação) REFERENCIA Transações(IDTransação),
CHAVE ESTRANGEIRA (ISBN) REFERENCIA Livros(ISBN)
);

Conclusão

Projetar um banco de dados para um sistema de gestão de biblioteca é uma tarefa complexa, mas essencial. Ao começar com um diagrama ERD, normalizar os dados e, em seguida, criar um esquema de banco de dados bem estruturado, você pode garantir a integridade dos dados, reduzir a redundância e otimizar o desempenho do banco de dados. Essa abordagem estruturada estabelece a base para um sistema de biblioteca confiável e eficiente que pode gerenciar de forma eficaz livros, autores, leitores e transações.

Deixe um comentário