A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Modelo de Dados Relacional. Introdução O modelo relacional representa um banco de dados como um conjunto de relações Informalmente, uma relação é uma.

Apresentações semelhantes


Apresentação em tema: "Modelo de Dados Relacional. Introdução O modelo relacional representa um banco de dados como um conjunto de relações Informalmente, uma relação é uma."— Transcrição da apresentação:

1 Modelo de Dados Relacional

2 Introdução O modelo relacional representa um banco de dados como um conjunto de relações Informalmente, uma relação é uma tabela de valores, onde cada linha representa uma coleção de dados relacionados Cada linha de uma tabela representa um fato que tipicamente corresponde a uma entidade ou relacionamento do mundo real

3 Conceitos Básicos As linhas de uma relação (tabela) são chamadas de tuplas Ao cabeçalho de cada coluna dá-se o nome de atributo O conjunto de valores que pode aparecer em cada coluna é chamado de domínio

4 Conceitos Básicos Esquema de relação Descreve a relação R(A 1,A 2,...,A n ), onde: R Nome da relação A i Nome de um atributo n Grau da relação Cada Atributo A i e o nome de um papel desempenhado por algum dominio D no Esquema da relação R Exemplo: Student(Name, SSN, HomePhone, Address, OfficePhine, Age,GPA)

5 Conceitos Básicos Relação r(R) Conjunto de tuplas: r = {t 1,t 2,..., t m } Cada tupla é uma lista ordenada de valores: t =

6 Características de uma Relação As tuplas de uma relação não são ordenadas Registros em um arquivo são ordenados de acordo com a posição em que são armazenados no disco Benjamin Bayer Bluebonnet Lane null

7 Características de uma Relação Uma tupla é uma lista ordenada de valores O valor de cada atributo em uma tupla é atômico Atributos compostos e multivalorados não são permitidos O valor especial null é utilizado para representar valores não conhecidos ou não aplicáveis a uma determinada tupla

8 Restrições de Integridade Restrições de domínio Especificam que o valor de cada atributo A de uma relação deve ser um valor atômico do domínio dom(A) Restrições de chave Por defini ção todas as tuplas sao distintas Um conjunto de atributos SK de um esquema de relação R tal que, para duas tuplas quaisquer t 1 e t 2 de r(R), t 1 [SK] t 2 [SK] é uma super-chave de R Super-chave default: todos os atributos Uma chave de R é uma super-chave com a propriedade adicional de que nenhum de seus subconjuntos também seja uma super-chave de R {SSN,Name,Age} = super-chave; {SSN} = chave

9 Restrições de Integridade Restrições de chave Um esquema de relação pode ter mais de uma chave chaves candidatas Dentre as chaves candidatas de um esquema de relação, uma delas é indicada como chave primária e as demais constituem as chaves alternativas

10 Restrições de Integridade Restrições em valores null Especifica se a um atributo é permitido ter valores null Exemplo. Todo Estudante deve ter um nome válido, não-null

11 Esquema de um BD Relacional

12 Restrições de Integridade Além das restrições de domínio e de chave as seguintes restrições de integridade são parte do modelo relacional: Restrição de integridade de entidade Nenhum componente de uma chave primária pode ser nulo

13 Restrições de Integridade Restrição de integridade referencial Usada para manter a consistencia entre tuplas de duas relacoes Uma tupla em uma relação que se refere a outra relação deve referenciar uma tupla existente nesta outra relação Aparecem devido aos relacionamentos entre entidades Seja FK um conjunto de atributos de um esquema de relação R 1 definido sobre o mesmo domínio dos atributos da chave primária PK de outro esquema R 2. Então, para qualquer tupla t 1 de R 1 : t 1 [FK] = t 2 [PK], onde t 2 é uma tupla de R 2 ou t 1 [FK] é nulo

14 Restrições de integridade referencial

