Skip to main content dev:Coelho

Banco De Dados - Aula 01-04

Entendendo o que é um Banco de Dados

Nesta primeira aula teremos a introdução aos bancos de dados e seus objetivos, suas características e utilizações. Vamos relembrar o que são os dados, informações e conhecimento:

[!quote] TOREY et al., 2007 Dado é o componente básico de um arquivo, um elemento com significado no mundo real que compõe um sistema de arquivos. Como exemplo, podemos citar nome, sobrenome, cidade, bairro e outros. Informação é o que vem após a interpretação dos dados, onde é possível associar um significado a eles ou processa-los. Normalmente a informação vem de convenções utilizadas por pessoas no meio de associações aos dados. Conhecimento é todo o discernimento, obtido por meio de critérios, e apreciação aos dados e informações.

[!quote] MACHADO, 2008 Dado é um componente básico para compor arquivo, [como vimos]. Já registro nos dará uma informação completa, pois é formado por uma sequência de dados juntos. Um exemplo de registro é a ficha de cliente de uma loja que deve conter seus dados pessoais tais como: nome, sobrenome, RG, CPF, endereço.

Tendo isso em mente, fica mais fácil entendermos as diversas definições de Bancos de dados:

  • “Um Banco de Dados é um conjunto de arquivos relacionados entre si” (CHU, 1983);
  • “(…) é uma coleção de dados operacionais armazenados, sendo usados pelos sistemas de aplicação de uma determinada organização” (C.J.Date, 1985);
  • “é um objeto mais complexo, é uma coleção de dados armazenados e inter-relacionados, que atende às necessidades de vários usuários dentro de uma ou mais organizações, ou seja, coleções inter-relacionadas de muitos tipos diferentes de tabelas” (TOREY et al., 2007)
  • “É uma coleção de dados relacionados que tem informação sobre algo no mundo real, possuindo coerência lógica entre dados e significado e sempre estará associado a aplicações onde existem usuários com interesse aos dados relacionados” (J. A. O. Marins; G. S. S. Guarienti, 2019)

Com a evolução dos dados e dos bancos de dados, viu-se a necessidade de criar Sistemas Gerenciadores de Bancos de Dados (SGBD). Com a utilização destes, foi possível otimizar e facilitar a manipulação dos dados, possibilitando o uso em aplicações mais complexas:

AplicaçõesDescrição
Bancopara informações de cliente, contas, empréstimos e transações bancárias;
Universidadesinformações dos alunos, notas e cursos;
Linhas Aéreasreservas e informações de horários;
Indústriacontrolar a produção de itens da fábrica, estoques e pedidos;
Vendasinformações de clientes, produtos e compras/vendas;
Bibliotecainformações dos livros, nome dos alunos e solicitações.

Fonte: SILBERSCHATZ, KORF e SUDARSHAN, 2012)

Entendendo os SGBD (Sistemas Gerenciadores de Banco de Dados)

Um SGBD é um software genérico para manipular um Banco de Dados, permitindo definição, construção e manejo para diversas aplicações. Comumente possuem uma visão lógica, uma linguagem de definição de dados, uma linguagem de manipulação dos dados e alguns utilitários. O uso de um SGBD garante algumas vantagens como:

  • Controle centralizado dos dados: os dados ficam em um único local, facilitando o acesso e o controle;
  • Controle da redundância: estando centralizados, existe a otimização e redução do espaço, evitando a redundância dos dados;
  • Compartilhamento de dados;
  • Independência dos dados: os dados são independentes para cada registro dentro do banco;
  • Conversão e reorganização: são mais fáceis de converter ou reorganizar, se necessário.

Complexidade e Segurança

Aplicações de bancos de dados, para se tornarem seguras e eficientes, tornam-se complexas. Assim, os DBA (DataBase Administrator - Administrador de Banco de Dados) deve garantir a:

  • Segurança do Banco de Dados, garantindo não somente a segurança ao banco, mas a cada dado, não permitindo que usuários sem acesso adequado utilizem o banco;
  • Recuperação, utilizando técnicas de backup adequadas às necessidades do banco, evitando falhas na transmissão e acesso aos dados;
  • Disponibilidade dos dados;
  • Assistência ou suporte à equipe que desenvolve a aplicação, para que haja um bom relacionamento entre um e outro;
  • Implementação do Banco de Dados.

Para que o DBA realize tudo isso, há uma técnica de abstração de dados, possibilitando ocultar certos detalhes de como estes dados estão armazenados. São três níveis de abstração:

Nível Físico (ou Interno)

Descreve como os dados são armazenados - nível mais baixo de abstração.

Nível Lógico (ou Conceitual)

Nível acima do físico, descreve quais dados estão armazenados no DB e suas relações.

Nível de visualização (View ― ou Externo)

Nível que é visto pelo usuário, facilitando a utilização do sistema fornecendo diversas visualizações para o mesmo DB.

Linguagens de Manipulação de Dados

Quando um SGBD não tem nenhuma separação estrita dos níveis de abstração, o DBA juntamente dos projetistas do banco utilizam da linguagem DDL (Data Definition Language ― Linguagem de Definição de Dados) para definir os esquemas. Nestes casos, o SGBD tem um compilador da DDL cuja função é processar as instruções e construtores do esquema e armazenar num catálogo próprio.

