Vous êtes sur la page 1sur 134

Sistemas de Banco de Dados

Marcos Andr Gonalves

2007-2

Introduo

O que um banco de dados?

Definies Preliminares

[Chu, 1985]

Um banco de dados um conjunto de arquivos relacionados entre si Um banco de dados uma coleo de dados operacionais armazenados usados pelas aplicaes de uma determinada organizao

[Date, 2000]

Outra Definio de Banco de Dados

[Elmasri & Navathe, 2000]

Um banco de dados uma coleo de dados relacionados

Representando algum aspecto do mundo real (mini-mundo ou universo de discurso) Logicamente coerente, com algum significado Projetado, construdo e gerado (povoado) para uma aplicao especfica

Sistema de Gerncia de Banco de Dados

Um sistema de gerncia de banco de dados (SGBD) um conjunto de programas que permite a criar e manter um banco de dados Um banco de dados juntamente com o SGBD que o gerncia constitui um sistema de banco de dados

Usurios/Programadores

Consultas/Programas

SGBD
Catlogo
(Meta-Dados)

Banco de Dados

Sistema de Banco de Dados

Exemplo de um Banco de Dados


Mini-mundo: parte de uma universidade Algumas entidades:


Alunos Disciplinas Departamentos Disciplinas so oferecidas por Departamentos Alunos esto matriculados em Disciplinas

Alguns relacionamentos:

Exemplo de um Banco de Dados

Exemplo de um Banco de Dados

Caractersticas da Abordagem de BD

Auto-descrio dos dados


Isolamento entre programas e dados: abstrao de dados

Suporte a mltiplas vises dos dados


Compartilhamento de dados e processamento de transaes concorrentes

Usurios em um Ambiente de BD

Administradores de banco de dados Projetistas de banco de dados Analistas de sistema e programadores Usurios finais:

Usurios casuais Usurios leigos Usurios especializados

Vantagens da Utilizao de um SGBD


Controle de redundncia dos dados Controle de acesso (segurana) Armazenamento persistente dos dados

Existncia de mltiplas interfaces para os usurios


Representao de relacionamentos complexos entre os dados

Manuteno de restries de integridade


Recuperao de falhas

Implicaes da Abordagem de BD

Adoo/imposio de padres
Reduo do tempo de desenvolvimento das aplicaes

Flexibilidade
Atualidade da informao disponvel

Economia de escala

Quando no Utilizar um SGBD

Aplicaes simples e bem definidas onde no se espera mudanas Aplicaes de tempo-real Aplicaes onde no necessrio acesso multiusurio Motivos:

Investimento inicial alto Generalidade na definio e manipulao dos dados Custo adicional para prover outras facilidades funcionais (manuteno de segurana, controle de concorrncia, recuperao de falhas, etc.)

Modelo de Dados, Esquema e Instncia

Modelo de dados: Conjunto de conceitos usados


para descrever a estrutura de um banco de dados

Esquema: Descrio (textual ou grfica) da

Abstrao de dados Estrutura = tipos de dados + relacionamentos + restries (+operaes )

estrutura de um banco de dados de acordo com um determinado modelo de dados Instncia: Conjunto de dados armazenados em um banco de dados em um determinado instante de tempo

Modelo de Dados, Esquema e Instncia

Esquema do banco de dados de exemplo

Modelo de Dados, Esquema e Instncia

Instncia do banco de dados de exemplo

Relao entre Modelo de Dados, Esquema e Instncia

Modelo de Dados

Regras para estruturao dos dados

Esquema

Regras para verificao das instncias

Instncia

Modelo de Dados, Esquema e Instncia

Estado do Banco

Dados do banco em qualquer ponto do tempo Inicialmente vazio Muda freqentemente Validade parcialmente guarantida pelo SGBD

Esquema do Banco

Armazenado no catlogo Mudanas muito menos freqentes

Tipos de Modelo de Dados

Modelos conceituais

Utilizados para se descrever a estrutura de um banco de dados de uma forma mais prxima da percepo dos usurios (independente de aspectos de implementao) Ex. Conceitos: entidades, atributos, relacionamentos Exemplos:

Modelo entidade-relacionamento (ER) Modelo funcional Modelo orientado a objetos (OO)

Tipos de Modelo de Dados

Modelos representacionais (lgicos)

Utilizados para se descrever a estrutura de um banco de dados da forma como ser manipulado atravs de SGBD (mais dependente das estruturas fsicas de armazenamento de dados)

Exemplos:

Modelo relacional Modelo de rede (CODASYL) Modelo hierrquico

Tipos de Modelo de Dados

Modelos fsicos

Utilizados para descrever como os dados so fisicamente armazenados

Linguagens

Linguagem de definio de dados (LDD)

Usada para definir esquemas

Linguagem de manipulao de dados (LMD)

Recuperao, insero, remoo, modificao do BD

Linguagem de consulta

LMD de alto nivel usada em modo standalone

Exemplo: SQL

Utilitrios

Carregamento Backup

E.g. dumps do banco de dados

(Re-)Organizao de arquivos Monitoramento da performance

Classificao dos SGBDs

Quanto ao modelo de dados adotado:


Quanto ao nmero de usurios suportados:


Relacionais De rede Hierrquicos Orientados a objetos Objeto-relacionais


Mono-usurios Multi-usurios Centralizados Distribudos

Quanto localizao dos dados:


Exemplo de um BD Relacional
Empregado
NumEmp 032 074 089 092 112 121 130 NomeEmp J Silva M Reis C Melo R Silva R Pinto V Simo J Neves Salrio 380 400 520 480 390 905 640 Dept 21 25 28 25 21 28 28

Departamento

NumDept 21 25 28

NomeDept Pessoal Financeiro Tcnico

Ramal 142 143 144

Exemplo de um BD de Rede
Empregado Departamento
21 Pessoal 142 032 074 089 25 Financeiro 143 092 112 28 Tcnico 144 121 130 J Silva M Reis C Melo R Silva R Pinto V Simo J Neves 380 400 520 480 390 905 640

Exemplo de um BD Hierrquico
Departamento
21 Pessoal 142 25 Financeiro 143 28 Tcnico 144

Empregado
032 112 J Silva R Pinto 380 390 074 092 M Reis R Silva 400 480 089 121 130 C Melo V Simo J Neves 520 905 640

Modelo Entidade-Relacionamento

Processo de Projeto de Bancos de Dados


Mini-Mundo

Anlise de Requisitos

Requisitos Funcionais Anlise Funcional

Requisitos do BD Projeto Conceitual

Especificao das Transaes Esquema Conceitual (em alto nvel) (em um modelo de dados de alto nvel) Independente de SGBD Projeto Lgico

Especfico para um SGBD Projeto das Aplicaes

Esquema Lgico (em um modelo de dados lgico)

Projeto Fsico

Implementao

Esquema Fsico (para um SGBD especfico)

Programas

Aplicao exemplo

Banco de Dados de uma companhia

Organizada em departamentos que tm um nome e um nmero nicos e um empregado que gerencia o departamento. A data de quando o empregado comeou a gerenciar o departamento deve ser registrada. Um departamento pode ter varias localizaes Um departamento controla um nmero de projetos, cada qual com um nome e nmero nicos e uma nica localizao

Aplicao exemplo

Banco de Dados de uma companhia

Ns armazenamos para cada empregado seu nome, identidade, endereo, salrio, sexo, e data de nascimento. Um empregado assinalado a um departamento mas pode trabalhar em diversos projetos, os quais no so necessariamente controlados pelo mesmo departamento. Nos registramos o nmero de horas por semana que o empregado trabalha em cada projeto e o supervisor direto de cada empregado Ns 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.

Esquema conceitual

Modelo ER - Conceitos

Entidades:

Objetos do mundo real que so de interesse para alguma aplicao Propriedades utilizadas para descrever uma entidade
Name = John Address = 2311 Kirby, Houston, TX Age = 55 Home Phone = 713-749-2630

Atributos:

e1 (Employee)

Modelo ER - Conceitos

Tipos (classes) de atributo:

Simples ou compostos