15 A restrição de integridade referencial pode ser expressa pela notação R 1 [FK] R 2 [PK], onde PK é a chave primária de R 2 e FK é a chave estrangeira de R 1 Exemplos: EMPLOYEE[DNO] DEPARTMENT[DNUMBER] WORKS_ON[ESSN] EMPLOYEE[SSN] WORKS_ON[PNO] PROJECT[PNUMBER] Restrições de Integridade

16 Instância de um BD Relacional Houston

17 Instância de um BD Relacional

18 Opções de Remoção da RIR A cada RIR R 1 [FK] R 2 [PK] é possível associar uma opção de remoção que especifica como a remoção de uma tupla de R 2 é executada em relação a R 1 As opções de remoção possíveis são: bloqueio propagação substituição por nulos Notação: R 1 [FK] R 2 [PK], onde op {b, p, n} op

19 Exemplos de RIR EMPLOYEE(FNAME,MINT,LNAME,SSN,BDATE,ADDRESS,SEX, SALARY,SUPERSSN,DNO) EMPLOYEE[SUPERSSN] EMPLOYEE[SSN] EMPLOYEE[DNO] DEPARTMENT[DNUMBER] DEPARTMENT[DNAME,DNUMBER,MGRSSN,MGRDATE] DEPARTMENT[MGRSSN] EMPLOYEE[SSN] DEPT_LOCATIONS(DNUMBER,LOCATION) DEPT_LOCATIONS[DNUMBER] DEPARTMENT[DNUMBER] n b b p

20 Restrições de integridade referencial com opções de remoção n p p b b b b b

21 Operações sobre Relações As operações sobre um BD relacional podem ser classificadas em: Operações de recuperação (consulta) Operações de atualização Operações de atualização (sobre tuplas): Inserção (insert) Remoção (delete) Modificação (modify)

22 Operações sobre Relações Operações de atualização Restrições de integridade não podem ser violadas Inserção Restrição de Dominio: valor fora do dominio Restrição de Chave: valor ja existe Restrição de integridade de entidade: se chave for null Restrição de integridade referencial: se chave estrangeira referencia tupla inexistente Ação default: rejeitar inserção (com explicação)

23 Operações sobre Relações Operações de atualização Restrições de integridade não podem ser violadas Remoção Restrição de integridade referencial: tupla deletada e referenciada por chaves estrangeiras Ação default: rejeitar inserção (com explicação) Segunda opção: propagar remoção de tuplas que violem uma restrição de integridade referencial Terceira Opcao: Modificar o valor da chave estrangeira para nulo

24 Operações sobre Relações Operações de atualização Restrições de integridade não podem ser violadas Modificação Modificar o valor de um atributo que nao e chave primaria ou estrangeira não causa problemas (se o valor for do dominio, e, se for null, que este valor seja permitido) Modificar a chave primaria e igual a remover uma tupla e inserir outra Modificar chave estrangeira: SGBD deve verificar se novo valor do atributo referencia tupla existente

25 A Linguagem SQL

26 Introdução Originalmente proposta para o System R desenvolvido nos laboratórios da IBM na década de 70 SEQUEL (Structured English QUEry Language) Objeto de um esforço de padronização coordenado pelo ANSI/ISO: SQL1 (SQL-86) SQL2 (SQL-92) SQL3 (SQL:1999)

27 Introdução SQL = LDD + LMD + LCD Principais comandos: LDD: CREATE SCHEMA / TABLE / VIEW DROP SCHEMA / TABLE / VIEW ALTER TABLE LMD: SELECT, INSERT, UPDATE, DELETE LCD: GRANT, REVOKE Conceitos: Table = Relação Row = tupla Column = atributo

28 Definição de Dados em SQL Comando CREATE SCHEMA CREATE SCHEMA COMPANY AUTHORIZATION JS; Comando CREATE TABLE CREATE TABLE ( );

