Modelo Relacional André Restivo Faculdade de Engenharia da Universidade do Porto February 24, 2012 André Restivo (FEUP) Modelo Relacional February 24, 2012 1 / 19
Sumário 1 Modelo Relacional 2 Operações 3 Conversão para o Modelo Relacional André Restivo (FEUP) Modelo Relacional February 24, 2012 2 / 19
Modelo Relacional Modelo Relacional Introduzido por Codd (1970) Base de Dados Relacional: Conjunto de Relações (Tabelas) Conjunto de Restrições de Integridade Esquema de uma Relação: Nome da Relação Nome e Tipo de cada Atributo (Colunas) Restrições de Integridade Interna Tuplos ou Instâncias de uma Relação: Os conteúdos das relações (Linhas) André Restivo (FEUP) Modelo Relacional February 24, 2012 3 / 19
Modelo Relacional Tuplos Linhas de cada relação Sequência ordenada de valores (ordem da sequência é importante) Tuplos de uma relação (ou tabela) não têm ordem Os valores das componentes de um tuplo são atómicos Nota No modelo relacional não pode haver atributos compostos ou multivalor André Restivo (FEUP) Modelo Relacional February 24, 2012 4 / 19
Modelo Relacional Chave de uma Relação Identifica de forma única os tuplos da relação Conjunto mínimo de atributos da relação tal que não existam 2 tuplos distintos com valores iguais nesses atributos. Uma relação pode ter várias chaves candidatas: 1 chave primária + chaves alternativas André Restivo (FEUP) Modelo Relacional February 24, 2012 5 / 19
Modelo Relacional Chave Externa Também pode ser chamada de Chave Estrangeira (Foreign Key). Atributo (ou conjunto de atributos) que referencia um atributo (ou conjunto de atributos) de uma outra relação. O conjunto de atributos referenciados tem de ser uma chave candidata da relação. André Restivo (FEUP) Modelo Relacional February 24, 2012 6 / 19
Modelo Relacional Notação Relação Chave Atributo 1 Atributo 2 #Chave Externa Tabela André Restivo (FEUP) Modelo Relacional February 24, 2012 7 / 19
Modelo Relacional Restrições Intrínsecas do Modelo Relacional Integridade de entidade os valores da chave primária não podem ser nulos os valores dos atributos têm de pertencer ao domínio Unicidade da chave não podem existir 2 tuplos diferentes com valores iguais na chave Integridade referêncial um tuplo de uma relação que se refira a uma outra relação, tem de se referir a um tuplo existente nessa relação André Restivo (FEUP) Modelo Relacional February 24, 2012 8 / 19
Modelo Relacional Outras Restrições e Notação Alguns atributos não podem conter valores nulos mesmo não sendo chaves candidatas. Estes atributos podem ser representados colocando um NN (Not Null) junto do atributo. Chaves candidatas que não sejam escolhidas como chave primária podem ser representadas por UK (unique key). André Restivo (FEUP) Modelo Relacional February 24, 2012 9 / 19
Operação de Inserção Operações Permite inserir um ou mais tuplos numa relação, pode violar qualquer dos 3 tipos de restrições: integridade da entidade: se um dos valores não pertencer ao domínio ou se o valor da chave do novo tuplo for null unicidade da chave: o valor da chave do novo tuplo já existe num outro tuplo da tabela integridade referêncial: se o valor de uma chave externa referir um tuplo não existente. Se uma das restrições for violada, opta-se por: rejeitar a operação ou tentar corrigir a razão da rejeição André Restivo (FEUP) Modelo Relacional February 24, 2012 10 / 19
Operações Operação de Remoção Remove tuplos de valores de uma tabela, pode violar apenas a integridade referêncial no caso de o tuplo a remover ser referenciado por uma das chaves externas de outro tuplo na BD. Requer uma condição sobre os atributos de forma a selecionar o tuplo ou tuplos a serem removidos. : remover todos os empregados do departamento 10. Caso ocorra violação, opta-se por: rejeitar a operação ou procurar propagar a operação e remover todos os tuplos que referenciam o que está a ser removido ou alterar para null os valores dos atributos dos tuplos que referenciam o que está a ser removido André Restivo (FEUP) Modelo Relacional February 24, 2012 11 / 19
Passo 1 : Entidade-Tipo Relação Atributos simples da entidade atributos da relação Atributos compostos atributos individuais na relação Atributo chave da entidade chave da relação Atributos multivalor (ver passo 5) Empregado (bi, nome (pnome, unome)) empregado bi pnome unome André Restivo (FEUP) Modelo Relacional February 24, 2012 12 / 19
Passo 2 : Associações de 1 para 1 R(E1, E2) Sejam S1 e S2 as relações correspondentes às entidade E1 e E2, respectivamente. Escolher uma das relações. Normalmente a que tem participação total em R. Por exemplo S1. Incluir como chave externa em S1 a chave principal de S2. A chave externa passa a ser uma chave candidata de S1 pois não pode ter repetidos. Se a participação de E1 em R for total, então a chave externa não pode ter valores nulos. Incluir todos atributos simples da associação R na relação S1. Empregado (bi, nome (pnome, unome)) dirige (Empregado, Departamento) 1:1 p/t departamento num nome #bidir empregado UK, NN André Restivo (FEUP) Modelo Relacional February 24, 2012 13 / 19
Passo 3 : Associações de 1 para N R(E1, E2) Sejam S1 e S2 as relações correspondentes às entidade E1 e E2, respectivamente. Escolhe-se a relação correspondente à entidade participante do lado N em R. Neste caso a relação S2. Incluir como chave externa em S2 a chave principal de S1. Incluir os atributos simples da associação na relação S2. Se a participação de E2 em R for total, então a chave externa não pode ter valores nulos. Empregado (bi, nome (pnome, unome)) trabalhapara (Empregado, Departamento, cargo) N:1 t/p empregado bi pnome unome #num departamento NN cargo NN André Restivo (FEUP) Modelo Relacional February 24, 2012 14 / 19
Passo 4: Associação N:N R(E1,E2) Criar uma nova relação S para representar a associação R: Incluir como chave externa em S as chaves principais das relações que representam as entidades E1 e E2 participantes em R. O conjunto das chaves externas formará a chave principal de S. Incluir todos atributos simples da Associação R na relação S. Empregado (bi, sexo, nome (pnome, unome)) trabalhaem (Empregado, Projecto, horas) N:N p/p trabalhaem #bi empregado #num projecto horas André Restivo (FEUP) Modelo Relacional February 24, 2012 15 / 19
Passo 5: Atributos Multi-Valor Para cada atributo A multivalor, cria-se uma nova relação S que: Inclui o atributo de A mais a chave principal, K, da relação que representa a entidade que tem A como atributo multivalor. A chave principal de S será a combinação de A e K. Departamento (num, nome, {telefone}) telefonedepartamento #num departamento telefone André Restivo (FEUP) Modelo Relacional February 24, 2012 16 / 19
Passo 6: Associação Ternária R(E1,E2,E3) Criar uma nova relação S para representar a associação R: Incluir como chave externa em S as chaves principais das relações que representam as entidades E1, E2 e E3 participantes em R. O conjunto das chaves externas formará a chave principal de S. Incluir todos atributos simples da Associação R na relação S. Produto (id, nome, preço) Fornecedor (nif, nome) encomendou (Projecto, Produto, Fornecedor, quantidade) N:N:N p/p/p encomendou #num projecto #id produto #nif fornecedor quantidade André Restivo (FEUP) Modelo Relacional February 24, 2012 17 / 19
Quadro Resumo Conversão para o Modelo Relacional Cardinalidade Participação Chave Externa Valores Não Nulos. 1:1 t/p Do lado da participação total. Chave única. 1:1 p/p Em qualquer uma das relacões. Chave única. Sem permitir valores nulos. Permitindo valores nulos. N:1 t/p Do lado do N. Sem permitir valores nulos. N:1 p/p Do lado do N. Permitindo valores nulos. N:N. Acrescentar tabela contendo as chaves externas para ambas as relações. Chave primária contém as chaves externas. - André Restivo (FEUP) Modelo Relacional February 24, 2012 18 / 19
Modelo Entidade Associação Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 1: Entidades Relações Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 1: Entidades Relações Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar departamento num nome André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 1: Entidades Relações Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar departamento num nome projecto num nome André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 1: Entidades Relações Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar departamento num nome projecto num nome carro matricula André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 1: Entidades Relações Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar departamento num nome projecto num nome carro matricula modelo marca modelo André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 1: Entidades Relações Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar departamento num nome projecto num nome carro matricula modelo marca modelo fornecedor nif nome André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 1: Entidades Relações Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar departamento num nome projecto num nome carro matricula modelo marca modelo fornecedor nif nome produto ref designacao André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 2: Associações 1:1 Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar departamento num nome #bi empregado UK projecto num nome carro matricula modelo marca modelo fornecedor nif nome produto ref designacao André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 2: Associações 1:1 Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar departamento num nome #bi empregado UK projecto num nome carro matricula #bi empregado NN UK modelo marca modelo fornecedor nif nome produto ref designacao André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 3: Associações N:1 Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar #num departamento NN departamento num nome #bi empregado UK projecto num nome carro matricula #bi empregado NN UK modelo marca modelo fornecedor nif nome produto ref designacao André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 3: Associações N:1 Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar #num departamento NN departamento num nome #bi empregado UK projecto num nome #bi empregado carro matricula #bi empregado NN UK modelo marca modelo fornecedor nif nome produto ref designacao André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 3: Associações N:1 Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar #num departamento NN departamento num nome #bi empregado UK projecto num nome #bi empregado carro matricula #bi empregado NN UK #(marca, modelo) modelo NN modelo marca modelo fornecedor nif nome produto ref designacao André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 4: Associações N:N Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar #num departamento NN departamento num nome #bi empregado UK projecto num nome #bi empregado carro matricula #bi empregado NN UK #(marca, modelo) modelo NN modelo marca modelo fornecedor nif nome produto ref designacao trabalha #bi empregado #num projecto horas André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 5: Atributos Multi-valor Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar #num departamento NN departamento num nome #bi empregado UK projecto num nome #bi empregado carro matricula #bi empregado NN UK #(marca, modelo) modelo NN modelo marca modelo fornecedor nif nome produto ref designacao trabalha #bi empregado #num projecto horas telefone #nif fornecedor telefone André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19
Passo 6: Associações Ternárias Empregado (bi, nome, morada (local, rua, numero, andar)) Carro (matricula) Modelo (marca, modelo) Fornecedor (nif, nome, {telefone}) Produto (ref, designacao) gere (Empregado, Departamento) 1:1 p/p usa (Empregado, Carro) 1:1 p/t pertence (Empregado, Departamento) N:1 t/p controla (Empregado, Projecto) 1:N p/p eum (Carro, Modelo) N:1 t/p trabalha (Empregado, Projecto, horas) N:N p/p compra (Projecto, Produto, Fornecedor, data) N:N:N p/p/p empregado bi nome local rua numero andar #num departamento NN departamento num nome #bi empregado UK projecto num nome #bi empregado carro matricula #bi empregado NN UK #(marca, modelo) modelo NN modelo marca modelo fornecedor nif nome produto ref designacao trabalha #bi empregado #num projecto horas telefone #nif fornecedor telefone compra #num projecto #ref produto #nif fornecedor data André Restivo (FEUP) Modelo Relacional February 24, 2012 19 / 19