Post on 06-Jun-2020
Prof.: Leonardo Rodrigues Ribeiro
Disciplina: Banco de Dados
IFBA – Campus Brumado
*
*
*O modelo relacional foi proposto por Edgar Codd em
1970, como uma nova maneira de representação de
dados.
*Codd mostrou que uma visão relacional dos dados
permite a sua descrição em uma maneira natural e
simples.
*Em complementação, apresentou bases para tratar
problemas como redundância e consistência.
*Codd definiu uma álgebra relacional e provou, por meio
de sua equivalência com o cálculo relacional, que ela era
relacionalmente completa, dando fundamentação
teórica ao modelo relacional.
*
*O modelo relacional mostrou ser uma excelente opção,
superando os modelos mais usados àquela época: o de
redes e o hierárquico.
*A maior vantagem do modelo relacional sobre seus
antecessores:
*A representação simples dos dados
*A facilidade com que consultas complexas podem ser
expressas.
*
* Em meados dos anos 70 foram desenvolvidos os primeiros sistemas
relacionais em projetos da IBM, como o Sistema-R, e da Universidade de
Berkeley (Califórnia), que deu origem ao sistema Ingres.
* O uso deste modelo intensificou-se e a partir dos anos 80, o modelo
relacional passou a ser dominante na área de banco de dados
* Vários são os fornecedores atuais, dentre os quais podemos citar IBM,
Microsoft, Sybase e Oracle, este último uma empresa que começou
naquela época e que hoje é provavelmente a líder do mercado de banco
de dados relacionais.
* Existem também sistemas como FireBird, MySQL e PostGres, que com a
nova tendência de software livre, vêm sendo utilizados por várias
empresas.
* Ainda existem sistemas legados mantidos nos modelos antigos, como o IMS
DBMS da IBM no modelo hierárquico e o IDS e IDMS no modelo de redes.
* Há também uma nova abordagem que vem sendo bastante explorada: o
modelo orientado a objetos, que tem com exemplos o Objectstore e o
Versant, o DB4o .
*
*No modelo relacional a principal construção para
representação dos dados é a RELAÇÃO:
*Uma tabela com linhas não ordenadas e colunas.
*Uma relação consiste de um esquema e de uma
instância.
*O esquema de uma relação é inváriavel ao longo do
tempo, sendo modificado apenas por comandos
específicos.
*Um exemplo de esquema de relação é:
Estudante (id: string, nome: string, login: string, idade:
integer, nota: real).
Nome da relaçãoAtributo ou campo da relação Domínio
*
*A instância de uma relação é o conjunto de linhas,
também denominadas tuplas ou registros, distintas
entre si, que compõem a relação em um dado momento.
*Uma instância é variável.
*A instância de uma relação deve seguir sempre o seu
respectivo esquema, respeitando o número de atributos
definidos, bem como os seus domínios.
*
*Exemplo de uma instância da relação Estudante.
*O número de tuplas que uma dada instância possui denomina-se cardinalidade da relação e o número de atributos é o seu grau.
*A instância de relação Estudante tem cardinalidade 3 e grau 5. Note que a cardinalidade é variável, mas o grau não.
*Um banco de dados relacional é um conjunto de uma ou mais relações com nomes distintos. O esquema do banco de dados relacional é a coleção dos esquemas de cada relação que compõe o banco de dados.
id nome login idade nota
112221 Maria maria@if 18 7.6
112222 João joso@if 18 8.0
112223 José jose@if 19 9.2
Tupla
*
*Álgebra Relacional é uma linguagem de consulta formal,
porém procedimental, ou seja, o usuário dá as instruções
ao sistema para que o mesmo realize uma sequência de
operações na base de dados para calcular o resultado
desejado.
*Álgebra Relacional
*Operacional
*Calculo Relacional
*Declarativo
Quero um misto quente
Quero duas fatias de
pão de forma,
recheadas com uma
fatia de queijo e
uma fatia de presunto.
Tudo isto bem
tostado.
*
*A álgebra relacional é uma forma de cálculo
sobre conjuntos ou relações.
*
*SELEÇÃO
*Seleciona tuplas que satisfaçam à condição de
seleção.
*
*SELEÇÃO
*
*PROJEÇÃO
*Projeta as colunas solicitadas, ou seja, gera novas
relações excluindo alguns atributos.
*Obs.: linhas duplicadas são eliminadas
*
*PROJEÇÃO
*
*PROJEÇÃO
*
*PRODUTO CARTESIANO X
*Retorna todas as combinações de tuplas de duas Relações.
* As relações não precisam ter atributos comuns.
*Tuplas da relação resultante
* Todas as combinações de tuplas possíveis entre as relações participantes.
*
*PRODUTO CARTESIANO X
*
*PRODUTO CARTESIANO X
*
*PRODUTO CARTESIANO X
*
*UNIÃO
*Retorna a união das tuplas de duas relações com eliminação automática de duplicatas.
*Produz como resultado uma Relação que contém todas as linhas da primeira Relação seguidas de todas as linhas da segunda tabela.
*Obs: As relações devem possuir o mesmo número de atributos.
*
*UNIÃO
*Resultado de Alunos Professores.
**DIFERENÇA
*Retorna as tuplas presentes em R1 e ausentes em R2.
*Obs.: É uma operação que requer como operandos duas relações
união-compatíveis, ou seja, estruturalmente idênticas.
** INTERSEÇÃO
*Retorna as tuplas comuns a R1 e R2.
*Esta é uma operação adicional que produz como resultado uma tabela que contém, sem repetições, todos os elementos que são comuns às duas tabelas fornecidas como operandos. As tabelas devem ser união-compatíveis.
*
*Um bom SGBD deve evitar a entrada de informação
incorreta ou inconsistente em sua base de dados,
garantindo, com isso, a qualidade da informação
inserida.
*Uma restrição de integridade (RI) é uma condição
especificada no esquema da base de dados para
restringir a informação a ser armazenada.
*Se uma instância da base de dados satisfaz todas as
RIs especificadas, então ela é uma instância válida.
*Um bom SGBD garante as RIs, não permitindo a
existência de instâncias inválidas.
*
*As RI são especificadas e conferidas em 2 momentos
diferentes:
*especificação da RI: se dá na definição do esquema da
base de dados pelo usuário ou pelo administrador da
base de dados (DBA);
*conferência das RIs: é feita pelo banco de dados toda
vez que uma relação é modificada por uma aplicação
sendo executada.
*O modelo relacional permite a especificação de vários
tipos de RIs.
*
*As restrições de chave serve para garantir que as
tuplas de uma relação sejam únicas.
*Chave Candidata – é um conjunto mínimo de atributos
que devem ter valores diferentes em todas as tuplas
de uma instância da relação.
*requisitos:
*não podem existir 2 tuplas diferentes com os mesmos
valores para estes atributos, ou seja, a chave identifica
unicamente qualquer tupla da relaçãoválida;
*ao retirar-se qualquer atributo componente da chave,
ela deixa de identificar unicamente as tuplas.
*
*Pela definição de relação, é sempre garantida a
existência de uma chave. Entretanto, cada relação
pode conter várias chaves candidatas.
*Cabe ao DBA escolher dentre elas aquela que será a
chave primária.
*Por exemplo, na relação Estudantes, se nome fosse
escolhido como chave primária, não seria possível a
existência de estudantes homônimos, o que talvez não
refletisse corretamente os requisitos do sistema.
*A chave primária não pode assumir valor null.
*
*A especificação de uma chave e de uma chave
primária em SQL é feita respectivamente, pelos
comandos UNIQUE e PRIMARY KEY.
*O uso de CONSTRAINT no comando serve para nomear
uma restrição, facilitando sua identificação para
impressão de mensagens de erro numa eventual
ocorrência de violação.
*CREATE TABLE Inscricao (stdid CHAR(20), id CHAR(20),
grau CHAR(2),UNIQUE (id, grau), CONSTRAINT
InscricaoKey PRIMARY KEY (id) )
*
*A chave estrangeira é um conjunto de atributos de
uma relação que é usado para fazer referência a uma
tupla de outra relação, correspondendo à chave
primária da relação referenciada.
*A chave estrangeira deve conter o mesmo número de
atributos da chave primária da outra relação, e seus
respectivos domínios, mas não necessariamente os
mesmos nomes.
*Pode assumir valor null.
*Para garantir a consistência de uma relação se uma
relação é modificada a outra também deve ser
checada e modificada.
*
*Se todas as restrições de chave estrangeiras definidas no
banco de dados são garantidas, a sua integridade referencial
é alcançada, ou seja, garante-se que não há referências
pendentes.
id nome login idad
e
not
a
112221 Maria maria@if 18 7.6
112222 João joso@if 18 8.0
112223 José jose@if 19 9.2
id grau stdid
Informática T 112221
Português M 112221
História M 112223
Redes T 112222
Chave estrangeira
Chave primária
*
*O comando FOREIGN KEY identifica a chave
estrangeira na criação da relação.
*CREATE TABLE Incricao (stdid CHAR(20), id CHAR(20),
grau CHAR(2), PRIMARY KEY (stdid,id), FOREIGN KEY
(stdid) REFERENCES Estudante )
*
*Restrições de domínio, de chave primária e de chave
estrangeiras são consideradas como parte
fundamental do modelo de dados relacional
*Outras restrições mais genéricas são:
*definição de intervalos de valores para determinados
atributos.
*As restrições de tabelas são associadas a um única
tabela e são checadas sempre que a tabela é
alterada.
*As restrições de assertivas são associadas a várias
tabelas e são checadas sempre que uma destas
tabelas é modificada.
*
*As RIs são especificadas quando uma relação é criada e são checadas sempre que uma relação é modificada.
*Sempre que um comando de inserção, exclusão ou atualização causa uma violação de RI, ele é rejeitado.
*A linguagem SQL provê alternativas de tratamento para estas violações. São elas:
*Rejeitar a remoção da tupla de Estudante que é referenciada por Inscricao;
*Remover também todas as tuplas de Inscricao que referenciam a tupla de Estudante a ser removida;
*Atribuir um valor padrão válido ao stdid das tuplas de Inscricao que referenciam a tupla de Estudante a ser removida;
*Atribuir o valor null ao stdid das tuplas de Inscricao que referenciam a tupla de Estudante removida, denotando ‘desconhecido’ ou ‘não aplicável’;
*
*Os comandos em SQL para implementar estas ações
são:
*NO ACTION, que é a opção padrão e que rejeita a
operação sendo executada;
*CASCADE, que remove a tupla da relação referenciada e
todas as tuplas que fazem referência à ela;
*SET NULL / SET DEFAULT , que atribui um valor à chave
estrangeira da tupla referenciada.