·

Cursos Gerais ·

Estrutura de Dados

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Fundamentos da Programação WEB Projeto de Banco de Dados Centro Federal de Educação Tecnológica Celso Suckow da Fonseca CEFETRJ Projeto de Banco de Dados Modelo Relacional Fundamentos da Programação WEB Modelo Relacional História Introduzido por EF Codd em 1970 Primeiros sistemas relacionais 19778 System R Ingres Turing award em 1981 O modelo relacional é hoje o modelo dominante para aplicações comerciais de bancos de dados Fundamentos da Programação WEB Modelo relacional Estrutura dos bancos de dados relacionais Operações fundamentais da álgebra relacional Outras operações de álgebra relacional Operações de álgebra relacional estendidas Valores nulos Modificação do banco de dados Fundamentos da Programação WEB Exemplo de uma relação Fundamentos da Programação WEB Estrutura básica Formalmente dados os conjuntos D1 D2 Dn uma relação R é um subconjunto de D1 x D2 x x Dn Portanto uma relação é um conjunto de n tuplas a1 a2 an onde cada ai Di Exemplo Se nomecliente Jones Smith Curry Lindsay ruacliente Main North Park cidadecliente Harrison Rye Pittsfield Então R Jones Main Harrison Smith North Rye Curry North Rye Lindsay Park Pittsfield é uma relação sobre nomecliente x ruacliente x cidadecliente Fundamentos da Programação WEB Tipos de atributo Cada atributo de uma relação possui um nome O conjunto de valores permitidos para cada atributo é chamado o domínio do atributo Os valores de atributo têm normalmente a exigência de serem atômicos isto é indivisíveis Nota valores de atributo de valores múltiplos não são atômicos Nota valores de atributo compostos não são atômicos O valor especial nulo é um membro de todo domínio O valor nulo causa complicações na definição de muitas operações Iremos ignorar o efeito dos valores nulos em nossa apresentação principal e consideraremos seu efeito mais adiante Esquema de relação A₁ A₂ Aₙ são atributos ℛ A₁ A₂ Aₙ é um esquema de relação Exemplo Esquemacliente nomecliente ruacliente cidadecliente Rℛ é uma relação no esquema de relação ℛ Exemplo cliente Esquemacliente Fundamentos da Programação WEB Instância de relação Os valores atuais instância de relação de uma relação são especificados por uma tabela Um elemento t de R é uma tupla representada por uma linha em uma tabela atributos ou colunas tuplas ou linhas Fundamentos da Programação WEB Relações são desordenadas A ordem das tuplas é irrelevante as tuplas podem estar em uma ordem arbitrária Exemplo relação conta com tuplas não ordenadas Fundamentos da Programação WEB Banco de dados Um banco de dados consiste em múltiplas relações As informações sobre uma empresa são divididas em partes com cada relação armazenando uma parte das informações conta armazena informações sobre contas depositante armazena informações sobre que cliente possui que conta cliente armazena informações sobre clientes Armazenar todas as informações como uma única relação como banco númeroconta saldo nomecliente resulta em Repetição de informações por exemplo dois clientes possuem uma única conta A necessidade de valores nulos por exemplo representar um cliente sem uma conta Teoria da normalização trata de como projetar esquemas relacionais Fundamentos da Programação WEB Diagrama de esquema Fundamentos da Programação WEB A relação cliente Cliente Empréstimo Tomador Fundamentos da Programação WEB Chaves Seja K R K é uma superchave de R se os valores para K são suficientes para identificar uma tupla única de cada relação RR possível Com R possível queremos dizer uma relação R que poderia existir na empresa que estamos modelando Exemplo nomecliente ruacliente e nomecliente são ambas superchaves de Cliente se nenhum cliente puder ter o mesmo nome de outro cliente K é uma chave candidata se K for mínimo Exemplo nomecliente é uma chave candidata para Cliente já que ela é uma superchave considerando que nenhum cliente pode ter o mesmo nome de outro cliente e nenhum de seus subconjuntos é uma superchave Chave primária Fundamentos da Programação WEB Modelo Relacional Conceitos O modelo relacional é um modelo lógico onde os dados são representados em relações Neste modelo um banco de dados é um conjunto de relações Os dados em uma relação representam fatos reais a respeito do mundo real Por que Relações O modelo é muito simples Representação é semelhante ao modo como pensamos nos dados Fundamentos da Programação WEB Relação e Domínio Relação conjunto de ntuplas a1 a2 am onde cada ai corresponde a um valor pertencente a um domínio Di ou a nulo Um domínio é uma coleção de valores atômicos ou seja valores indivisíveis Um domínio pode ser visto como um conjunto de valores de mesmo significado É possível que vários atributos de uma relação possuam o mesmo domínio Fundamentos da Programação WEB Exemplo de Relação Cada projeto de uma empresa tem um código uma data de início um nome e uma verba mensal Código Nome Data Início Verba PRJ0 SGI 071201 5000000 PR01 SEPS 020600 2000000 PR02 BMM 250500 10000000 PR03 BID 130900 4500000 Relações Nomenclatura No modelo relacional há vários sinônimos Relação Tabela Arquivo Atributo Coluna Campo Tupla Linha Registro Instância Fundamentos da Programação WEB Esquema de uma Relação O esquema de uma relação R representado por RA1 A2An é formado nome da relação uma lista de nomes de atributos A1 A2An informações estruturais como restrições chaves etc opcional Fundamentos da Programação WEB Esquema de uma Relação Cada atributo encontrase associado a um domínio Instância de uma relação conjunto de linhas de uma relação Instância do banco de dados coleção de esquema de relações O grau de uma relação é o número de atributos da mesma Fundamentos da Programação WEB Relação tuplas PRJ0 PRJ1 PRJ2 PRJ3 Domínio dos nomes Domínio das datas domínios atributos Código Nome Data Início Verba PRJ0 SGI 071201 5000000 PR01 SEPS 020600 2000000 PR02 BMM 250500 10000000 PR03 BID 130900 4500000 Fundamentos da Programação WEB Relação Propriedades Propriedades Não há tuplas duplicadas em uma mesma relação As tuplas de uma relação não são ordenadas Os atributos em uma tupla não são ordenados Cada relação possui um número fixo de atributos todos com nomes distintos Fundamentos da Programação WEB Chave de uma Relação Definição conjunto de atributos de uma relação com a propriedade de que nenhum par de tuplas na relação pode ter a mesma combinação de valores para estes atributos Uma chave pode ser simples constituída de um único atributo composta constituída de mais de uma atributo Fundamentos da Programação WEB Notação para Chave Primária Notação indicamos que um atributo ou conjunto de atributos constitui a chave primária de uma relação sublinhando estes atributos Exemplo Projetocodigo nome dataInicio verba Alunomatricula nome endereco telefone PedidocodigoProduto data hora Fundamentos da Programação WEB Chave Estrangeira Chave estrangeira um atributo ou conjunto de atributos em uma relação R1 que é uma chave primária em outra relação R2 é chamado de chave estrangeira na relação R1 As chaves estrangeiras são utilizadas para representar relacionamentos existentes entre tuplas de R1 e R2 Fundamentos da Programação WEB Chaves Exemplo Sigla Nome DPI Produção DRH Recursos Humanos DTI Tec da Informação Matrícula Nome SiglaDep Salário 101 João DPI 250000 102 Tomé DPI 300000 103 Mateus DTI 450000 104 José DPI 100000 105 Judas DRH 230000 106 André DTI 380000 107 Lucas DRH 800000 Chave estrangeira Chave primária Departamento Funcionário Fundamentos da Programação WEB Chaves Exemplo Nas tabelas de Departamento e Funcionário sigla é a chave primária de Departamento matrícula é a chave primária de Funcionário siglaé uma chave candidata matrícula nomeé uma superchave salário não é uma chave candidata nome não é uma chave candidata siglaDep é uma chave estrangeira Fundamentos da Programação WEB Chaves Exemplo Considere o dois esquema de relações a seguir Carroplaca modelo cor cpfProprietario ProprietárioCPF ID nome endereço telefone dnasc As seguintes assertivas são verdadeiras placa é a chave primária de Carro CPF é a chave primária de Proprietário ID é uma chave candidata CPF ID é uma superchave cor não é uma chave candidata cpfProprietario é uma chave estrangeira Fundamentos da Programação WEB Restrições de Integridade Restrição de Integridade condição que deve ser satisfeita para qualquer instância do BD RIs são especificadas na definição do esquema RIs são checadas pelo SGBD quando o BD é modificado Objetivos evitar que o BD entre em um estado inconsistente Fundamentos da Programação WEB Tipos de Restrições de Integridade Há vários tipos de RI que podem ser definidas sobre uma relação no modelo relacional Restrição de Integridade de Domínio Restrição de Integridade de Chave Primária Restrição de Integridade de Entidade Restrição de Integridade Referencial Fundamentos da Programação WEB RI de Domínio Restrição de Integridade de Domínio especifica que para um certo atributo A de uma relação todo valor associado a A deve ser atômico e pertencente ao domínio deste atributo Fundamentos da Programação WEB RI de Chave Primária Restrição de Integridade de Chave Primária não pode haver tuplas duplicadas em uma relação Cada relação possui então um grupo de atributos cuja combinação não se repete Fundamentos da Programação WEB RI de Entidade Restrição de Integridade de Entidade nenhuma das tuplas de uma relação pode possuir valor nulo para nenhum dos atributos que formam sua chave primária Justificativa por definição a chave primária identifica unicamente tuplas de uma relação Fundamentos da Programação WEB RI Referencial Se uma relação R2 inclui uma chave estrangeira correspondente a uma chave primária de uma relação R1 então todo valor desta chave em R2 deve Ser nulo ou Ser igual ao valor da chave primária de alguma tupla de R1 Ou seja se uma tupla t2 referencia uma tupla t1 então a tupla t1 deve existir Para entender Quando a chave primária de uma relação é armazenada em outra relação Fundamentos da Programação WEB Restrições de Integridade X SQL Ponto forte do modelo relacional suporte a uma linguagem simples e poderosa para definição e manipulação de dados SQL Em um SGBD relacional RIs são definidas utilizandose SQL