29 Definição de Dados em SQL Exemplo de um comando CREATE TABLE CREATE TABLE EMPLOYEE (FNAMEVARCHAR(15)NOT NULL, MINITCHAR, LNAMEVARCHAR(15)NOT NULL, SSNCHAR(9)NOT NULL, … SUPERSSNCHAR(9), DNOINTNOT NULL, PRIMARY KEY (SSN), FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE (SSN) ON DELETE SET NULL, FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER));

30 Definição de Dados em SQL Opções de remoção (cláusula ON DELETE ): CASCADE (propagação) SET NULL (substituição por nulos) SET DEFAULT (substituição por um valor default) Opção default: bloqueio (RESTRICT) As mesmas opções se aplicam à cláusula ON UPDATE

31 Restrição de Integridade Referencial em SQL FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN) ON DELETE SET NULL FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER) FOREIGN KEY (DNUM) REFERENCES DEPARTMENT(DNUMBER) FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN) FOREIGN KEY (PNO) REFERENCES PROJECT(PNUMBER) FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN) ON DELETE CASCADE FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER) ON DELETE CASCADE FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN)

32 Restrição de Integridade Referencial em SQL

33 Definição de Dados em SQL Comandos DROP SCHEMA e DROP TABLE DROP SCHEMA COMPANY CASCADE (RESTRICT); RESTRICT: APENAS SE NAO TEM ELEMENTOS DROP TABLE DEPENDENT CASCADE (RESTRICT); RESTRICT: SE A TABELA NAO E REFERENCIADA EM QUALQUER RESTRICAO Comando ALTER TABLE ALTER TABLE COMPANY.EMPLOYEE ADD JOB VARCHAR(12); Inicialmente Null para todas as tuplas ALTER TABLE COMPANY.EMPLOYEE DROP ADDRESS CASCADE (RESTRICT); RESTRICT: SE NENHUMA VISAO OU RESTRICAO REFERENCIA A COLUNA

34 Consultas Básicas em SQL Formato básico do comando SELECT: SELECT FROM WHERE ; Exemplo: SELECT BDATE, ADDRESS FROM EMPLOYEE WHERE FNAME=John AND MINIT=B AND LNAME=Smith;

35 Consultas Básicas em SQL SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE, DEPARTMENT WHERE DNAME=Research AND DNO=DNUMBER; SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE PLOCATION=Stafford AND DNUM=DNUMBER AND MGRSSN=SSN; condição de seleçãocondição de junção

36 Consultas Básicas em SQL Atributos ambíguos e pseudônimos (alias) SELECT DNAME, DLOCATION FROM DEPARTMENT, DEPT_LOCATIONS WHERE DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER; SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.SUPERSSN=S.SSN;

37 Consultas Básicas em SQL Consultas sem a cláusula WHERE SELECT SSN, LNAME, SALARY FROM EMPLOYEE; SELECT LNAME, DNAME FROM EMPLOYEE, DEPARTMENT Atenção! Esta consulta corresponde a um produto cartesiano das tabelas EMPLOYEE e DEPARTMENT WHERE DNO=DNUMBER;

38 Consultas Básicas em SQL Manipulando tabelas como conjuntos SELECT SALARY FROM EMPLOYEE; SELECT DISTINCT SALARY FROM EMPLOYEE; (SELECT PNUMBER FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND LNAME=Smith) UNION (SELECT PNUMBER FROM PROJECT, WORKS_ON, EMPLOYEE WHERE PNUMBER=PNO AND ESSN=SSN AND LNAME=Smith); Não elimina linhas (tuplas) duplicatas

39 Consultas Complexas em SQL Consultas aninhadas SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME=Research); é equivalente à consulta SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME=Research;

40 Consultas Complexas em SQL Comparação de conjuntos SELECT DISTINCT PNUMBER FROM PROJECT WHERE PNUMBER IN (SELECT PNUMBER FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM =DNUMEBR AND MGRSSN=SSN AND LNAME=Smith) OR PNUMBER IN (SELECT PNO FROM WORKS_ON, EMPLOYEE WHERE ESSN=SSN AND LNAME=Smith);

