Modelo de Dados Relacional. Introdução O modelo relacional representa um banco de dados como um...

78
Modelo de Dados Relacional

Transcript of Modelo de Dados Relacional. Introdução O modelo relacional representa um banco de dados como um...

Page 1: 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.

Modelo de Dados Relacional

Page 2: 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.

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

Page 3: 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.

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

Page 4: 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.

Conceitos Básicos Esquema de relação

Descreve a relação R(A1,A2, ...,An), onde:

R Nome da relação Ai Nome de um atributo n Grau da relação Cada Atributo Ai 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)

Page 5: 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.

Conceitos Básicos Relação r(R)

Conjunto de tuplas: r = {t1,t2, ..., tm} Cada tupla é uma lista ordenada de

valores: t = <v1,v2, ..., vn>

Page 6: 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.

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 305-61-2425 373-1616 2918 Bluebonnet Lane null 19 3.21

Page 7: 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.

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

Page 8: 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.

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 t1 e t2 de r(R), t1[SK] t2[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

Page 9: 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.

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

Page 10: 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.

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

Page 11: 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.

Esquema de um BD Relacional

Page 12: 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.

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

Page 13: 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.

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 R1 definido sobre o mesmo domínio dos atributos da chave primária PK de outro esquema R2. Então, para qualquer tupla t1 de R1:

t1[FK] = t2[PK], onde t2 é uma tupla de R2 ou t1[FK] é nulo

Page 14: 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.

Restrições de integridade referencial

Page 15: 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.

A restrição de integridade referencial pode ser expressa pela notação

R1[FK] R2[PK],

onde PK é a chave primária de R2 e FK é a chave estrangeira de R1

Exemplos:

EMPLOYEE[DNO] DEPARTMENT[DNUMBER]

WORKS_ON[ESSN] EMPLOYEE[SSN]WORKS_ON[PNO] PROJECT[PNUMBER]

Restrições de Integridade

Page 16: 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.

Instância de um BD Relacional

1

4

5

5

5 Houston

Page 17: 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.

Instância de um BD Relacional

Page 18: 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.

Opções de Remoção da RIR A cada RIR R1[FK] R2[PK] é possível associar

uma opção de remoção que especifica como a remoção de uma tupla de R2 é executada em relação a R1

As opções de remoção possíveis são: bloqueio propagação substituição por nulos

Notação: R1[FK] R2[PK],

onde op {b, p, n}

op

Page 19: 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.

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

Page 20: 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.

Restrições de integridade referencial com opções de remoção

n

p

p

bb

bb

b

Page 21: 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.

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)

Page 22: 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.

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)

Page 23: 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.

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

Page 24: 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.

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

Page 25: 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.

A Linguagem SQL

Page 26: 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.

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)

Page 27: 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.

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

Page 28: 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.

Definição de Dados em SQL Comando CREATE SCHEMA

CREATE SCHEMA COMPANY AUTHORIZATION JS;

Comando CREATE TABLE CREATE TABLE <nome da tabela>

(<definições de colunas> <definição da chave primária> <definições de chaves alternativas> <definições de chaves estrangeiras>);

Page 29: 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.

Definição de Dados em SQL Exemplo de um comando CREATE TABLECREATE TABLE EMPLOYEE

(FNAME VARCHAR(15) NOT NULL, MINIT CHAR, LNAME VARCHAR(15) NOT NULL, SSN CHAR(9) NOT NULL, … SUPERSSN CHAR(9), DNO INT NOT NULL, PRIMARY KEY (SSN), FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE (SSN) ON DELETE SET NULL, FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER));

Page 30: 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.

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

Page 31: 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.

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)

Page 32: 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.

Restrição de Integridade Referencial em SQL

Page 33: 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.

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

Page 34: 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.

Consultas Básicas em SQL Formato básico do comando SELECT:

SELECT <lista de atributos> FROM <lista de tabelas>

WHERE <condição>; Exemplo: SELECT BDATE, ADDRESS

FROM EMPLOYEEWHERE FNAME=‘John’ AND MINIT=‘B’ AND LNAME=‘Smith’;

Page 35: 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.

Consultas Básicas em SQL SELECT FNAME, LNAME, ADDRESS

FROM EMPLOYEE, DEPARTMENTWHERE 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ção

condição de junção

Page 36: 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.

Consultas Básicas em SQL Atributos ambíguos e pseudônimos (alias)

SELECT DNAME, DLOCATIONFROM DEPARTMENT, DEPT_LOCATIONSWHERE DEPARTMENT.DNUMBER =

DEPT_LOCATIONS.DNUMBER;

SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAMEFROM EMPLOYEE AS E, EMPLOYEE AS SWHERE E.SUPERSSN=S.SSN;

Page 37: 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.

Consultas Básicas em SQL Consultas sem a cláusula WHERE

SELECT SSN, LNAME, SALARYFROM EMPLOYEE;

SELECT LNAME, DNAMEFROM EMPLOYEE, DEPARTMENT

Atenção! Esta consulta corresponde a um produto cartesiano das tabelas EMPLOYEE e DEPARTMENT

WHERE DNO=DNUMBER;

Page 38: 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.

Consultas Básicas em SQL Manipulando tabelas como conjuntosSELECT SALARY FROM EMPLOYEE;

SELECT DISTINCT SALARYFROM 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

Page 39: 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.

Consultas Complexas em SQL Consultas aninhadasSELECT FNAME, LNAME, ADDRESSFROM EMPLOYEEWHERE DNO IN (SELECT DNUMBER

FROM DEPARTMENT WHERE DNAME=‘Research’);

é equivalente à consulta

SELECT FNAME, LNAME, ADDRESSFROM EMPLOYEE, DEPARTMENTWHERE DNO=DNUMBER AND DNAME=‘Research’;

Page 40: 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.

Consultas Complexas em SQL Comparação de conjuntos

SELECT DISTINCT PNUMBERFROM PROJECTWHERE 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’);

Page 41: 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.

Consultas Complexas em SQL Comparação de conjuntos

SELECT DISTINCT ESSNFROM WORKS_ONWHERE (PNO, HOURS) IN (SELECT PNO, HOURS

FROM WORKS_ON WHERE

ESSN=‘123456789’);SELECT LNAME, FNAMEFROM EMPLOYEEWHERE SALARY > ALL (SELECT SALARY

FROM EMPLOYEE WHERE DNO=5);

Page 42: 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.

Consultas Complexas em SQL Uso da função EXISTS

SELECT E.FNAME, E.LNAMEFROM EMPLOYEE AS EWHERE EXISTS (SELECT *

FROM DEPENDENTWHERE E.SSN=ESSN AND

E.SEX=SEX AND E.FNAME=DEPENDENT_NAME);

SELECT FNAME, LNAMEFROM EMPLOYEE WHERE NOT EXISTS (SELECT *

FROM DEPENDENT WHERE SSN=ESSN);

Page 43: 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.

Consultas Complexas em SQL Uso do operador CONTAINS

SELECT FNAME, LNAMEFROM EMPLOYEE WHERE ((SELECT PNO

FROM WORKS_ON WHERE SSN=ESSN)

CONTAINS (SELECT PNUMBER FROM PROJECT

WHERE DNUM=5));

Page 44: 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.

Facilidades Adicionais Uso do operador JOIN

SELECT FNAME, LNAME, ADDRESSFROM (EMPLOYEE JOIN DEPARTMENT ON DNO=DNUMEBR)WHERE DNAME=‘Research’;

SELECT DNAME, DLOCATIONFROM (DEPARTMENT NATURAL JOIN DEPT_LOCATIONS);

SELECT FNAME, LNAME, DEPENDENT_NAMEFROM (EMPLOYEE LEFT OUTER JOIN DEPENDENT ON SSN=ESSN);

Page 45: 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.

Facilidades Adicionais Agrupamento

SELECT DNO, COUNT(*), AVG(SALARY)FROM EMPLOYEEGROUP BY DNO;

Page 46: 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.

Facilidades Adicionais Agrupamento com a cláusula HAVING

SELECT PNUMBER, PNAME, COUNT(*)FROM PROJECT, WORKS_ONWHERE PNUMBER=PNOGROUP BY PNUMBER, PNAMEHAVING COUNT(*) > 2;

Page 47: 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.
Page 48: 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.

3333

Page 49: 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.

Atualizações em SQL Comando INSERT

INSERT INTO EMPLOYEEVALUES (‘Richard’,‘K’,‘Marini’,‘653258653’,‘1962-12-30’, ’98 Oak Forest, Katy, TX’,37000,’987654321’,4);

INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO)VALUES (‘Richard’,‘Marini’,‘653258653’,4);

INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO)SELECT * FROM INPUT;

Page 50: 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.

Atualizações em SQL Comando DELETE

DELETE FROM EMPLOYEEWHERE LNAME=‘Brown’;

DELETE FROM EMPLOYEEWHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT

WHERE DNAME=‘Research’);

DELETE FROM EMPLOYEE;

Page 51: 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.

Atualizações em SQL Comando UPDATE