Ex. Endereo (Endereo da Rua (nmero, nome da rua, nmero do apto), Cidade, Estado, CEP) Ex. Profisso Data de Nascimento Idade, Empregados trabalhando no departamento NumeroDeEmpregados No aplicvel

Monovalorados ou multivalorados

Armazenados ou derivados

Valores Null

Ex. Nmero do apartamento Ex. Telefone de casa

Desconhecido

Modelo ER - Conceitos

Tipo de entidade:

Define um conjunto de entidades que tm os mesmos atributos (propriedades) Descreve o esquema para um conjunto de entidades que compartilham a mesma estrutura Exemplos:

Employee, Company

Modelo ER - Conceitos

Chave de um tipo de entidade:

Atributo que possui valor nico para cada entidade (instncia)

Ex. Nome da companhia, identidade do empregado

Chave pode ser formada por vrios atributos: chave composta

Registro do Veiculo: Numero de Registro e Estado

Domnio de um atributo:

Conjunto de valores que podem ser atribudos a um atributo para cada entidade individualmente Ex. Idade do Empregado: (16,70); Nome do Empregado:String

Figura 3.5

Tipos de entidade e suas instncias

Esquema conceitual

Modelo ER - Conceitos

Relacionamentos:

Associaes entre duas ou mais entidades distintas (instncias) com um significado Exemplo:

Employee John Smith Works-for Department Research Employee Fred Brown Manages Department Research Departament Research Controls Project X

Modelo ER - Conceitos

Tipo de Relacionamento:

Define um conjunto de associaes entre n tipos de entidade E1, E2,...,En Exemplo:

Works-for entre Employee e Department

Employee

Works-for

Department

Modelo ER - Conceitos

Tipo de Relacionamento:

Matematicamente, um tipo de relacionamento R um conjunto de (instncias de) relacionamentos ri, onde cada ri associa n (instncias de) entidades (e1,...,en) e cada ej pertence a um tipo de entidade Ej R E1 x E2 x ... x En ri = (e1,...,en)
Nmero de tipos de entidade participantes de um tipo de relacionamento

Grau de um Tipo de Relacionamento

Instncias de um tipo de relacionamento binrio

Instncias de um tipo de relacionamento ternrio

Esquema conceitual

Modelo ER - Conceitos

Restries sobre tipos de relacionamento:


Limitam as possiveis combinaes de entidades que podem participar no conjunto de relacionamentos Cardinalidade: Especifica o nmero de instncias de um tipo de relacionamento do qual uma entidade pode participar Participao: Especifica se a existncia de uma entidade depende de seu relacionamento com outra entidade atravs de um tipo de relacionamento parcial ou total

Cardinalidade Estruturais

Ex. Todo empregado deve trabalhar para um departamento (total) Ex. Nem todo empregado gerencia um departamento (parcial)

Participao

Restries

Cardinalidade 1:1

Cardinalidade M:N

Esquema conceitual

Modelo ER - Conceitos

Papis e relacionamentos recursivos

Entidades atuam com um determinado papel Significado do papel dado por um nome, atribudo a cada tipo de entidade Nomes s so necessrios em tipos de relacionamento que envolvam mais de uma vez o mesmo tipo de entidade relacionamentos recursivos Exemplo: Supervision, onde Employee tem os papis de Supervisor e Supervisee

Figure 3.11

1 Supervisor 2 - Supervisee

Esquema conceitual

Modelo ER - Conceitos

Tipos de Entidade Fraca


Tipos de entidade que no tm chave prpria As instncias so identificadas atravs do relacionamento com entidades de outro tipo, chamado de dono ou identificador, juntamente com os valores de alguns atributos (chave parcial) Exemplo: Dependent

Esquema conceitual

Notao ER
(Resumo)

Modelo de Dados Relacional

Introduo

O modelo relacional representa um banco de dados como um conjunto de relaes


Informalmente, uma relao uma tabela de valores, onde cada linha representa uma coleo de dados relacionados Cada linha de uma tabela representa um fato que tipicamente corresponde a uma entidade ou relacionamento do mundo real

Conceitos Bsicos