41 Consultas Complexas em SQL Comparação de conjuntos SELECT DISTINCT ESSN FROM WORKS_ON WHERE (PNO, HOURS) IN (SELECT PNO, HOURS FROM WORKS_ON WHERE ESSN= ); SELECT LNAME, FNAME FROM EMPLOYEE WHERE SALARY > ALL (SELECT SALARY FROM EMPLOYEE WHERE DNO=5);

42 Consultas Complexas em SQL Uso da função EXISTS SELECT E.FNAME, E.LNAME FROM EMPLOYEE AS E WHERE EXISTS (SELECT * FROM DEPENDENT WHERE E.SSN=ESSN AND E.SEX=SEX AND E.FNAME=DEPENDENT_NAME); SELECT FNAME, LNAME FROM EMPLOYEE WHERE NOT EXISTS (SELECT * FROM DEPENDENT WHERE SSN=ESSN);

43 Consultas Complexas em SQL Uso do operador CONTAINS SELECT FNAME, LNAME FROM EMPLOYEE WHERE ((SELECT PNO FROM WORKS_ON WHERE SSN=ESSN) CONTAINS (SELECT PNUMBER FROM PROJECT WHERE DNUM=5));

44 Facilidades Adicionais Uso do operador JOIN SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE JOIN DEPARTMENT ON DNO=DNUMEBR) WHERE DNAME=Research; SELECT DNAME, DLOCATION FROM (DEPARTMENT NATURAL JOIN DEPT_LOCATIONS ); SELECT FNAME, LNAME, DEPENDENT_NAME FROM (EMPLOYEE LEFT OUTER JOIN DEPENDENT ON SSN=ESSN);

45 Facilidades Adicionais Agrupamento SELECT DNO, COUNT(*), AVG(SALARY) FROM EMPLOYEE GROUP BY DNO;

46 Facilidades Adicionais Agrupamento com a cláusula HAVING SELECT PNUMBER, PNAME, COUNT(*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME HAVING COUNT(*) > 2;

47

48

49 Atualizações em SQL Comando INSERT INSERT INTO EMPLOYEE VALUES (Richard,K,Marini, , , 98 Oak Forest, Katy, TX,37000, ,4); INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO) VALUES (Richard,Marini, ,4); INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO) SELECT * FROM INPUT;

50 Atualizações em SQL Comando DELETE DELETE FROM EMPLOYEE WHERE LNAME=Brown; DELETE FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME=Research); DELETE FROM EMPLOYEE;

51 Atualizações em SQL Comando UPDATE UPDATE PROJECT SET PLOCATION=Bellaire, DNUM=5 WHERE PNUMBER=10; UPDATE EMPLOYEE SET SALARY=SALARY*1.1 WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME=Research);

52 Projeto Lógico de Bancos de Dados Relacionais

53 Tópicos Processo de Projeto de Bancos de Dados Exemplo Preliminar Representação Relacional de Esquemas ER Implementação Usando SQL Referências Bibliográficas

54 Processo de Projeto de Bancos de Dados Caracterização Complexidade Multiplicidade de tarefas Fases Coleção e análise de requisitos Projeto conceitual Escolha de um sistema gerenciador de banco de dados Projeto lógico (ou mapeamento para o modelo de dados do SGBD escolhido) Projeto físico Implementação e tuning

55 Fases do Processo de Projeto de Bancos de Dados Mini-Mundo Análise de Requisitos Requisitos do BD Projeto Conceitual Esquema Conceitual (em um modelo de dados de alto nível) Projeto Lógico Esquema Lógico (em um modelo de dados lógico) Projeto Físico Esquema Físico (para um SGBD específico) Requisitos Funcionais Análise Funcional Especificação das Transações (em alto nível) Projeto das Aplicações Implementação Programas Independente de SGBD Específico para um SGBD