UPDATE PROJECTSET PLOCATION=‘Bellaire’, DNUM=5WHERE PNUMBER=10;

UPDATE EMPLOYEESET SALARY=SALARY*1.1WHERE DNO IN (SELECT DNUMBER

FROM DEPARTMENT WHERE

DNAME=‘Research’);

Page 52: 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.

Projeto Lógico de Bancos de Dados Relacionais

Page 53: 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.

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

Page 54: 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.

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”

Page 55: 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.

Fases do Processo de Projeto de Bancos de Dados

Mini-Mundo

Análise deRequisitos

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

Page 56: 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.

Abordagem ER para Projeto Lógico de Bancos de DadosRelacionais

Mini-Mundo

Análise deRequisitos

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

ModeloRelacional

SGBDRelacional

Page 57: 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.

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

Page 58: 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.

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.

Page 59: 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.

M

Page 60: 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.
Page 61: 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.
Page 62: 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.

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

Page 63: 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.

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

Page 64: 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.

Modelo RelacionalNotação

Esquema de relação R (A1,A2,…,An), onde A1 é a chave primária de R

Restrição de integridade referencial R1 [X] R2 [Y], onde X é um conjunto de

atributos de R1 que referencia a chave Y de R2

Restrições estruturais <expr1> op <expr2>, onde <expr1> e <expr2>

são expressões da álgebra relacional e op é um dos operadores , , ou

Page 65: 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.

Exemplo de um Diagrama ER

Empregado

ProjetoDependente

Departamento

Trabalha-para

Gerencia

Participa-de

Controla

N 1

1 11 1

N NN

M

NEmp NomeEmp Salário

NomeDep DataNasc

NDept NomeDept Ramal

NProj NomeProj LocalHsTrab

Possui

Page 66: 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.

Representação de Tipos de Entidade (sem atributos multivalorados)

Empregado

NEmp

NomeEmp

Salário

Empregado (NEmp(nn),NomeEmp,Salário)

Page 67: 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.

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

Page 68: 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.

Representação de Tipos de Entidade Fraca

Empregado (NEmp(nn),...)

Dependente (NEmp(nn),NomeDep(nn), DataNasc)

Dependente [NEmp] Empregado [NEmp]p

Empregado Dependente1 N

NEmp NomeDep DataNasc

Possui

Page 69: 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.

Representação de Tipos de Relacionamento N:1(mapeamento 1-1)

Empregado Departamento1N

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)

Page 70: 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.

Representação de Tipos de Relacionamento N:1(mapeamento otimizado)

Empregado Departamento1N

NEmp NDept

Trabalha-para

Empregado (NEmp(nn),...,NDept(nn))

Departamento (NDept(nn),...)

Empregado [NDept] Departamento [NDept]b

Page 71: 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.

Representação de Tipos de Relacionamento 1:1(mapeamento otimizado)

Empregado Departamento11

NEmp NDept

Gerencia

Empregado (NEmp(nn),...)

Departamento (NDept(nn),...,NEmp(nn))

Departamento [NEmp] Empregado [NEmp]b

Chave alternativa

Page 72: 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.

Representação de Tipos de Relacionamento M:N

Empregado ProjetoNM

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

Page 73: 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.

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 <table name> (<column definitions> <primary key definition> <alternate key definitions> <foreign key definitions>)

Page 74: 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.

Definição de um Esquema de Relação em SQL

create table Empregado

(NEmp char(3) not null, NomeEmp char(30) not null, Salario decimal(6,2), NDept char(2) not null, primary key (NEmp), foreign key (NDept) references

Departamento)

Page 75: 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.

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

Page 76: 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.

Restrições de Unicidade

Chave primária primary key (<attribute list>) Chaves alternativas unique (<attribute list>)

create table Departamento ( ...

primary key (NDept), unique (NomeDept), ...)

Page 77: 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.

Restrições de Integridade Referencial

foreign key (<attribute list>)references <table name> [(<attribute list>)][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)

Page 78: 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.

Referências Batini, C.; Ceri, S.; Navathe, S.B. Conceptual Database Design: An

Entity-Relationship Approach. Benjamin/Cummings, Redwood City, CA, 1992.

Elmasri, R.; Navathe, S.B. Fundamentals of Database Systems, 3rd ed., Addison-Wesley, MA, 2000.

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), 423-464.

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 -ER’96. Springer-Verlag, Berlin, 1996, pp. 242-256.

Silva, A.S.; Laender, A.H.F.; Casanova, M.A. On the Relational Representation of Specialization Structures. Information Systems 25, 6(2000), 399-415.