memorex banco de dados

Propaganda
MEMOREX BANCO DE DADOS
por Paulo Marcelo
[email protected]
10/10/2009
Esse é o terceiro memorex destinado aos concurseiros de TI. Neste material, foram compilados os
principais conceitos sobre banco de dados e as cláusulas SQL avançadas (grupos, funções agregadas,
subconsultas, etc) que costumam confundir até os candidatos mais experientes sobre o assunto. Questões
comentadas encontram-se ao final do material. Agradecimento ao concurseiro Diogo Fagundes [diofagor]
que pacientemente comentou a maioria das questões. Bons estudos a todos!
Memorex anteriores:
http://www.scribd.com/doc/16787717/Memorex-Redes
http://www.scribd.com/doc/17101886/Memorex-PMBOK-2004
Errata:
No Memorex de Redes a seguinte questão elaborada pelo cespe: “O criptossistema Diffie Hellman
define uma forma segura de troca de chaves” está errada devido a vulnerabilidade ao ataque man-in-themiddle e nada tem a ver com termo “criptossistema” como consta no material.
O texto a seguir foi compartilhado por um membro da lista timaster. Fica a reflexão.
Um Meio ou uma Desculpa
Não conheço ninguém que conseguiu realizar seu sonho, sem sacrificar feriados e domingos pelo
menos uma centena de vezes, da mesma forma, se você quiser construir uma relação amiga com seus filhos,
terá que se dedicar a isso, superar o cansaço, arrumar tempo para ficar com eles, deixar de lado o orgulho e
o comodismo. Se quiser um casamento gratificante, terá que investir tempo, energia e sentimentos nesse
objetivo.
O sucesso é construído à noite! Durante o dia você faz o que todos fazem.
Mas, para obter um resultado diferente da maioria, você tem que ser especial. Se fizer igual a todo
mundo, obterá os mesmos resultados, não se compare à maioria, pois infelizmente ela não é modelo de
sucesso, se você quiser atingir uma meta especial, terá que estudar no horário em que os outros estão
tomando chopp com batatas fritas. Terá de planejar, enquanto os outros permanecem à frente da televisão.
Terá de trabalhar enquanto os outros tomam sol à beira da piscina.
A realização de um sonho depende de dedicação, há muita gente que espera que o sonho se realize
por mágica, mas toda mágica é ilusão, e a ilusão não tira ninguém de onde está, em verdade a ilusão é o
combustível dos perdedores, pois....
'Quem quer fazer alguma coisa, encontra um meio'. 'Quem não quer fazer nada, encontra uma
desculpa'.
Roberto Shinyashiki
Paulo Marcelo
Memorex Banco de Dados
[email protected]
CHAVES
Especifica como entidades e relacionamentos são identificados.
Conceitualmente, entidades e relacionamentos individuais são distintos, mas
numa perspectiva de banco de dados a diferença entre eles precisa ser expressa
em termos de seus atributos.
O conceito de super-chave permite-nos fazer tais distinções. Uma superchave é um conjunto de um ou mais atributos que, tomando coletivamente,
permite-nos identificar unicamente uma entidade no conjunto de entidades. Por
exemplo, o atributo SeguridadeSocial do conjunto de entidades cliente é
suficiente para distinguir uma entidade cliente das outras. Desta forma,
seguridade-social é uma super-chave. De forma semelhante, a combinação
NomeCliente e SeguridadeSocial é uma super-chave para o conjunto de
entidades cliente. O atributo NomeCliente de cliente não é uma super-chave, pois diversas pessoas podem ter o mesmo
nome.
O conceito de super-chave não é suficiente para nossos propósitos, pois ela pode ter atributos redundantes (ou seja
atributos não necessários para serem únicos). Ex: se K é uma super-chave, então um subconjunto de K também poderá ser.
Toda a relação tem, no mínimo, uma super-chave que é a junção de todos os seus atributos.
Frequentemente, procuramos super-chaves que não contenham nenhum subconjunto próprio que seja uma superchave. Tais super-chaves mínimas são chamadas chaves candidatas.
Utilizaremos o termo chave primária para denotar uma chave candidata que é escolhida por um projetista de
banco de dados como meio principal de identificação de entidades dentro de um conjunto de entidades.
É possível que diversos conjuntos distintos de atributos possam servir como uma chave candidata. Suponha que uma
combinação de NomeCliente e rua seja suficiente para distinguir entre membros do conjunto de entidades cliente. Então
ambos, {SeguridadeSocial} e {NomeCliente, rua}, são chaves candidatas. Embora os atributos SeguridadeSocial e
NomeCliente juntos possam distinguir entidades de cliente, sua combinação não forma uma chave candidata, uma vez que
o atributo SeguridadeSocial sozinho é uma chave candidata.
Chaves estrangeiras podem ser definidas como sendo um conjunto de atributos pertencentes a um esquema de
relação que constituem chaves primárias ou candidatas em outros esquemas independentes. Diferentemente da chave
primária, uma chave estrangeira pode conter valores nulos.
Chave primária e chave estrangeira não podem ser multivaloradas
Normatização - Um aspecto importante na modelagem de dados consiste na normalização de dados, realizada com o
objetivo de eliminar redundâncias e possíveis inconsistências no modelo de dados. Várias tabelas estreitas com menos
colunas são características de um banco de dados normalizado. Poucas tabelas largas com mais colunas são características
de um banco de dados não normalizado.
Diz-se que uma tabela está na primeira forma normal quando ela não contém tabelas aninhadas (grupo repetido
1FN:
ou coluna multivalorada ou coluna não atômica)
Uma tabela está na 2FN se, além de estar na 1FN, não possuir dependências funcionais parciais, ou seja, todos
2FN:
os atributos não-chave devem depender funcionalmente da chave primária inteira. Só ocorre com chaves
primárias compostas
Uma tabela está na 3FN se, além de estar na 2FN, não possuir dependências transitivas entre os atributos.
3NF:
Dependências transitivas ocorrem quando um atributo não-chave depende de outro que não é chave da relação
BCNF : Uma tabela está na BCNF, se e somente se, estiver na 3FN e houve dependências funcionais não triviais.
Alguns benefícios da normalização incluem o seguinte:
• Classificação e criação mais rápidas dos índices.
• Um número maior de índices clusterizados
• Índices mais estreitos e mais compactados.
• Menos índices por tabela. Isto melhora o desempenho das instruções INSERT, UPDATE e DELETE.
• Menos valores nulos e menos oportunidades de inconsistências. Isto aumenta a densidade do banco de
dados.
Paulo Marcelo
Memorex Banco de Dados
[email protected]
Uma associação NxM viola a 1FN devido a ocorrência de repetições de tuplas do lado da chave primária.
CESPE: No modelo ER, um atributo cujos valores são distintos para cada entidade individual de um conjunto de
entidades de determinado tipo é denominado atributo-chave. [CORRETO]
CESPE: O grau de um tipo de relacionamento é o número de tipos de entidades participantes desse tipo de
relacionamento. [CORRETO] Trata do conceito de grau para o modelo entidade-relacionamento que é o número de
entidades que participam de relação, por exemplo, no relacionamento ternário o grau é 3, uma vez que três entidades se
relacionam.
CESPE: No modelo de banco de dados relacional, o grau de uma relação é o número de atributos do esquema dessa
relação [CORRETO] O conceito de grau no Modelo Relacional é diferente do de Modelo E/R. No Modelo Relacional o grau é
dado pelo número de atributos, enquanto no E/R é dado pelo número de entidades
Figura: MER x Modelo Relacional
Paulo Marcelo
Memorex Banco de Dados
[email protected]
Figura: No modelo relacional, ao número de atributos que constituem o esquema de uma relação dá-se o nome de
grau da relação. Por sua vez, o número de tuplas de uma relação designa-se por cardinalidade da relação.
Regras de transformação de um modelo entidaderelacionamento (conceitual) para o modelo relacional lógico:
1) Uma entidade forte será representada por uma relação (tabela);
2) Para cada relacionamento binário M:N, será criado três relações: duas
relações a partir das entidades envolvidas e uma nova relação (tabela auxiliar).
A tabela auxiliar terá duas chaves estrangeiras referenciando as demais
relações, cada chave estrangeira corresponderá a chave primária das relações
referenciadas.
CESPE - Os relacionamentos muitos-para-muitos entre dois tipos de entidades, tais como relacionamentos entre
funcionários e projetos, não podem ser representados diretamente na modelagem E-R.
[ERRADO] O modelo entidade-relacionamento pode representar todas as restrições de cardinalidade: um para um,
um para muitos, muitos para um e muitos para muitos.
CESPE - O modelo relacional clássico não permite a realização de relacionamentos com multiplicidade de muitos para
muitos.
[CORRETO] Deve-se adicionar uma tabela para deixar o modelo relacional na forma 1:N
Entidade fraca é uma entidade dependente de
outra entidade. Geralmente tem uma associação de
1:N e a entidade fraca caracteriza-se por não possuir
um atributo chave. Por exemplo, observe o seguinte
diagrama que pretende modelar os funcionários de
uma empresa e o seu agregado familiar.
Paulo Marcelo
Memorex Banco de Dados
[email protected]
Em um conjunto de entidades sem os atributos necessários para formar uma chave primária, ou seja, em um conjunto de
entidades fracas, a chave primária é formada pela chave primária do conjunto de entidades fortes ao qual a existência do
conjunto de entidades fracas está vinculada e por um identificador do conjunto de entidades fracas.
[CORRETA] Imagine que você queira identificar filhos de uma entidade Pessoa! Como identificá-los (escolher o mais velho,
por exemplo) sem um identificador como a ordem de nascimento deles? Você realmente precisa de um identificador da
entidade fraca! Além, é claro, da chave primária da entidade forte! [WelkeyCosta]
Em um modelo entidade-relacionamento, um relacionamento entre duas entidades é sempre bidirecional.
[CORRETO] No MER não há unidirecinamento como na UML, entretanto esse não é o único conceito que diferencia o MER
da UML, na UML podemos representar a visibilidade de um atributo e representar os métodos, no MER não; etc.
Dependência Funcional: A à B,
A funcionalmente determina B
lê-se:
B funcionalmente depende de A
B é função de A
Se o valor de uma atributo A permite descobrir o valor de outro atributo B, dizemos que A determina funcionalmente B
(A à B). Por exemplo: NumeroMatricula à NomeAluno, idade, curso. Assim, sempre que o NumeroMatricula se repetir
tem-se a repetição de NomeAluno, idade e curso;
Dependência Não Transitiva: Ocorre quando cada atributo for funcionalmente dependente apenas dos atributos
componentes da chave primária ou se todos os seus atributos não chave forem independentes entre si.
RESTRIÇÕES/ INTEGRIDADES
Uma restrição de unicidade (também chamada “integridade de entidade” ou unique constraint) é uma regra que previne
valores duplicados em uma ou mais colunas em uma tabela. Restrições de unicidade são chaves únicas e chaves primárias.
Por exemplo, uma restrição de unicidade pode ser definida em um identificador de fornecedor (supplier identifier) em
uma tabela de fornecedor (supplier table) para assegurar que o mesmo identificador de fornecedor não seja atribuído a
dois fornecedores (suppliers).
Uma restrição referencial é uma regra sobre valores em uma ou mais colunas em uma ou mais tabelas. Por exemplo, um
conjunto de tabelas compartilha informação sobre fornecedores de uma corporação. Ocasionalmente, um identificador
(ID) de fornecedor muda. Pode-se definir uma restrição referencial ditando que o ID do fornecedor na tabela deve (must)
igualar-se ao ID do fornecedor nas informações sobre o fornecedor. A restrição previne operações de inserção, atualização
ou deleção que poderiam de outro modo resultar no desaparecimento de informações do fornecedor.
Uma restrição de checagem (também chamada integridade de domínio) determina restrições em dados adicionados a
uma tabela específica. Por exemplo, a restrição pode ser adicionada para definir que o nível salarial de um empregado
nunca seja menor que um determinado valor quando os dados salariais forem adicinados ou atualizados em uma tabela
de informações de pessoal.
(CESPE/STF2008) Integridade referencial pode ser definida como uma condição imposta a um conjunto de atributos de uma
relação para que valores que apareçam nesse conjunto também apareçam em um certo conjunto de atributos de uma
outra relação. GAB: C
Paulo Marcelo
Memorex Banco de Dados
[email protected]
Uma restrição de integridade UNIQUE KEY requer que cada valor em uma coluna ou
conjunto de colunas (chave) seja exclusivo — ou seja, duas linhas de uma tabela não
podem ter valores duplicados em uma coluna específica ou conjunto de colunas. A
coluna (ou conjunto de colunas) incluída na definição da restrição UNIQUE KEY é
chamada de chave exclusiva. Se a chave UNIQUE contiver mais de uma coluna, tal grupo
de colunas é considerado uma chave exclusiva composta. As restrições UNIQUE KEY
permitem a entrada de valores nulos a menos que você defina as restrições NOT NULL
para as mesmas colunas. Na realidade, qualquer número de linhas pode incluir valores
nulos para colunas sem restrições NOT NULL porque os valores nulos não são
considerados. Um valor nulo em uma coluna (ou em todas as colunas de uma chave
UNIQUE composta) sempre satisfaz uma restrição de UNIQUE KEY.
Paulo Marcelo
Memorex Banco de Dados
[email protected]
OBS: Sem a opção ON DELETE CASCADE, a linha da tabela mãe não poderá ser deletada quando houver
referência a ela na tabela filha.
Paulo Marcelo
Memorex Banco de Dados
[email protected]
A restrição CHECK (restrição de checagem ou domínio) define uma condição que cada linha deve satisfazer
Projeção: você pode usar o recurso de projeção da
linguagem SQL para escolher as colunas de uma tabela que
devem ser retornadas por uma consulta. É possível escolher
o número de colunas que for necessário da tabela. É
representada pela letra grega Pi. A projeção é alcançada
com a cláusula SELECT
Seleção ou Restrição: você pode usar o recurso de seleção da
linguagem SQL para escolher as linhas de uma tabela que
devem ser retornadas por uma consulta e pode usar vários
critérios para restringir as linhas exibidas. É representada
pela letra grega Sigma. A Seleção é obtida através da cláusula
WHERE
Junção: você pode usar o recurso de junção da linguagem SQL para reunir dados armazenados em diferentes tabelas,
criando um vínculo entre eles.
A álgebra relacional consiste de operações cujos nomes vêm da teoria de conjuntos e as principais são:
UNIÃO (UNION)
Que produz uma tabela resultado da união das tabelas operadas
INTERSEÇÃO (INTERSECT)
Que cria uma tabela resultado da interseção das tabelas operadas
Paulo Marcelo
Memorex Banco de Dados
[email protected]
DIFERENÇA (EXCEPT)
Que cria uma tabela contendo tuplas que pertencem à primeira tabela operada, mas não pertencem à segunda.
PRODUTO CARTESIANO
Que gera todas as combinações possíveis entre as t-uplas de duas tabelas.
Esquema
Descrição (textual ou gráfica) da estrutura de um banco de dados de acordo com um determinado modelo de
dados
Instância
Conjunto de dados armazenados em um banco de dados em um determinado instante de tempo.
Paulo Marcelo
Memorex Banco de Dados
[email protected]
TRASAÇÃO (MUDANÇA DE ESTADO/COMPORTAMENTO)
Mudanças de estado em um banco de dados são efetuadas por transações. Uma transação é um conjunto de operações
que levam o banco de dados de um estado consistente a outro estado consistente. Mudanças de estado de um banco de
dados representam o comportamento desse banco de dados.
CONSISTÊNCIA
Na propriedade de Consistência, a execução de uma transação isolada (isto é, sem a execução concorrente de outra
transação) preserva a consistência do banco de dados. A Consistência garante que uma transação deve ser um programa
correto, e suas ações não devem resultar em violações de restrições de integridade definidas para o banco de dados.
Assegurar a propriedade de Consistência após uma transação é tarefa do programador que codifica a transação.
Paulo Marcelo
Memorex Banco de Dados
[email protected]
PERSITÊNCIA (DURABILIDADE)
Depois de uma transação completar com sucesso (commit), as mudanças que ela fez no banco de dados persistem,
até mesmo se houver falhas no sistema. A Durabilidade é assegurada também pelo próprio sistema de banco de dados,
mais especificamente pelo componente de Gerenciamento de Recuperação.
Paulo Marcelo
Memorex Banco de Dados
[email protected]
MODELO ENTIDADE RELACIONAMENTO (MER)
Paulo Marcelo
Memorex Banco de Dados
[email protected]
A notação pé-de-galinha (crow’s foot) é usada em metodologias alternativas e é representada:
Paulo Marcelo
Memorex Banco de Dados
[email protected]
Download