330 likes | 483 Views
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 1 0 Semestre de 2013. Banco de Dados I – BD I Prof. Lineu Mialaret Aula 8: Modelo Relacional.
E N D
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
Desenvolvimento de um um Aplicativo de Banco de Dados (1) Modelo Funcional Análise Visão de Negócio Requisitos + Regras de Negócio Modelo Conceitual Modelo Lógico Visão de Sistema Modelo Físico Projeto BD Operacional
M Desenvolvimento de um um Aplicativo de Banco de Dados (2)
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 de aplicações tradicionais de processamento de dados.
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çõesou 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.
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 aiDi. • 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.
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.
Modelo Relacional - Conceitos (3) numero_conta nome_agencia saldo Exemplo da relação ou tabela Conta.
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.
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
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.
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 para descrever esquematicamente uma relação (tabela). • 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)
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
Instância de Relação (2) Exemplo de uma Instância de uma Relação.
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 Jones Smith Curry Lindsay Main North North Park Harrison Rye Rye Pittsfield tuplas relação Cliente
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
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.
NumeroEmpregado PreNome SobreNome 100 Mary Abermany 700 Jerry Caldera 300 Alea Copley 40 Murugan Jackson Um Exemplo de uma Relação: Empregado (1)
EmployeeNumber Phone LastName 100 335-6421, 454-9744 Abermany 700 215-7789 Caldera 300 610-9850 Copley 40 299-9090 Jackson Um Exemplo de uma Tabela Não Relacional (1) Cells of the table hold a single value
EmployeeNumber Phone LastName 100 335-6421 Abermany 700 215-7789 Caldera 300 610-9850 Copley 100 335-6421 Abermany 40 299-9090 Jacksoni Um Exemplo de uma Tabela Não Relacional (2) No two rows may be identical
Relação Tupla Atributo Tabela Linha Coluna Arquivo Registro Campo Terminologia no Modelo Lógico Relacional • Sinônimos no Modelo Relacional:
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 as Bank(account-number,balance,customer-name,...)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.
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.
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
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.
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 selecionadas são denominadas de Chaves Alternativas.
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:
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.
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”).
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
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.
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”.