As linhas de uma relao (tabela) so chamadas de tuplas Ao cabealho de cada coluna d-se o nome de atributo O conjunto de valores que pode aparecer em cada coluna chamado de domnio

Conceitos Bsicos

Esquema de relao

Descreve a relao

R(A1,A2, ...,An), onde:


R Nome da relao Ai Nome de um atributo n Grau da relao Cada Atributo Ai e o nome de um papel desempenhado por algum dominio D no Esquema da relao R Student(Name, SSN, OfficePhine, Age,GPA) HomePhone, Address,

Exemplo:

Conceitos Bsicos

Relao r(R)

Conjunto de tuplas: r = {t1,t2, ..., tm} Cada tupla uma lista ordenada de valores: t = <v1,v2, ..., vn>

Caractersticas de uma Relao

As tuplas ordenadas

de

uma

relao

no

so

Benjamin Bayer

305-61-2425

373-1616

2918 Bluebonnet Lane

null

19

3.21

Registros em um arquivo so ordenados de acordo com a posio em que so armazenados no disco

Caractersticas de uma Relao


Uma tupla uma lista ordenada de valores O valor de cada atributo em uma tupla atmico

Atributos compostos e multivalorados no so permitidos O valor especial null utilizado para representar valores no conhecidos ou no aplicveis a uma determinada tupla

Restries de Integridade

Restries de domnio

Especificam que o valor de cada atributo A de uma relao deve ser um valor atmico do domnio dom(A)

Restries de chave

Por definio todas as tuplas sao distintas


Um conjunto de atributos SK de um esquema de relao 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 tambm seja uma super-chave de R

{SSN,Name,Age} = super-chave; {SSN} = chave

Restries de Integridade

Restries de chave

Um esquema de relao pode ter mais de uma chave chaves candidatas Dentre as chaves candidatas de um esquema de relao, uma delas indicada como chave primria e as demais constituem as chaves alternativas

Restries de Integridade

Restries em valores null

Especifica se a um atributo permitido ter valores null Exemplo. Todo Estudante deve ter um nome vlido, no-null

Esquema de um BD Relacional

Restries de Integridade

Alm das restries de domnio e de chave as seguintes restries de integridade so parte do modelo relacional:

Restrio de integridade de entidade

Nenhum componente de uma chave primria pode ser nulo

Restries de Integridade

Restrio de integridade referencial


Usada para manter a consistencia entre tuplas de duas relacoes Uma tupla em uma relao que se refere a outra relao deve referenciar uma tupla existente nesta outra relao Aparecem devido aos relacionamentos entre entidades Seja FK um conjunto de atributos de um esquema de relao R1 definido sobre o mesmo domnio dos atributos da chave primria PK de outro esquema R2. Ento, para qualquer tupla t1 de R1:

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

Restries de integridade referencial

Restries de Integridade

A restrio de integridade referencial pode ser expressa pela notao


R1[FK] R2[PK],

onde PK a chave primria de R2 e FK a chave estrangeira de R1 Exemplos:


EMPLOYEE[DNO] DEPARTMENT[DNUMBER] WORKS_ON[ESSN] EMPLOYEE[SSN] WORKS_ON[PNO] PROJECT[PNUMBER]

Instncia de um BD Relacional

1 4

5
5 5 Houston

Instncia de um BD Relacional

Opes de Remoo da RIR

A cada RIR R1[FK] R2[PK] possvel associar uma opo de remoo que especifica como a remoo de uma tupla de R2 executada em relao a R1 As opes de remoo possveis so:

bloqueio propagao substituio por nulos


op

Notao: onde op {b, p, n}

R1[FK] R2[PK],

Exemplos de RIR
EMPLOYEE(FNAME,MINT,LNAME,SSN,BDATE,ADDRESS,SEX, SALARY,SUPERSSN,DNO)
n

EMPLOYEE[SUPERSSN] EMPLOYEE[SSN]
b

EMPLOYEE[DNO] DEPARTMENT[DNUMBER]

DEPARTMENT[DNAME,DNUMBER,MGRSSN,MGRDATE]
b

