Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Campus de Caraguatatuba Tecnólogo em Análise e Desenvolvimento de Sistemas 10 Semestre de 2013 Banco de Dados I – BD I Prof. Lineu Mialaret Aula 8: Modelo Relacional Banco de Dados I Aula 8 - 1/33 ©Prof. Lineu Mialaret Desenvolvimento de um um Aplicativo de Banco de Dados (1) Requisitos + Regras de Modelo Lógico Modelo Físico Visão de Sistema Projeto Negócio Modelo Conceitual Visão de Negócio Análise Modelo Funcional BD Operacional Banco de Dados I Aula 8 - 2/33 ©Prof. Lineu Mialaret Desenvolvimento de um um Aplicativo de Banco de Dados (2) M Banco de Dados I Aula 8 - 3/33 ©Prof. Lineu Mialaret Introdução (1) O Modelo Relacional estabeleceu-se como o primeiro modelo de dados consolidado para aplicações comerciais. Os primeiros SGBD´s tiveram por base o Modelo Hierárquico e o Modelo Rede. Esses dois antigos modelos de dados estão mais próximos da implementação no nível físico que o Modelo Relacional. Existe uma base teórica fundamental no Modelo Relacional, a qual apóia o desenvolvimento de Aplicativos de Banco de Dados Relacionais e permite o processamento eficiente das necessidades de manipulação de informações de seus usuários. Atualmente, o Modelo Relacional está presente em numerosas aplicações no âmbito processamento de dados. Banco de Dados I de aplicações Aula 8 - 4/33 tradicionais de ©Prof. Lineu Mialaret Introdução (2) O Modelo Relacional foi introduzido pelo pesquisador da IBM Edward Codd, em 1970, e gerou uma grande quantidade de pesquisa acadêmica ao longo da década de 70. A Relational Model for Large Shared Data Banks, Communications of the ACM, 13(6), June 1970, artigo disponível na página da matéria. Características marcantes desse modelo de dados: formal por natureza com estruturas de dados simples e uniformes. O Modelo Relacional baseia-se na teoria matemática de conjuntos, onde os dados de um determinado domínio de conhecimento são representados por meio de uma coleção de relações ou tabelas. É o modelo lógico de BD mais utilizado comercialmente. Hoje existem dezenas de SGBD´s relacionais no mercado, para todas as plataformas de hardware e software existentes. Ex: Oracle, Sybase, Microsoft, etc. Banco de Dados I Aula 8 - 5/33 ©Prof. Lineu Mialaret Modelo Relacional - Conceitos (1) Um domínio D é um conjunto de valores atômicos, ou seja, cada valor nesse domínio é indivisível. Um tipo de dado ou formato é também associado a cada domínio. Exemplo: conjunto dos números inteiros, das cores disponíveis, dos brasileiros, etc. Produto cartesiano: Sejam D1,D2,D3,...,Dk domínios de tipos de dados. O produto cartesiano representado por D1 x D2 x D3 x ... x Dk é o conjunto de todas as k-tuplas (a1,a2,...,ak) onde cada ai Di. Exemplo: Sejam k = 2 (denominado de grau da relação) D1 = {0,1} D2 = {a,b,c} Então R = {(0,a), (0,b), (0,c), (1,a), (1,b), (1,c)} é uma relação. Uma relação r é um subconjunto do produto cartesiano de domínios. Banco de Dados I Aula 8 - 6/33 ©Prof. Lineu Mialaret Modelo Relacional - Conceitos (2) Um Banco de Dados Modelo Relacional consiste numa coleção de tabelas (relacionais), cada uma das quais designadas com um nome único. Uma linha numa tabela representa um relacionamento entre um conjunto de valores. Uma vez que essa tabela representa uma coleção de tais relacionamentos, há uma estreita correspondência entre o conceito de tabela e o conceito matemático de relação, a partir da qual se originou o nome desse modelo de dados. Seja a tabela Conta apresentada a seguir na próxima transparência. Ela possui três colunas: numero_conta, nome_agencia e saldo. Essas colunas são denominadas de atributos. Para cada atributo da tabela Conta há um conjunto de valores permitidos, ou seja, o domínio do atributo. Por exemplo, para o atributo numero_conta, o domínio é o conjunto de todos os números de contas permitidos. Banco de Dados I Aula 8 - 7/33 ©Prof. Lineu Mialaret Modelo Relacional - Conceitos (3) numero_conta nome_agencia saldo Exemplo da relação ou tabela Conta. Banco de Dados I Aula 8 - 8/33 ©Prof. Lineu Mialaret Modelo Relacional - Conceitos (4) Suponha que D1 denote esse conjunto de valores de contas permitidos, D2 identifique o conjunto de todas as agências e D3 o conjunto de todos os valores de saldos permitidos. Qualquer linha da tabela Conta consiste necessariamente de uma tupla (v1,v2,v3) em que v1 é um numero de conta, (ou seja, v1 está no domínio D1), v2 é o nome de uma agência e v3 representa um valor de saldo. Em geral, a tabela Conta é um subconjunto de D1 x D2 x D3 Uma tabela de n atributos deve ser um subconjunto de D1 x D2 x ... x Dn Matematicamente se define uma relação como um subconjunto de um produto cartesiano de uma lista de domínios. Em essência, tabelas são relações, e pode-se usar os termos matemáticos relação e tupla como sinônimos de tabela e linha. Banco de Dados I Aula 8 - 9/33 ©Prof. Lineu Mialaret Modelo Relacional - Conceitos (5) Formalmente, dados os conjuntos D1,D2,…,Dn, uma relação r é um subconjunto de D1 x D2 x … x Dn Assim, uma relação pode ser entendida como um subconjunto de tuplas (a1,a2,…,an) onde cada ai Di Exemplo: sejam os valores dos seguintes atributos: nome_cliente = {Jones, Smith, Curry, Lindsay} endereco_cliente = {Main, North, Park} cidade_cliente = {Harrison, Rye, Pittsfield} Então r = { (Jones, Main, Harrison), (Smith, North, Rye), (Curry, North, Rye), (Lindsay, Park, Pittsfield) } é uma relação sobre o produto cartesiano de: nome_cliente x endereco_cliente x cidade_cliente Banco de Dados I Aula 8 - 10/33 ©Prof. Lineu Mialaret Características dos Atributos Cada atributo (coluna) de uma relação (tabela) tem um nome. O conjunto de valores permitidos para cada atributo é chamado de domínio do atributo. Os valores dos atributos devem ser atômicos, ou seja, os atributos são indivisíveis. Por exemplo: atributos multivalorados não são atômicos atributos compostos não são atômicos. O valor especial nulo (null) faz parte de qualquer domínio. Banco de Dados I Aula 8 - 11/33 ©Prof. Lineu Mialaret Esquema de Relação Um esquema de relação R, denotado por R(A1,A2,...,An) é um conjunto de atributos {A1,A2,...,An}. Cada atributo Ai é o nome do papel desempenhado por algum domínio Di no esquema de relação R. O domínio Di é chamado de domínio de Ai e é denotado por dom(Ai). Um esquema de relação é usado esquematicamente uma relação (tabela). para descrever O nome da relação é R e o número de atributos n no esquema é denominado de grau da relação. Exemplo: ESTUDANTE(Nome, CPF, Tel_Res, Endereco, Tel_Trab, Idade, CR) ou Estudante(Nome, CPF, Tel_Res, Endereco, Tel_Trab, Idade, CR) Banco de Dados I Aula 8 - 12/33 ©Prof. Lineu Mialaret Instância de Relação (1) Uma instância da relação r de um esquema de relação R(A1, A2,...,An), denotado por r(R), é um conjunto de tuplas (linhas) r = {t1,t2,...,tm}. Cada tupla é uma lista ordenada de n valores t = {v1,v2,...,vn} onde cada valor vi é um elemento de um domínio dom(Ai) ou um valor nulo (null) especial. São também usados os termos intenção da relação para o esquema R e extensão da relação para uma instância r(R) da relação. Portanto, uma instância de relação r(R) é tal que r(R) (dom(A1) X dom(A2) X ... X dom(An)) ou seja, um subconjunto do produto cartesiano de uma lista de domínios Banco de Dados I Aula 8 - 13/33 ©Prof. Lineu Mialaret Instância de Relação (2) Exemplo de uma Instância de uma Relação. Banco de Dados I Aula 8 - 14/33 ©Prof. Lineu Mialaret Instância de Relação (3) Os valores correntes (instância da relação) são especificados por uma tabela. Um elemento t da instância de relação r(R) é uma tupla, representada por uma linha da tabela. atributos nome_cliente endereco_cliente cidade_cliente relação Jones Smith Curry Lindsay Main North North Park Harrison Rye Rye Pittsfield tuplas Cliente Banco de Dados I Aula 8 - 15/33 ©Prof. Lineu Mialaret Características de uma Relação (1) A ordem das tuplas é irrelevante (as tuplas ou linhas da tabela podem ser armazenadas em qualquer ordem arbitrária). Exemplo: a relação Conta com as suas tuplas desordenadas. numero_conta nome_agencia saldo Conta Banco de Dados I Aula 8 - 16/33 ©Prof. Lineu Mialaret Características de uma Relação (2) Requisitos de uma relação ou tabela (relacional) no Modelo Relacional: as linhas (tuplas) da tabela contém dados sobre uma ou mais entidades as colunas da tabela contém dados sobre atributos de uma entidade as células da tabela só podem conter um único valor todos os valores de uma coluna são do mesmo tipo cada coluna tem um nome único a ordem das colunas não é importante a ordem das linhas (tuplas) não é importante não pode haver duas linhas (tuplas) idênticas. Banco de Dados I Aula 8 - 17/33 ©Prof. Lineu Mialaret Um Exemplo de uma Relação: Empregado (1) NumeroEmpregado PreNome SobreNome 100 Mary Abermany 700 Jerry Caldera 300 Alea Copley 40 Murugan Jackson Banco de Dados I Aula 8 - 18/33 ©Prof. Lineu Mialaret Um Exemplo de uma Relação: Employee (2) Banco de Dados I Aula 8 - 19/33 ©Prof. Lineu Mialaret Um Exemplo de uma Tabela Não Relacional (1) Cells of the table hold a single value EmployeeNumber 100 Phone 335-6421, LastName Abermany 454-9744 700 215-7789 Caldera 300 610-9850 Copley 40 299-9090 Jackson Banco de Dados I Aula 8 - 20/33 ©Prof. Lineu Mialaret Um Exemplo de uma Tabela Não Relacional (2) No two rows may be identical EmployeeNumber Phone LastName 100 335-6421 Abermany 700 215-7789 Caldera 300 610-9850 Copley 100 335-6421 Abermany 40 299-9090 Jacksoni Banco de Dados I Aula 8 - 21/33 ©Prof. Lineu Mialaret Terminologia no Modelo Lógico Relacional Sinônimos no Modelo Relacional: Banco de Dados I Relação Tupla Atributo Tabela Linha Coluna Arquivo Registro Campo Aula 8 - 22/33 ©Prof. Lineu Mialaret Relational Database A relational database consists of multiple relations. Information about an enterprise is broken up into parts, with each relation storing one part of the information. A bank system example: Account: stores information about accounts Depositor: stores information about which customer owns which account Customer: stores information about customers Storing all information as a single relation such Bank(account-number,balance,customer-name,...) as results in: repetition of information (e.g. two customers own an account) the need for null values (e.g. represent a customer without an account). Normalization theory (Database Course II) deals with how to design relational well suited schemas. Banco de Dados I Aula 8 - 23/33 ©Prof. Lineu Mialaret Notação do Modelo Relacional (1) Um esquema de relação R de grau n é representado como R(A1,A2,...,An). Uma tupla numa instância de relação r(R) é representada como t = {v1,v2,...,vn} onde cada vi é o valor correspondente ao atributo Ai. t[Ai] refere-se ao valor vi na tupla t para o atributo Ai. t[Au,Av,...,Az], onde Au,Av,...,Az são atributos de R, refere-se à subtupla de valores <vu,vv,...,vz> da tupla t correspondente. Letras maiúsculas (Q, R, S) denotam nomes de relações. Letras minúsculas (q, r, s) denotam instâncias de relações. As letras (t, u, v) denotam as tuplas. Banco de Dados I Aula 8 - 24/33 ©Prof. Lineu Mialaret Notação do Modelo Relacional (2) Em geral, o nome de uma relação como por exemplo ESTUDANTE indica a instância corrente da relação, enquanto que ESTUDANTE(Nome,CPF,RG,Endereço,...) refere-se ao esquema da relação. Nomes de atributos são algumas vezes qualificados com o nome da relação (tabela) à qual eles pertencem. Exemplo: ESTUDANTE.Nome ESTUDANTE.CPF Estudante.Endereco Banco de Dados I Aula 8 - 25/33 ©Prof. Lineu Mialaret Chaves no Modelo Relacional (1) Uma relação é definida como um conjunto de tuplas distintas. Superchave (SK): são subconjuntos de atributos de um esquema de relação R com a propriedade de que duas tuplas não têm a mesma combinação de valores para esses atributos. Para quaisquer duas tuplas distintas t1 e t2 numa instância r da relação R, t1[SK] t2[SK] Todo esquema de relação tem pelo menos uma superchave, que é aquela constituída pelo conjunto de todos os seus atributos. Chave (K): num esquema de relação R, a chave K é uma superchave mínima, isto é, uma superchave da qual não se pode remover nenhum atributo, ou do contrário se tem um conjunto de atributos que não se constitui numa superchave. Exemplo: {CPF} é uma chave de ESTUDANTE, e qualquer conjunto de atributos que inclua CPF, tal como por exemplo {CPF,Nome,Idade} é uma superchave de ESTUDANTE. Banco de Dados I Aula 8 - 26/33 ©Prof. Lineu Mialaret Chaves no Modelo Relacional (2) Chave Candidata: uma chave é determinada pelo significado dos atributos no esquema da relação. Em geral, um esquema de relação pode ter mais de uma chave, como por exemplo {CPF} e {RG}. Neste caso, cada uma das chaves é chamada de chave candidata. Chaves candidatas devem superchaves mínimas. Chave Primária (PK): uma das chaves candidatas escolhida para identificar distintamente as tuplas da relação. Por convenção, representa-se a chave primária sublinhando-se os atributos que a compõem. As chaves candidatas que não são denominadas de Chaves Alternativas. Banco de Dados I Aula 8 - 27/33 selecionadas são ©Prof. Lineu Mialaret Aspectos de Integridade (1) Aspectos de integridade de um Modelo Relacional de Banco de Dados constituem-se num dos mais importantes princípios da construção do mesmo. Esses aspectos são materializados por meio de restrições de integridade impostas ao modelo. Dessa forma pode-se esquematizar resumidamente um Banco de Dados Relacional da seguinte forma: Banco de Dados I Aula 8 - 28/33 ©Prof. Lineu Mialaret Aspectos de Integridade (2) As restrições de integridade resguardam o Banco de Dados contra danos acidentais. Elas dizem respeito à correção, consistência e segurança, por exemplo, dos dados armazenados. A garantia da integridade é a garantia de que o estado dos dados do Banco de Dados está sempre coerente com a realidade para o qual o mesmo foi projetado e criado. Não basta apenas ter um esquema com os dados eficientemente bem estruturados, se não existir nenhum controle sobre os valores dos mesmos. Se não há o gerenciamento de integridade, pode-se ter situações como a ocorrência de dados desconhecidos, como por exemplo: a ausência de valor em atributos significativos, como empregado sem código e relacionamentos incorretos ou inexistentes, ou a ocorrência de situações não triviais, como departamentos sem gerente ou alguém sendo gerente de mais de um departamento. Banco de Dados I Aula 8 - 29/33 ©Prof. Lineu Mialaret Restrições de Integridade (1) Restrições de integridade - Restrição de domínio: Os valores de cada atributo Ai devem ser atômicos e pertencer a um determinado (domínio) dom(Ai). Restrição de chave: Todo esquema de relação deve ter uma chave e os valores destas chaves devem ser distintos. Restrição de integridade de entidade: Nenhum valor de chave primária pode ser nulo (null), porque este valor identifica a tupla numa relação. Restrição de integridade referencial: Especificada para manter a consistência entre tuplas de duas relações. Uma tupla numa relação que se refere a uma outra relação deve se referir a uma tupla existente naquela relação. A integridade referencial é especificada através do conceito de chave estrangeira (FK, “foreign key”). Banco de Dados I Aula 8 - 30/33 ©Prof. Lineu Mialaret Restrições de Integridade (2) Chave Estrangeira (FK): Sejam dois esquemas de relações R1 e R2. Um atributo de R2 é dito ser chave estrangeira (ou atributo transposto ou atributo de ligação) se ele, podendo ou não ser chave primária de R2, é chave primária de R1. Os esquemas de relações R1 e R2 não são necessariamente distintos. Exemplo: r1 r2 Banco de Dados I Aula 8 - 31/33 ©Prof. Lineu Mialaret Restrições de Integridade (3) Se uma instância de relação r2 inclui uma chave estrangeira correspondente a chave primária de uma instância de relação r1, então todo valor da chave estrangeira de r2 deve ser: igual ao valor da chave primária em alguma tupla de r1, isto é, t1[PK] = t2[FK]. Diz-se que a tupla t2 referencia ou se refere à tupla t1, ou totalmente nulo (null), ou seja, cada valor do atributo que participa da chave estrangeira deve ser nulo. Num Banco de Dados com muitas relações, haverá usualmente muitas restrições de integridade referencial. Para especificar estas restrições, deve-se primeiro ter um claro entendimento do significado de cada conjunto de atributos nos diversos esquemas de relação do Banco de Dados. Restrições de integridade referencial geralmente surgem dos relacionamentos entre as entidades representadas pelos esquemas de relação. Banco de Dados I Aula 8 - 32/33 ©Prof. Lineu Mialaret Restrições de Integridade (4) Restrições de integridade semântica: ou regras de negócio, são as restrições especificadas e mantidas num Banco de Dados Relacional, por exemplo, ou pelos programas de aplicação ou implementadas pelo próprio SGBD (Sistema Gerenciador de Banco de Dados com capacidade ativa), por meio de: Visões (views) Gatilhos (triggers) Procedimentos Armazenados (stored procedures). Exemplos: “o salário de um empregado não deve ser maior do que o salário do seu supervisor” “o número máximo de horas por semana que um empregado pode trabalhar em projetos é 56”. Banco de Dados I Aula 8 - 33/33 ©Prof. Lineu Mialaret