56 Abordagem ER para Projeto Lógico de Bancos de Dados Relacionais Mini-Mundo Análise de Requisitos Requisitos do BD Projeto Conceitual Esquema Conceitual (em um modelo de dados de alto nível) Projeto Lógico Esquema Lógico (em um modelo de dados lógico) Projeto Físico Esquema Físico (para um SGBD específico) Requisitos Funcionais Análise Funcional Especificação das Transações (em alto nível) Projeto das Aplicações Implementação Programas Independente de SGBD Específico para um SGBD Modelo ER Modelo Relacional SGBD Relacional

57 Aplicação exemplo Banco de Dados de uma companhia Organizada em departamentos que têm um nome e um número únicos e um empregado que gerencia o departamento. A data de quando o empregado começou a gerenciar o departamento deve ser registrada. Um departamento pode ter varias localizações Um departamento controla um número de projetos, cada qual com um nome e número únicos e uma única localização

58 Aplicação exemplo Banco de Dados de uma companhia Nós armazenamos para cada empregado seu nome, identidade, endereço, salário, sexo, e data de nascimento. Um empregado e assinalado a um departamento mas pode trabalhar em diversos projetos, os quais não são necessariamente controlados pelo mesmo departamento. Nos registramos o número de horas por semana que o empregado trabalha em cada projeto e o supervisor direto de cada empregado Nós mantemos registro para cada empregado, do numero de dependentes (para seguro) e para cada dependente o primeiro nome, sexo, data de nascimento e relacionamento com o empregado.

59 M

60

61

62 EMPLOYEE[SUPERSSN] EMPLOYEE[SSN] EMPLOYEE[DNO] DEPARTMENT[DNUMBER] DEPARTMENT[MGRSSN] EMPLOYEE[SSN] DEPT_LOCATIONS[DNUMBER] DEPARTMENT[DNUMBER] PROJECT[DNUM] DEPARTMENT[DNUMBER] WORKS_ON[ESSN] EMPLOYEE[SSN] WORKS_ON[PNO] PROJECT[PNUMBER] DEPENDENT[ESSN] EMPLOYEE[SSN] n b b b b b p p

63 Representação Relacional de Esquemas ER Estratégias de representação Mapeamento 1-1: cada tipo de entidade ou de relacionamento é representado por um esquema de relação separado Mapeamento otimizado: tipos de relacionamento funcionais (1:1 e N:1) e subtipos de entidade são colapsados e representados através de atributos em outro esquema de relação

64 Modelo Relacional Notação Esquema de relação R (A 1, A 2,…,A n ), onde A 1 é a chave primária de R Restrição de integridade referencial R 1 [X] R 2 [Y], onde X é um conjunto de atributos de R 1 que referencia a chave Y de R 2 Restrições estruturais op, onde e são expressões da álgebra relacional e op é um dos operadores,, ou

65 Exemplo de um Diagrama ER Empregado Projeto Dependente Departamento Trabalha-para Gerencia Participa-de Controla N N N N M NEmpNomeEmpSalário NomeDepDataNasc NDeptNomeDept Ramal NProjNomeProjLocalHsTrab Possui

66 Representação de Tipos de Entidade (sem atributos multivalorados) Empregado NEmp NomeEmp Salário Empregado (NEmp(nn),NomeEmp,Salário)

67 Representação de Tipos de Entidade (com atributos multivalorados) Departamento NDept NomeDept Ramal Departamento (NDept(nn),NomeDept) Ramal-Departamento (NDept(nn), Ramal(nn)) Ramal-Departamento [NDept] Departamento [NDept] p

68 Representação de Tipos de Entidade Fraca Empregado (NEmp(nn),...) Dependente (NEmp(nn),NomeDep(nn), DataNasc) Dependente [NEmp] Empregado [NEmp] p EmpregadoDependente 1 N NEmp NomeDepDataNasc Possui