DEPARTMENT[MGRSSN] EMPLOYEE[SSN] DEPT_LOCATIONS(DNUMBER,LOCATION) p DEPT_LOCATIONS[DNUMBER] DEPARTMENT[DNUMBER]

p b b p

Restries de integridade referencial com opes de remoo

Operaes sobre Relaes

As operaes sobre um BD relacional podem ser classificadas em:


Operaes de recuperao (consulta) Operaes de atualizao Insero (insert) Remoo (delete) Modificao (modify)

Operaes de atualizao (sobre tuplas):


Operaes sobre Relaes

Operaes de atualizao

Restries de integridade no podem ser violadas

Insero

Restrio de Dominio: valor fora do dominio Restrio de Chave: valor ja existe Restrio de integridade de entidade: se chave for null Restrio de integridade referencial: se chave estrangeira referencia tupla inexistente Ao default: rejeitar insero (com explicao)

Operaes sobre Relaes

Operaes de atualizao

Restries de integridade no podem ser violadas

Remoo

Restrio de integridade referencial: tupla deletada e referenciada por chaves estrangeiras Ao default: rejeitar insero (com explicao) Segunda opo: propagar remoo de tuplas que violem uma restrio de integridade referencial Terceira Opcao: Modificar o valor da chave estrangeira para nulo

Operaes sobre Relaes

Operaes de atualizao

Restries de integridade no podem ser violadas

Modificao

Modificar o valor de um atributo que nao e chave primaria ou estrangeira no 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

A Linguagem SQL

Introduo

Originalmente proposta para o System R desenvolvido nos laboratrios da IBM na dcada de 70 SEQUEL (Structured English QUEry Language) Objeto de um esforo de padronizao coordenado pelo ANSI/ISO:

SQL1 (SQL-86) SQL2 (SQL-92) SQL3 (SQL:1999)

Introduo

SQL = LDD + LMD + LCD Principais comandos:

LDD:

LMD:

CREATE SCHEMA / TABLE / VIEW DROP SCHEMA / TABLE / VIEW ALTER TABLE SELECT, INSERT, UPDATE, DELETE GRANT, REVOKE Table = Relao Row = tupla Column = atributo

LCD:

Conceitos:

Definio de Dados em SQL

Comando CREATE SCHEMA

CREATE SCHEMA COMPANY AUTHORIZATION JS;


CREATE TABLE <nome da tabela> (<definies de colunas> <definio da chave primria> <definies de chaves alternativas> <definies de chaves estrangeiras>);

Comando CREATE TABLE

Definio de Dados em SQL

Exemplo de um comando CREATE TABLE


CREATE 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));

Definio de Dados em SQL

Opes de remoo (clusula ON DELETE):


CASCADE (propagao) SET NULL (substituio por nulos) SET DEFAULT (substituio por um valor default)
Opo default: bloqueio (RESTRICT)

As mesmas opes se aplicam clusula ON


UPDATE

Restrio de Integridade Referencial em SQL


FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN) ON DELETE SET NULL

FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER) FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN) FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER) ON DELETE CASCADE

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

Restrio de Integridade Referencial em SQL

Definio de Dados em SQL


Comandos DROP SCHEMA e DROP TABLE

DROP SCHEMA COMPANY CASCADE (RESTRICT);


RESTRICT: APENAS SE NAO TEM ELEMENTOS
RESTRICT: SE A TABELA NAO E REFERENCIADA EM QUALQUER RESTRICAO

DROP TABLE DEPENDENT CASCADE (RESTRICT);

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 REFERENCIA A COLUNA

VISAO

OU

RESTRICAO

Consultas Bsicas em SQL

Formato bsico do comando SELECT:


SELECT <lista de atributos> FROM <lista de tabelas> WHERE <condio>;

Exemplo:
SELECT BDATE, ADDRESS FROM EMPLOYEE WHERE FNAME=John AND MINIT=B AND LNAME=Smith;

Consultas Bsicas em SQL

SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE, DEPARTMENT WHERE DNAME=Research AND DNO=DNUMBER;
condio de seleo condio de juno

SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE PLOCATION=Stafford AND DNUM=DNUMBER AND MGRSSN=SSN;

Consultas Bsicas em SQL

