Escolar Documentos
Profissional Documentos
Cultura Documentos
A DDL permite a especificação do esquema da organização, ou seja, entidades com seus atributos e
tipos de dados associados, os relacionamentos entre essas entidades e os índices de acesso
associados aos atributos. Por esquema, entende-se uma organização lógica dos dados de uma
realidade, adequados ao modelo de dados do SGBD.
Segurança
Para tanto, o SGBD deve disponibilizar uma linguagem para especificação de restrições de
integridade, chamada de DCL (Data Constraint Language), e por meio dessa linguagem é possível
programar testes e ações.
Por dado, entende-se alguma porção do banco de dados, como um ou mais registros, um arquivo
completo ou vários, alguns campos de um registro etc. O mecanismo de visões permite especificar a
porção do banco de dados a que um agente tem direito.
Os arquivos históricos (log) devem registrar, entre outras coisas, a identificação das transações, os
arquivos manipulados, os registros atualizados, a operação feita e os valores atual e antigo. No caso
de falhas de transação ou de sistema, o arquivo histórico (log) deve ser consultado e as ações
realizadas por transações inacabadas devem ser desfeitas. Caso todas as modificações da transação
estejam registradas, é possível refazê-la.
Já para falhas de meio de armazenamento, que tornam inoperantes as unidades de disco onde se
encontra o banco de dados, deve-se restaurar o banco de dados a partir do último backup realizado
e consultar o log para refazer ou desfazer as transações cadastradas após esse backup.
Nível Físico
Nível mesmo abstrato, em que se sabem detalhes físicos da organização de um dado, ou seja, o
esquema físico. É uma estruturação de baixo nível, em que é descrito como os dados estão
armazenados em termos de bytes.
O módulo de gerenciamento de arquivos lida com esse nível de visão dos dados, uma vez que
localiza, lê e grava registros.
Nível Conceitual
Nível intermediário, que suporta uma descrição de mais alto nível em relação ao nível físico, em que
a preocupação está em descrever quais dados são significativos para uma organização, isto é, têm
semântica, são relevantes para o dia a dia da organização. Nesse caso, trabalha-se com os dados em
nível de entidades e relacionamentos, tais quais estão definidos no esquema.
Nível de visão
Nível mais alto de abstração, sendo particular de cada aplicação que manipula dados do banco de
dados. Nesse caso, cada aplicação pode determinar o universo de dados a que deseja ter acesso.
Esse universo de dados pode ser uma porção do esquema global da organização. Assim sendo, cada
aplicação abstrai detalhes irrelevantes, desnecessários para seu processamento. Os usuários desse
nível são os programas de aplicação.
Tipos de dados
No SQL Server, cada coluna, variável local, expressão e parâmetro têm um tipo de dados
relacionados. Os tipos de dados são atributos que especificam o tipo de dados que o objeto pode
manter: dados inteiros, dados de caracteres, dados monetários, data e hora, cadeias de caracteres
binárias etc.
A seleção de tipos de dados costuma ser determinada pela natureza dos dados e pela utilização
pretendida Por exemplo:
Entre outros
A maioria dos programadores utiliza uma linha por definição de coluna (atributo).
Especificação UNIQUE.
Restrição DEFAULT
Restrição CHECK
PROGRAMADOR
É o profissional que desenvolve aplicações utilizando ferramentas compatíveis com o SGBD. Essas
ferramentas podem ser compiladores de linguagens de programação tradicionais que permitem a
integração de comandos da linguagem da DML no seu código, programas que usam alguma
linguagem de programação (C#, PHP, VB.NET, DELPHI, JAVA etc.), programação de sistemas e
aplicativos de manipulação de dados, geradores de interfaces gráficas, geradores de relatórios etc.
UNIDADE II
Relacionamentos binários:
Representam uma associação entre duas entidades, representada por um losango nomeado com
linhas para as duas entidades envolvidas. Um relacionamento indica uma função cumprida pelas
duas entidades envolvidas. Sugere-se que esse nome seja um substantivo no plural, uma vez que o
uso de verbos limita mais a criatividade para a determinação de nomes.
Relacionamento deve definir também a cardinalidade dessa associação, por meio de dois pares de
valores, no qual o valor da esquerda indica o número mínimo esperado de ocorrências de uma
entidade que se relaciona com a entidade questionada, e o valor da direita o número máximo.
Relacionamentos reflexivos:
É um tipo de associação que envolve ocorrências de uma mesma entidade (parte e chega da mesma
entidade). Nesse caso, recomenda-se a indicação explícita do papel assumido por cada lado da
associação, para tornar mais clara a interpretação do relacionamento. Por exemplo, em uma relação
de chefia entre um empregado e outro, é interessante a indicação dos papéis de superior e
subordinado.
Alguns controles de integridade, não expressos no diagrama E-R, podem ser necessários, como a
proibição de um empregado ser chefiado por ele mesmo (valores iguais no relacionamento) ou uma
hierarquia de gerência com ciclos. É interessante que esses controles, se desejados, sejam
explicitamente comentados como um anexo ao diagrama E-R.
Relacionamentos ternários:
Relacionam três ocorrências de entidades. Só é interessante utilizar esse tipo de relacionamento
quando realmente é obrigatório associar, ao mesmo tempo, um par de entidades com uma terceira.
Por exemplo, um empregado que trabalha num projeto necessariamente realiza alguma tarefa nesse
trabalho.
Atributo opcional – Atributos com propriedades que podem assumir NULL. São indicados por um
traço que corta a linha que liga o atributo à entidade ou relacionamento.
Atributo composto – Representa uma abstração de outros atributos, como um endereço que abstrai
(agrega) outros dados como rua, CEP, cidade etc. É representado por uma elipse, com ligações
(linhas) para os atributos componentes (convencionais).
Atributo multivalorado – Atributos com propriedades que podem assumir mais de um valor, como
os números de telefone de um departamento. São representados por uma cardinalidade mínima e
máxima que é colocada ao lado do nome do atributo, indicando as quantidades de valores mínimos
e máximos permitidos. Exemplo: Telefone. Uma pessoa poderá ter mais de um número de telefone.
Entidades fracas:
Entidades cujas existências dependem da existência de outra entidade, dita fork. É representada por
um retângulo duplo, podendo, opcionalmente, ser indicada uma seta que parte dela e chega à sua
entidade forte, para tornar mais clara a dependência. A cardinalidade de uma ocorrência de uma
entidade fraca com a forte é sempre (1,1), indicando que ela sempre depende de uma ocorrência da
entidade forte.
domínio: define o universo de valores permitidos para certo item de dado. Por exemplo, o
domínio para o item de dado salário pode ser o conjunto dos números reais; o domínio do item de
dado idade pode ser o conjunto dos números inteiros no intervalo [0,150]; o domínio do item sexo
pode ser o conjunto limitado (masculino, feminino).
Em uma tabela, representa uma coluna. Um atributo pode apresentar um valor condizente com o
domínio associado a ele ou NULL, que indica a ausência de valor ou valor desconhecido. Um atributo
pode conter apenas um valor atômico, ou seja, um valor indivisível.
TUPLA: É um conjunto de pares (atributo – valor) que define uma linha da tabela, ou seja, uma
ocorrência de uma entidade ou relacionamento. Se imaginarmos uma tabela como um conjunto,
uma tupla seria um elemento desse conjunto.
Relação: Pode ser definida como um subconjunto do produto cartesiano dos domínios (d1, d2,
d3,..., dn) que correspondem aos atributos (a1, a2, a3,..., an) de uma tabela. O produto cartesiano
gera (d1 x d2 x d3 x...x dn) tuplas e a relação mantém apenas aquelas tuplas que contêm valores de
atributos relacionados que estão presentes na realidade. Uma relação, portanto, é um subconjunto.
É vista como uma tabela no modelo relacional, composta de um cabeçalho e um corpo.
O cabeçalho é formado por um conjunto fixo de atributos que possuem nomes distintos, para
evitar ambiguidade na localização de um item de dado. O grau de uma relação significa seu número
de atributos.
Chave primária (PK) – primary key: atributo ou grupo de atributos que permite a identificação única
de uma tupla em uma relação, ou seja, o valor da PK (primary key) de uma tupla nunca se repetirá
nas demais tuplas da mesma relação.
Uma PK é escolhida entre várias chaves candidatas, que podem estar presentes na relação. As
chaves candidatas não selecionadas são ditas chaves alternativas. A cada chave alternativa deve ser
associada uma Relação de Integridade (RI) que garanta que seus valores sejam únicos.
Chave estrangeira (FK) – foreign key: Atributo ou grupo de atributos de uma relação R1 que
estabelece um relacionamento de equivalência, por valor, com uma PK (primary key) de uma relação
R2.
O domínio da FK (foreign key) de R1 deve ser compatível com o domínio da PK (primary key) de
R2. Nada impede que R1 e R2 sejam a mesma relação.
2- Cascata, para o caso de exclusões de tuplas ou alterações de chave primária na relação referida,
realizar a mesma operação em todas as tuplas que se referem a ela.
3- Anulação, para o caso de exclusões de tuplas ou alterações de chave primária na relação referida,
altera-se para NULL o(s) atributo(s) que compõe(m) a chave estrangeira que estabelece o
relacionamento com essa relação. Uma variante dessa alternativa é anular apenas a chave
estrangeira de uma única tupla.
UNIDADE III
Linguagem SQL
Linguagem T-SQL ou Transact-SQL utilizada no SGBD MS SQL Server é composta por:
DCL (Data Control Language): permite o controle de autorização (acesso) dos dados.
Linguagem de Definição de Dados (DDL – Data Definition Language): esse subconjunto da SQL
suporta criação, exclusão e modificação das definições das tabelas e das visões. As restrições de
integridade podem ser definidas nas tabelas, tanto quando a tabela é criada como posteriormente.
Fornece ainda a dinâmica para criação e exclusão de índices. Os comandos SQL desse subconjunto
são:
Exemplo (criar uma tabela): CREATE TABLE CLIENTE (ID INT PRIMARY KEY, NOME VARCHAR(50));
Comandos de DDL;
Exemplo (adicionar uma coluna em uma tabela existente): ALTER TABLE CLIENTE ADD SEXO CHAR(1);
Exemplos de sintaxe:
Backup
O backup é considerado uma das atividades mais importantes e críticas de administração de banco
de dados. Consiste em fazer uma cópia de segurança (dump) dos dados e da estrutura do banco de
dados, além das operações realizadas na linha do tempo, entre uma cópia e outra. O backup em
tempo de execução é uma característica sempre disponível em todos os tipos de SGBD, porém
temos aplicações que invariavelmente são comprometidas por falhas de hardware e outras cujo
mesmo tipo de falha não causa perda alguma de dados ou de integridade.
Novamente, cada SGBD tem essa característica melhor ou pior implementada, cabendo ao
administrador de banco de dados escolher aquele que lhe oferecer mais segurança. Normalmente,
as falhas podem ser de dois tipos: soft crash e hard crash. A primeira são falhas do sistema (por
exemplo, queda de energia) que afetam todas as transações em curso no momento, mas não
danificam fisicamente o banco de dados. A segunda são falhas da mídia (por exemplo, queda da
cabeça de gravação sobre o disco) que causam danos ao banco de dados ou a uma parte dele e
afetam pelo menos todas as transações que, no momento, estão usando essa parte.
Recuperação e concorrência:
Os problemas de recuperação e concorrência de dados estão ligados ao processamento de
transação. O sistema não deve permitir que transações sejam executadas em parte (ou seja, o
programa pode terminar de forma anormal durante as atualizações), pois isso levaria o banco a um
estado inconsistente. Por isso, sistemas que suportam o processamento de transação têm uma
melhor forma de segurança.
Atomicidade: ter a certeza de que uma transação foi totalmente executada ou totalmente
cancelada. Nunca uma execução pode ficar pela metade.
Consistência: não permanecer com estágio intermediário, deve ir de um estágio consistente a outro.
Isolamento: uma transação, quando executada, tem que ser executada independentemente de
outra. Não importa se elas estejam sendo processadas separadas ou de forma concorrente, o
resultado terá que ser o mesmo. Existe um sistema gerenciador de transação que permite isso.
Durabilidade: garantir que todas as transações não realizadas permaneçam no banco e sejam
realizadas assim que o computador for reinicializado. Se, por algum problema, o computador
desligar e o disco não for danificado, a durabilidade tem que estar funcionando.
Pontos de sincronização:
O ponto de sincronização representa a ligação entre duas transações consecutivas, mostrando onde
o banco de dados está (ou deveria estar) em estado de consistência. As únicas operações que
apresentam esse ponto são COMMIT e ROLLBACK.
COMMIT: garante que a transação foi finalizada com êxito. O banco de dados (depois do término da
transação) encontra-se em estado de consistência, e todas as suas atualizações são permanentes.
ROLLBACK: assinala que a transação foi malsucedida. O sistema informa que algo saiu errado e que
todas as atualizações devem ser refeitas, ou seja, elimina vestígios do que foi feito.
Todas as transações são acumuladas em um buffer, que, de tempo em tempo, atualiza o banco; caso
ocorra uma queda de energia, as operações efetuadas até então são perdidas. Assim, para melhor
segurança, é necessário que esteja presente sempre um arquivo de log. A finalidade desse arquivo é
registrar cronologicamente todas as transações realizadas, assim, quando houver uma falha, é
possível fazer recuperação.
O log, por sua vez, não pode ficar no buffer, já que, assim que é desligado o computador, tudo o que
está na memória é perdido.
O sistema deve ser preparado para se recuperar não só das falhas locais (danos causados apenas na
área em que estas ocorreram), mas também das falhas globais (danos em diversas áreas, havendo
implicações expressivas no sistema).
Falhas do sistema
Ainda há as transações que foram realizadas com sucesso, mas que não tiveram tempo de serem
transferidas da memória intermediária do banco de dados para o banco de dados físico.
Uma maneira de se controlar é utilizando um método conhecido como check point (ponto de
controle), de tempo em tempo o sistema faz as anotações cronológicas. Tem como objetivo:
Concorrência:
Em um sistema em que existe a possibilidade de se ter inúmeras transações ocorrendo ao mesmo
tempo, há a necessidade de um mecanismo de controle de concorrência, que assegure que uma
transação não interfira em outra. Alguns problemas que podem surgir com a ausência desse
mecanismo são: perda de atualização, dependência de uma transação não confirmada, análise
inconsistente. Para evitar tamanho transtorno, é utilizado um mecanismo chamado bloqueio (lock),
que permite segurança e consistência no banco de dados.
O problema da dependência de uma transação não confirmada é que isso pode retornar para o
usuário informações erradas, comprometendo muito a utilização do banco.
Suponha que ocorra a seguinte situação: uma transação A faz um update, logo em seguida, uma
transação B faz uma leitura no mesmo dado. Se, por algum motivo, houver um rollback na transação
A, a transação B terá visto um dado que não mais existe, ou seja, o rollback desfez tudo da transação
A, e a transação B fica desatualizada, oferecendo ao usuário informações inconsistentes.
Bloqueio (Lock)
Havendo duas transações, com ambas precisando do mesmo dado, elas deverão ser executadas uma
após a outra; isso é possível quando se utiliza a técnica do bloqueio.
Bloqueio compartilhado: pode haver inúmeras pessoas utilizando o mesmo dado. Quando uma
transação B solicita um dado que está sendo utilizado pela transação A, B fica em estado de espera
até que A libere o bloqueio.
Bloqueio exclusivo: ninguém mais tem acesso àquele dado. Todas as operações de banco de dados
geram bloqueios, até mesma a leitura.
Cluster é o nome dado a um conjunto de computadores ligados em rede que funcionam como um
único computador, compartilhando recursos de memória, armazenamento e processamento.
Essa técnica faz parte do plano de contingência e alta disponibilidade, pois você pode desenvolver o
seu projeto de banco de dados distribuídos.
Cluster
Cluster de alto desempenho: Também conhecido como cluster de alta performance, ele funciona
permitindo que ocorra uma grande carga de processamento com um volume alto de gigaflops em
computadores comuns.
Cluster de alta disponibilidade: São clusters cujos sistemas conseguem permanecer ativos por um
longo período de tempo e em plena condição de uso. Pode-se dizer que eles nunca param seu
funcionamento e, além disso, conseguem detectar erros, protegendo-se de possíveis falhas.
Cluster para balanceamento de carga: Esse tipo de cluster tem como função controlar a distribuição
equilibrada do processamento. Requer um monitoramento constante na sua comunicação e em seus
mecanismos de redundância, pois se ocorrer alguma falha, haverá uma interrupção no seu
funcionamento.
Replicação
Replicação de banco de dados é a cópia dos dados do banco de dados original para outro banco de
dados. São vantagens da replicação em banco de dados:
A replicação de banco de dados também pode ser usada para garantir a integração e a integridade
entre os bancos de dados de sistemas com modelo de dados relacional distribuídos. Nesse caso, o
sistema gerenciador de replicação de dados precisa ser capaz de replicar as transações em tempo
real. Geralmente, os servidores de replicação só conseguem replicar uma imagem do banco
(snapshot), portanto não dá para implementar uma arquitetura desse tipo.
Apenas a base master recebe atualizações. Pouco sujeita a inconsistências, mesmo no modelo lazy.
Modelo dimensional:
A modelagem dimensional é uma técnica voltada especialmente para a implementação de um
modelo que permita a visualização de dados de forma intuitiva e com altos índices de performance
na extração de dados.
É a técnica de projeto mais utilizada para a construção de data warehouses (DW), que busca um
padrão de apresentação dos dados de fácil visualização pelo usuário final e bom desempenho para
consultas.
Esquema estrela (star schema): é um dos mais usados na modelagem dimensional e consiste em
uma tabela de fatos central e uma tabela para cada dimensão
Esquema floco de neve (snowflake): é uma variação do esquema estrela em que algumas tabelas de
dimensão são normalizadas, criando-se uma tabela de dimensão secundária cuja chave se torna
estrangeira na tabela de dimensão primária.
Essa técnica interfere no entendimento dos dados pelo usuário e na performance de algumas
consultas, portanto, não deve ser usada como regra geral, embora às vezes possa ser interessante
ou até necessária.
Fatos
Os fatos são os atributos do comportamento. São medidas de ações que ocorrem entre diferentes
objetos ou dimensões. Em geral, são numéricos ou aditivos (podem ser somados) e raramente
textuais. A tabela de fatos é a tabela principal de um modelo dimensional.
É formada por uma chave, composta das chaves das dimensões relacionadas e de um ou mais fatos
mensuráveis, ou medidas, em geral numéricas, para cada conjunto das dimensões.
Fato representa uma medição do negócio, isto é, fato é tudo aquilo que pode ser medido. A lista de
dimensões define a granularidade da tabela de fatos (qual é o escopo da medição). As características
básicas de um fato são:
seu histórico cresce com o passar do tempo. Uma linha da tabela de fato corresponde a uma
medição.
Uma medição é uma linha da tabela de fatos. Todas as tabelas de fatos estão alinhadas com a
mesma granularidade. As medições dos fatos devem ser numéricas e aditivas. As tabelas de fato
representam relações N:N.
Valores aditivos: medidas em que podem ser aplicados os operadores, como soma, porcentagem
etc. Faz sentido adicioná-los continuamente e sobre todas as dimensões, por exemplo, vendas em
R$ e vendas em unidades.
Valores não aditivos: medidas que não podem ser manipuladas livremente, como porcentagem ou
valores relativos, como temperatura e condição do tempo.
Dimensões
As dimensões descrevem pessoas, lugares e coisas relacionadas a um negócio. As tabelas de
dimensão são formadas por uma chave primária e por atributos que a descrevem.
Quanto maior o tempo dedicado à descrição dos atributos, ao preenchimento dos seus valores e à
garantia da qualidade dos dados, melhor será o DW.
Cada dimensão tem sua própria granularidade, que não pode ser menor que a da tabela de fatos,
mas pode ser maior.
As tabelas de dimensão são pontos de entrada para a tabela de fatos. Atributos de dimensões
eficazes produzem recursos analíticos eficientes. As dimensões implementam a interface de usuário
para o DW. A maioria dos fatos envolve pelo menos quatro dimensões básicas: onde, quando, quem
e o quê.
dimensão onde determina o local em que o fato ocorreu (local geográfico, filial);
dimensão quando é a própria dimensão tempo;
dimensão quem determina quais entidades participaram do fato (cliente, fornecedor,
funcionário);
dimensão o quê determina qual é o objeto do fato (produto, serviço)
O contexto de uma medida é determinado em função das dimensões do fato (MACHADO, 2000).
refere-se ao nível de detalhe em que serão armazenados os dados no DW, quanto maior o
detalhamento, mais baixo o nível de granularidade;
À medida que os dados vão ficando obsoletos, é possível resumi-los em um alto nível de
granularidade de forma a manter a performance.
Granularidade alta:
As ferramentas de acesso aos dados possibilitam a exploração do DW pelo usuário final. Variam de
simples ferramentas de consultas ad hoc e geradores de relatórios, aplicações para usuários finais
que acessem os dados do DW, as ferramentas de análises sofisticadas para Olap e mineração de
dados. Qual ferramenta pode ser usada como acesso aos dados?
Olap – Online Analytical Processing: é uma “categoria da tecnologia de software que permite que os
analistas, gerentes e executivos obtenham, de maneira rápida, consistente e interativa, o acesso a
uma variedade de visualizações possíveis da informação”.