69 Representação de Tipos de Relacionamento N:1 (mapeamento 1-1) EmpregadoDepartamento 1 N NEmp NDept Trabalha-para Empregado (NEmp(nn),...) Departamento (NDept(nn),...) Trabalha-para [NEmp] Empregado [NEmp] p Trabalha-para (NEmp(nn),NDept(nn)) Trabalha-para [NDept] Departamento [NDept] b NEmp (Empregado) = NEmp (Trabalha-para)

70 Representação de Tipos de Relacionamento N:1 (mapeamento otimizado) EmpregadoDepartamento 1 N NEmp NDept Trabalha-para Empregado (NEmp(nn),...,NDept(nn)) Departamento (NDept(nn),...) Empregado [NDept] Departamento [NDept] b

71 Representação de Tipos de Relacionamento 1:1 (mapeamento otimizado) EmpregadoDepartamento 1 1 NEmp NDept Gerencia Empregado (NEmp(nn),...) Departamento (NDept(nn),...,NEmp(nn)) Departamento [NEmp] Empregado [NEmp] b Chave alternativa

72 Representação de Tipos de Relacionamento M:N EmpregadoProjeto N M NEmp NProj Participa-de HsTrab Empregado (NEmp(nn),...) Projeto (NProj(nn),...) Participa-de [NEmp] Empregado [NEmp] Participa-de (NEmp(nn),NProj(nn), HsTrab) Participa-de [NProj] Projeto [NProj] p p

73 Implementação usando SQL SQL Composta de três sublinguagens: LDD, LMD e LCD Objeto de padronização pelo ANSI/ISO Comando básico de definição de dados: create table ( )

74 Definição de um Esquema de Relação em SQL create table Empregado (NEmp char(3) not null, NomeEmpchar(30) not null, Salariodecimal(6,2), NDeptchar(2) not null, primary key (NEmp), foreign key (NDept) references Departamento)

75 Restrições de Integridade em SQL Restrições de unicidade (unique constraints) que indicam a chave primária e as chaves alternativas de uma tabela Restrições de integridade referencial (referential constraints) que especificam as chaves estrangei- ras de uma tabela Restrições de verificação (check constraints) que especificam condições que devem ser satisfeitas por coluna/linhas de uma tabela ou entre tabelas

76 Restrições de Unicidade Chave primária primary key ( ) Chaves alternativas unique ( ) create table Departamento (... primary key (NDept), unique (NomeDept),...)

77 Restrições de Integridade Referencial foreign key ( ) references [( )] [on delete cascade | set null | set default] [on update cascade | set null | set default] create table Participa-de (... foreign key NEmp references Empregado on delete cascade)

78 Referências Batini, C.; Ceri, S.; Navathe, S.B. Conceptual Database Design: An Entity- Relationship Approach. Benjamin/Cummings, Redwood City, CA, Elmasri, R.; Navathe, S.B. Fundamentals of Database Systems, 3rd ed., Addison-Wesley, MA, Laender, A.H.F.; Casanova, M.A.; Carvalho, A.P.; Ridolfi, L.F. An Analysis of SQL Integrity Constraints from an Entity-Relationship Model Perspective. Information Systems 4, 3(1994), Silva, A.S.; Laender, A.H.F.; Casanova, M.A. An Approach to Maintaining Optimizing Relational Representations of Entity-Relationship Schemas. In Thalheim, B. (ed.). Conceptual Modeling -ER96. Springer-Verlag, Berlin, 1996, pp Silva, A.S.; Laender, A.H.F.; Casanova, M.A. On the Relational Representation of Specialization Structures. Information Systems 25, 6(2000),


Carregar ppt "Modelo de Dados Relacional. Introdução O modelo relacional representa um banco de dados como um conjunto de relações Informalmente, uma relação é uma."

Apresentações semelhantes


Anúncios Google