Modelagem de Dados Aula 02 Arquitetura e Álgebra Relacional Maxwell Anderson
Arquitetura de Sistemas de Banco de Dados São três níveis de arquitetura: Nível físico Nível lógico Nível de view Nível de view Nível lógico Nível físico
Nível Físico Também conhecido como nível interno ou nível de armazenamento. Descreve como os dados são armazenados. Pode ser descrito como um bloco de locais de armazenamento consecutivos em bytes.
Nível Lógico Também conhecido como nível conceitual. Descreve que dados estão armazenados. É um nível indireto entre o nível físico e o nível de view. Os DBAs utilizam este nível para definir que informações serão armazenados no banco de dados.
Nível Lógico
Nível de View Também conhecido como nível externo ou nível de visão, fornece uma visão de abstração mais alta. Descreve quais dados serão visualizados pelo usuário. Alguns usuários não estarão interessados em visualizar todo o banco de dados, mas somente alguma parte dele.
Nível de View
Modelos de Dados Modelo de dados: coleção de ferramentas conceituais para descrever dados, relações de dados e restrições de consistência. Categorias principais: Modelo relacional: utiliza coleções de tabelas para representar dados e as relações entre elas. Modelo de entidade/relacionamento: o modelo ER é baseado em uma percepção do mundo real que consiste de uma coleção de objetos clássicos, chamados entidades, e as relações entre esses objetos. É muito utilizado no projeto de banco de dados. Modelo de dados baseado em objeto: é uma extensão do modelo ER com noções de encapsulamento, métodos e identidade de objeto.
Modelo relacional É o principal modelo utilizado para aplicações comerciais de processamento de dados. Banco de dados relacional Consiste em uma coleção de tabelas, cada uma com um nome único atribuído.
Terminologia do modelo relacional Estes cabeçalhos são chamados de atributos numero_conta nome_agencia saldo A-101 Downtown 500 A-102 Perryridge 400 A-201 Brighton 900 A-215 Mianus 700 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350 CONTA
Terminologia do modelo relacional Atributos Na tabela conta temos um cabeçalho com três atributos: numero_conta, nome_agencia e saldo. Em cada atributo existe um conjunto de valores permitidos: para nome_agencia temos que o conjunto de valores permitidos é o conjunto de todos os nomes das agências. Este conjunto forma o domínio. O domínio de: numero_conta é definido como D 1 nome_agencia é definido como D 2 saldo é definido como D 3
Qualquer linha da tabela conta precisa consistir em uma tupla de 3 (v 1,v 2,v 3 ), onde v 1 é um número de conta, v 2 é um nome da agência e v 3 é um saldo. Como v 1 ϵ D 1, v 2 ϵ D 2 e v 3 ϵ D 3 então a tabela conta conterá apenas o subconjunto de todas as linhas possíveis. conta é subconjunto de D 1 x D 2 x D 3 É desta forma que uma tabela é baseada em uma relação como sendo um produto cartesiano desses domínios! Então usaremos o termo: relação para designar tabelas e tuplas para linhas.
t numero_conta nome_agencia saldo A-101 Downtown 500 A-102 Perryridge 400 A-201 Brighton 900 A-215 Mianus 700 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350 CONTA Então nesta relação temos quantas tuplas? Sendo t a primeira tupla, então: t [numero_conta] = A-101 e t [nome_agencia] = Downtown ou t [1] = A-101 e t [2] = Downtown
Esquema de banco de dados Esquema é o projeto lógico de um banco de dados e é composto pelas estruturas das relações. Exemplo: Esquema_conta = ( numero_conta, nome_agencia, saldo )
Então conta é uma relação em Esquema_conta: conta(esquema_conta) Outro exemplo: relação agencia nome_agencia cidade_agencia ativo Brighton Brooklyn 7.100.000 Downtown Brooklyn 9.000.000 Mianus Horseneck 400.000 North Town Rye 3.700.000 Perryridge Horseneck 1.700.000 Pownal Bennington 3.000.000 Redwood Palo Alto 2.100.000 Round Hill Horseneck 8.000.000
O que existe de semelhante entre os dois esquemas? Esquema_agencia = ( nome_agencia, cidade_agencia, ativo) Esquema_conta = ( numero_conta, nome_agencia, saldo )
E se quiséssemos encontrar informações sobre todas as contas das agências localizadas no Brooklyn? conta agência
E se quiséssemos encontrar informações sobre todas as contas das agências localizadas no Brooklyn? Esquema_conta numero_conta nome_agencia saldo Esquema_agencia nome_agencia nome_cidade ativo
Chaves Deve existir um atributo que identifique uma tupla como sendo única. Uma superchave é o conjunto de um ou mais atributos que identificam uma tupla como sendo única. Na relação conta temos o atributo numero_conta como sendo uma superchave. O atributo nome_agencia não é uma superchave.
Chaves O conjunto mínimo de superchaves são chamadas de chaves candidatas. numero_conta cpf_titular nome_agencia saldo A-101 123.456.789-10 Downtown 500 A-102 234.432.212-90 Perryridge 400 A-201 213.456.742-00 Brighton 900 A-215 987.090.000-21 Mianus 700 A-217 010.987.223-34 Brighton 750 A-222 187.123.777-87 Redwood 700 A-305 123.432.123-98 Round Hill 350 Relação conta modificada
Chaves Chave primária é o termo utilizado para identificar a chave candidata como o principal meio de identificar tuplas dentro de uma relação. Elas nunca devem ser modificadas! numero_conta# cpf_titular nome_agencia saldo A-101 123.456.789-10 Downtown 500 A-102 234.432.212-90 Perryridge 400 A-201 213.456.742-00 Brighton 900 A-215 987.090.000-21 Mianus 700 A-217 010.987.223-34 Brighton 750 A-222 187.123.777-87 Redwood 700 A-305 123.432.123-98 Round Hill 350 Relação conta modificada
Chaves Chave estrangeira é o termo utilizado para identificar um atributo que é utilizado para identificar a chave primária de outra relação e desta forma determinar um relacionamento. Esquema_conta numero_conta# nome_agencia saldo Esquema_agencia nome_agencia# nome_cidade ativo
Chaves Chaves primárias são representadas desta forma no modelo relacional: conta (numero_conta, nome_agencia, saldo) agencia (nome_agencia, cidade_agencia, ativo) Chaves secundárias são representadas com um traço acima do atributo: conta (numero_conta, nome_agencia, saldo)
Álgebra relacional É uma linguagem de consulta que ilustra as técnicas fundamentais para extrair dados de um banco de dados. Consiste em um conjunto de operações que usam uma ou duas relações como entrada e produzem uma nova relação como resultado. As operações fundamentais são seleção, projeção, união, diferença de conjuntos, produto cartesiano e renomeação.
Operações fundamentais da álgebra relacional Operação seleção: seleciona tuplas que satisfazem um determinado predicado. operador relação de argumento σ nome_agencia = Brighton (conta) numero_conta nome_agencia saldo A-101 predicado Downtown 500 A-102 Perryridge 400 A-201 numero_conta Brighton nome_agencia 900 saldo A-201 A-215 Brighton Mianus 900 700 A-217 A-217 Brighton 750 750 A-222 Redwood 700 A-305 Round Hill 350
Operações fundamentais da álgebra relacional Operação seleção σ saldo > 700 (conta) numero_conta nome_agencia saldo A-101 Downtown 500 A-102 Perryridge 400 numero_conta A-201 nome_agencia Brighton saldo 900 A-215 A-201 Brighton Mianus 700 900 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350
Operações fundamentais da álgebra relacional Operação seleção: conectivos e (ᴠ), ou (ᴧ), não ( ) σ saldo > 700 ᴠ nome_agencia = Brighton (conta) numero_conta nome_agencia saldo A-101 Downtown 500 A-102 Perryridge 400 A-201 numero_conta Brighton nome_agencia 900 saldo A-215 A-201 Brighton Mianus 700 900 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350
Operações fundamentais da álgebra relacional Operação seleção: conectivos e (ᴠ), ou (ᴧ), não ( ) σ saldo > 700 ᴠ nome_agencia = Brighton (conta) numero_conta nome_agencia saldo A-101 Downtown 500 A-102 Perryridge 400 A-201 Brighton 900 A-215 Mianus 700 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350
Operações fundamentais da álgebra relacional Operação seleção: conectivos e (ᴧ), ou (ᴠ), não ( ) σ saldo < 400 ᴧ saldo > 800 (conta) numero_conta nome_agencia saldo A-201 A-101 Downtown Brighton 900 500 A-305 A-102 Round Perryridge Hill 350 400 A-201 Brighton 900 A-215 Mianus 700 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350
Operações fundamentais da álgebra relacional Operação Projeção: suponha que você deseje listar o nome da agência e o numero da conta, mas o saldo não importa: Π nome_agencia, numero_conta (conta) numero_conta nome_agencia nome_agencia numero_conta saldo A-101 Downtown Downtown A-101 500 A-102 Perryridge Perryridge A-102 400 A-201 Brighton Brighton A-201 900 A-215 Mianus Mianus A-215 700 A-217 Brighton Brighton A-217 750 A-222 Redwood Redwood A-222 700 A-305 Round Hill Round Hill A-305 350
Operações fundamentais da álgebra relacional Composição das operações relacionais: consideremos uma consulta mais complexa: Π nome_agencia (σ saldo > 700 (conta)) numero_conta nome_agencia saldo A-101 Downtown Brighton 500 A-102 Perryridge Brighton 400 A-201 Brighton 900 A-215 Mianus 700 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350
Operações fundamentais da álgebra relacional Operação União Considere a relação empréstimo abaixo: numero_emprestimo nome_agencia saldo L-11 Round Hill 900 L-11 Downtown 1500 L-15 Perryridge 1500 L-16 Perryridge 1300 L-17 New York 1000 L-23 Redwood 2000 L-93 Washington 500
Operações fundamentais da álgebra relacional Operação União Qual seria a relação resultante de Π nome_agencia (empréstimo) numero_emprestimo nome_agencia quantia L-11 Round Round Hill Hill 900 L-11 Downtown Downtown 1500 L-15 Perryridge Perryridge 1500 L-16 Perryridge Perryridge 1300 L-17 New York New York 1000 L-23 Redwood Redwood 2000 L-93 Washington Washington 500
Operações fundamentais da álgebra relacional Operação União Qual seria a relação resultante de Π nome_agencia (conta) numero_conta nome_agencia saldo A-101 Downtown 500 A-102 Perryridge 400 A-201 Brighton 900 A-215 Mianus 700 A-217 Brighton 750 A-222 Redwood 700 A-305 Round Hill 350
Operações fundamentais da álgebra relacional Operação União Suponha que você deseje saber quais os nomes das agências que possuem conta e possuem empréstimos. Para isso precisaremos da união entre os nomes das agências da relação conta e os nomes das agências da relação empréstimo. U Π nome_agencia (empréstimo) Π nome_agencia (conta)
Operações fundamentais da álgebra relacional Operação União Desta forma temos que a relação resultante de Π nome_agencia (empréstimo) U Π nome_agencia (conta) U = Π nome_agencia (empréstimo) Π nome_agencia (conta)
Operações fundamentais da álgebra relacional Operação União: regras a observar Não é possível realizar a união entre duas relações que possuem quantidade de atributos diferentes. Deste modo as relações precisam ser de mesma aridade, ou seja, precisam ter o mesmo número de atributos. Os domínios do n-ésimo atributo da relação r e do n-ésimo atributo da relação s precisam ser o mesmo. U
Operações fundamentais da álgebra relacional Operação Diferença dos Conjuntos: Permite encontrar tuplas que estejam em uma relação, mas não em outra. A expressão r s produz uma relação contendo as tuplas que estão em r mas não em s. Π nome_agencia (empréstimo) Π nome_agencia (conta) = nome_agencia New York Washington Π nome_agencia (empréstimo) Π nome_agencia (conta)
Operações fundamentais da álgebra relacional Operação Diferença dos Conjuntos: regras a observar Não é possível realizar a diferença entre duas relações que possuem quantidade de atributos diferentes. Deste modo as relações precisam ser de mesma aridade. Os domínios do n-ésimo atributo da relação r e do n-ésimo atributo da relação s precisam ser o mesmo.
Operações fundamentais da álgebra relacional Operação Produto Cartesiano Permite combinar informações de quaisquer duas relações. Escreve-se as relações entre r e s como r x s t 1 u 1 t 2 u 2 t 1 u 1 t 1 u 2 t 2 u 3 t 2 u 2 t 1 u 3 t 3 u 1 t 3 u 3 t 2 u 1 t 3 u 2 t 3 u 3 r s r x s
Operações fundamentais da álgebra relacional Operação Produto Cartesiano
numero_ emprestimo emprestimo. nome_ agencia quantia numero_conta conta. nome_agencia L-11 Round Hill 900 A-101 Downtown 500 L-11 Round Hill 900 A-102 Perryridge 400 L-11 Round Hill 900 A-201 Brighton 900 L-11 Round Hill 900 A-215 Mianus 700 L-11 Round Hill 900 A-217 Brighton 750 L-11 Round Hill 900 A-222 Redwood 700 L-11 Round Hill 900 A-305 Round Hill 350 L-11 Downtown 1500 A-101 Downtown 500 L-11 Downtown 1500 A-102 Perryridge 400 L-11 Downtown 1500 A-201 Brighton 900 L-11 Downtown 1500 A-215 Mianus 700.................. L-93 Washington 500 A-101 Downtown 500 L-93 Washington 500 A-102 Perryridge 400 L-93 Washington 500 A-201 Brighton 900 saldo L-93 Washington 500 A-215 Mianus 700
Operações fundamentais da álgebra relacional Operação Produto Cartesiano r = emprestimo x conta (emprestimo.numero_emprestimo, emprestimo.nome_agencia, Com este esquema é possível distinguir emprestimo.nome_agencia de conta.nome_agencia emprestimo.quantia, conta.numero_conta, conta.nome_agencia, conta.saldo) r = emprestimo x conta (numero_emprestimo, emprestimo.nome_agencia, quantia, numero_conta, conta.nome_agencia, saldo)
numero_ emprestimo emprestimo. nome_ agencia quantia numero_conta conta. nome_agencia L-11 Round Hill 900 A-101 Downtown 500 L-11 Round Hill 900 A-102 Perryridge 400 L-11 Round Hill 900 A-201 Brighton 900 L-11 Round Hill 900 A-215 Mianus 700 L-11 Round Hill 900 A-217 Brighton 750 L-11 Round Hill 900 A-222 Redwood 700 L-11 Round Hill 900 A-305 Round Hill 350 L-11 Downtown 1500 A-101 Downtown 500 L-11 Downtown 1500 A-102 Perryridge 400 L-11 Downtown 1500 A-201 Brighton 900 L-11 Downtown 1500 A-215 Mianus 700.................. L-93 Washington 500 A-101 Downtown 500 L-93 Washington 500 A-102 Perryridge 400 L-93 Washington 500 A-201 Brighton 900 saldo L-93 Washington 500 A-215 Mianus 700
Operações fundamentais da álgebra relacional Operação Produto Cartesiano: exemplo de composição. σ emprestimo.nome_agencia = Round Hill (emprestimo x conta) numero_ emprestimo emprestimo. nome_ agencia quantia numero_conta conta. nome_agencia L-11 Round Hill 900 A-101 Downtown 500 L-11 Round Hill 900 A-102 Perryridge 400 L-11 Round Hill 900 A-201 Brighton 900 L-11 Round Hill 900 A-215 Mianus 700 L-11 Round Hill 900 A-217 Brighton 750 L-11 Round Hill 900 A-222 Redwood 700 saldo L-11 Round Hill 900 A-305 Round Hill 350
Referências Bibliográficas SILBERCHATZ, Abraham. Sistema de Banco de Dados. Tradução da 5ª edição. Editora Campus. 2006.