Atributos ambguos e pseudnimos (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;

Consultas Bsicas em SQL

Consultas sem a clusula WHERE


SELECT SSN, LNAME, SALARY FROM EMPLOYEE;
SELECT LNAME, DNAME FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER;
Ateno! Esta consulta corresponde a um produto cartesiano das tabelas EMPLOYEE e DEPARTMENT

Consultas Bsicas em SQL

Manipulando tabelas como conjuntos


SELECT SALARY FROM EMPLOYEE; No elimina linhas (tuplas) duplicatas 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);

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;

Consultas Complexas em SQL

Comparao 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);

Consultas Complexas em SQL

Comparao de conjuntos
SELECT DISTINCT ESSN FROM WORKS_ON WHERE (PNO, HOURS) IN (SELECT PNO, HOURS FROM WORKS_ON WHERE ESSN=123456789); SELECT LNAME, FNAME FROM EMPLOYEE WHERE SALARY > ALL (SELECT SALARY

FROM EMPLOYEE WHERE DNO=5);

Consultas Complexas em SQL

Uso da funo 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);

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));

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);

Facilidades Adicionais

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

Facilidades Adicionais

Agrupamento com a clusula HAVING


SELECT PNUMBER, PNAME, COUNT(*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME HAVING COUNT(*) > 2;

3 3 3 3

Atualizaes em SQL

Comando INSERT
INSERT INTO EMPLOYEE VALUES (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;

Atualizaes 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;

Atualizaes 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);

Projeto Lgico de Bancos de Dados Relacionais

Tpicos

Processo de Projeto de Bancos de Dados Exemplo Preliminar Representao Relacional de Esquemas ER Implementao Usando SQL Referncias Bibliogrficas

Processo de Projeto de Bancos de Dados

Caracterizao

Fases

Complexidade Multiplicidade de tarefas Coleo e anlise de requisitos Projeto conceitual Escolha de um sistema gerenciador de banco de dados Projeto lgico (ou mapeamento para o modelo de dados do SGBD escolhido) Projeto fsico Implementao e tuning

Fases do Processo de Projeto de Bancos de Dados


Mini-Mundo Anlise de Requisitos

Requisitos Funcionais Anlise Funcional

Requisitos do BD Projeto Conceitual

Especificao das Transaes Esquema Conceitual (em alto nvel) (em um modelo de dados de alto nvel) Independente de SGBD

Projeto Lgico
Esquema Lgico (em um modelo de dados lgico) Projeto das Aplicaes Projeto Fsico

Especfico para um SGBD

Implementao

Esquema Fsico (para um SGBD especfico)

Programas

Abordagem ER para Projeto Lgico de Bancos de Dados Relacionais


Mini-Mundo Modelo ER Anlise de Requisitos

Requisitos Funcionais Anlise Funcional

Requisitos do BD Projeto Conceitual

Esquema Conceitual Especificao das Transaes (em alto nvel) (em um modelo de dados de alto nvel) Independente de SGBD

Projeto Lgico
Esquema Lgico (em um modelo de dados lgico) Projeto Fsico

Modelo Relacional

Especfico para um SGBD


Projeto das Aplicaes

SGBD Relacional

Implementao

Esquema Fsico (para um SGBD especfico)

Programas

Aplicao exemplo

Banco de Dados de uma companhia

Organizada em departamentos que tm um nome e um nmero nicos e um empregado que gerencia o departamento. A data de quando o empregado comeou a gerenciar o departamento deve ser registrada. Um departamento pode ter varias localizaes Um departamento controla um nmero de projetos, cada qual com um nome e nmero nicos e uma nica localizao

Aplicao exemplo

Banco de Dados de uma companhia

Ns armazenamos para cada empregado seu nome, identidade, endereo, salrio, sexo, e data de nascimento. Um empregado e assinalado a um departamento mas pode trabalhar em diversos projetos, os quais no so necessariamente controlados pelo mesmo departamento. Nos registramos o nmero de horas por semana que o empregado trabalha em cada projeto e o supervisor direto de cada empregado Ns 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.

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

Representao Relacional de Esquemas ER

Estratgias de representao

Mapeamento 1-1: cada tipo de entidade ou de relacionamento representado por um esquema de relao separado Mapeamento otimizado: tipos de relacionamento funcionais (1:1 e N:1) e subtipos de entidade so colapsados e representados atravs de atributos em outro esquema de relao

Modelo Relacional Notao

Esquema de relao R (A1,A ,,An), onde A1 a chave primria de R 2 Restrio de integridade referencial

R1 [X] R2 [Y], onde X um conjunto de atributos de R1 que referencia a chave Y de R2 <expr1> op <expr2>, onde <expr1> e <expr2> so expresses da lgebra relacional e op um dos operadores , , ou

Restries estruturais

Exemplo de um Diagrama ER
NEmp NomeEmp Salrio NDept Trabalha-para NomeDept Ramal

N Empregado 1

1 Departamento 1 1

1
Gerencia

Possui

Controla

N Dependente
Participa-de

N Projeto

NomeDep

DataNasc

HsTrab

NProj

NomeProj

Local

Representao de Tipos de Entidade (sem atributos multivalorados)

NEmp

Empregado

NomeEmp Salrio

Empregado (NEmp(nn),NomeEmp,Salrio)

Representao de Tipos de Entidade (com atributos multivalorados)


NDept

Departamento

NomeDept

Ramal

Departamento (NDept(nn),NomeDept)
Ramal-Departamento (NDept(nn), Ramal(nn))
p Ramal-Departamento [NDept] Departamento [NDept]

Representao de Tipos de Entidade Fraca


Empregado 1
Possui

Dependente

NEmp

NomeDep

DataNasc

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


p Dependente [NEmp] Empregado [NEmp]

Representao de Tipos de Relacionamento N:1 (mapeamento 1-1)


Empregado N
Trabalha-para

Departamento

NEmp

NDept

Empregado (NEmp(nn),...) Departamento (NDept(nn),...) Trabalha-para (NEmp(nn),NDept(nn))


p Trabalha-para [NEmp] Empregado [NEmp] b Departamento [NDept] Trabalha-para [NDept]

NEmp (Empregado) = NEmp (Trabalha-para)

Representao de Tipos de Relacionamento N:1 (mapeamento otimizado)


Empregado N 1 Departamento

Trabalha-para

NEmp

NDept

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

Departamento (NDept(nn),...)
b Empregado [NDept] Departamento [NDept]

Representao de Tipos de Relacionamento 1:1 (mapeamento otimizado)


1 1

Empregado

Gerencia

Departamento

NEmp

NDept

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


Chave alternativa
b Departamento [NEmp] Empregado [NEmp]

Representao de Tipos de Relacionamento M:N


Empregado

Participa-de

Projeto

NEmp

HsTrab

NProj

Empregado (NEmp(nn),...) Projeto (NProj(nn), ...)

Participa-de (NEmp(nn),NProj(nn), HsTrab)


p Participa-de [NEmp] Empregado [NEmp] p Participa-de [NProj] Projeto [NProj]

Implementao usando SQL

SQL

Composta de trs sublinguagens: LDD, LMD e LCD Objeto de padronizao pelo ANSI/ISO

Comando bsico de definio de dados:


create table <table name> (<column definitions> <primary key definition> <alternate key definitions> <foreign key definitions>)

Definio de um Esquema de Relao 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) Departamento)

references

Restries de Integridade em SQL

Restries de unicidade (unique constraints) que indicam a chave primria e as chaves alternativas de uma tabela Restries de integridade referencial (referential constraints) que especificam as chaves estrangeiras de uma tabela Restries de verificao (check constraints) que especificam condies que devem ser satisfeitas por coluna/linhas de uma tabela ou entre tabelas

Restries de Unicidade

Chave primria primary key (<attribute list>) Chaves alternativas unique (<attribute list>)
create table Departamento ( ... primary key (NDept), unique (NomeDept), ...)

Restries 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)

Referncias

Batini, C.; Ceri, S.; Navathe, S.B. Conceptual Database Design: An EntityRelationship 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 -ER96. 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.

Vous aimerez peut-être aussi