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ções | Descrição |
---|---|
Banco | para informações de cliente, contas, empréstimos e transações bancárias; |
Universidades | informações dos alunos, notas e cursos; |
Linhas Aéreas | reservas e informações de horários; |
Indústria | controlar a produção de itens da fábrica, estoques e pedidos; |
Vendas | informações de clientes, produtos e compras/vendas; |
Biblioteca | informaçõ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
- Atributos que não podem ser divididos em partes menores para formar outros atributos, são atômicos. Exemplo:
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.
- 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
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