Nos SGBDs que já possuem uma clara separação dos níveis, a linguagem utilizada pelo DBA e projetistas é apenas para especificar o esquema conceitual. Utiliza-se, neste caso, a SDL (Storage Definition Language ― Linguagem de Definição de Armazenamento). Não existe, em si, uma linguagem específica de SDL, mas os SGBDs interpretam um esquema interno especificado por uma combinação de funções, parâmetros e especificações relacionadas ao armazenamento.

Há também a possibilidade, em alguns SGBDs, de realizar uma verdadeira arquitetura de três abstrações. Assim, utiliza-se uma terceira linguagem VDL (View Definition Language ― Linguagem de Definição de Visão/Visualização) para especificar as visões do usuário e seus mapeamentos no esquema conceitual

[!info] ELMASRI e NAVATHE - Sistemas de Banco de Dados, 2011 Na maioria dos SGBDs a DDL é usada para definir o nível conceitual E o nível externo

Quando os esquemas são compilados, as manipulações dos dados ― seja inserção, edição ou exclusão dos dados ― é realizada pela DML (Data Manipulation Language ― Linguagem de Manipulação de Dados).

O SQL

SQL é uma linguagem de banco de dados abrangente, possuindo instruções para definições dos dados, consulta e atualizações dos mesmos. Por isso, o SQL é uma linguagem DDL e DML ao mesmo tempo, possuindo facilidades para definir visões (ou seja, atingingdo um pouco de VDL), segurança e autorização, restrições e controles.

Seu nome, hoje, é expandido como Structured Query Language (Linguagem de Consulta Estruturada), mas, originalmente, era chamada de SEQUEL (==S==tructured ==E==nglish ==QUE==ry ==L==anguage), por isso muitos ainda a chamam desta maneira.

Notas de aula

Existem - no mercado - três tipos de bancos de dados: Relacionais, Não-Relacionais e Relacionais Dimensionados. Estes últimos são bancos emergentes e ligados à análise de dados e Power BI.

Em Banco de Dados temos, normalmente, quatro funções macros que sempre são utilizadas: Inserir, Alterar, Deletar e Selecionar/Procurar.

O Banco de Dados Relacional, que estudaremos com afinco nesta matéria, é formado por diversas tabelas relacionadas entre si ― e daí o nome ―, que são acessados através da aplicação via código, triggers(gatilhos/disparos) ou procedures(procedimentos).

[!note] Vantagens de trazer a regra de negócio para dentro do banco: No caso de inserirmos as implementações do banco de dados diretamente no código da aplicação, é contraprodutivo, pois sobrecarrega a performance da aplicação, além de possível perda de dados ou falta de segurança. Já com os triggers e procedures, você traz estas implementações do banco diretamente dentro do banco de dados, que estes gatilhos ou procedimentos são acessados pela aplicação. Isto a torna mais futureproof (deixa a aplicação à prova do futuro) ― exemplo: no caso de ter a necessidade de trocar de linguagem de programação, é possível trocar de linguagem sem dor de cabeça com a ligação do banco de dados.

Além disso, você garante uma performance melhor da aplicação, tornando-a somente uma interface para o usuário, onde todo o processo será executado pelo banco (ou pelo SGBD). Não somente, melhora na segurança e evita a perda de dados.

Aula 2 - Modelo relacional

Entidade, atributos e chaves. 19:43:33

Entidade

As entidades, no MER (Modelo Entidade Relacionamento), representam um objeto do mundo real que possuem uma existência independente, como pessoas, empresa, carro, casa, e outros. Existem alguns tipos de entidades:

  • Entidades Fortes
    • Não dependem de outras entidades para existirem;
  • Entidades Fracas
    • Dependem de outras entidades para existirem.
Atributos

São propriedades descritivas das entidades, como por exemplo: a entidade pessoa pode ter como atributo o nome, data de nascimento, endereço e outros. Assim como as entidades, existem alguns tipos de atributos:

  • Atributos Simples
    • Atributos que não podem ser divididos em partes menores para formar outros atributos, são atômicos. Exemplo: CPF
  • Atributo Composto
    • Podem ser divididos em partes menores, como o nome completo de uma pessoa, que pode conter um ou mais sobrenomes.
  • Atributo Multivalorado
    • São atributos que podem conter vários valores associados, como o telefone da pessoa, que pode ter o de casa, um ou mais números de telefone celular, telefone de recados…
  • Atributo Derivado
    • Dependem de outro atributo ― ou da própria entidade ― para existir. Assim, a partir da data de nascimento, podemos calcular a idade de uma pessoa, sendo o atributo idade um atributo derivado.
  • Atributo Chave
    • Usualmente um código ou identificador, uma forma única de uma entidade, tornando o valor deste campo/atributo, algo único.
Relacionamentos

As entidades relacionam entre si, criando uma associação que pode também conter seus próprios atributos, chamada de relacionamento. Cada relacionamento trás consigo uma cardinalidade e normalmente atua como o verbo da oração, relacionando uma entidade a outra, exemplo: "aluno frequenta uma disciplina".

  • Cardinalidade
    • Relacionamento 1:1
      • Uma entidade X se associa somente a uma única ocorrência da entidade Y
      • Um curso possui um coordenador
    • Relacionamento 1:N / N:1
      • Uma entidade X se associa a várias ocorrências da entidade Y, no entanto o vice-versa não acontece, onde a entidade Y se associa somente a uma da entidade X.
      • Um curso possui várias disciplinas / várias disciplinas pertencem a um curso.
    • Relacionamento N:N
      • Diversas ocorrências da entidade X dialogam com diversas ocorrências da entidade Y.
      • Vários alunos frequentam várias disciplinas
Banco de Dados - Aula 05-09