Post on 14-Nov-2018
BANCO DE DADOS IIConceitos Básicos
COTEMIG
Gerson Borges
gerson@cotemig.com.br
Revisão
O que é um banco de dados?
Definições Preliminares
[Chu, 1985]
Um banco de dados é um conjunto de arquivos relacionados entre si
[Date, 2000]
Um banco de dados é uma coleção de dados operacionais armazenados usados pelas aplicações de uma determinada organização
Outra Definição de Banco de Dados
[Elmasri & Navathe, 2000]
Um banco de dados é uma coleção de dadosrelacionados
Representando algum aspecto do mundo real (mini-mundo ou universo de discurso)
Logicamente coerente, com algum significado
Projetado, construído e gerado (“povoado”) para uma aplicação específica
Sistema de Gerência de Banco de Dados
Um sistema de gerência 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 gerência constitui um sistema de banco de dados
Consultas/Programas
SGBD
Bancode
Dados
Usuários/Programadores
Catálogo(Meta-Dados)
Sistema de Banco de Dados
Exemplo de um Banco de Dados
Mini-mundo: parte de uma universidade
Algumas entidades: Alunos
Disciplinas
Departamentos
Alguns relacionamentos: Disciplinas são oferecidas por Departamentos
Alunos estão matriculados em Disciplinas
Exemplo de um Banco de Dados
Exemplo de um Banco de Dados
Características da Abordagem de BD
Auto-descrição dos dados
Isolamento entre programas e dados: abstração de dados
Suporte a múltiplas visões dos dados
Compartilhamento de dados e processa-mento de transações concorrentes
Usuários em um Ambiente de BD
Administradores de banco de dados
Projetistas de banco de dados
Analistas de sistema e programadores
Usuários finais:
Usuários casuais
Usuários leigos
Usuários especializados
Vantagens da Utilização de um SGBD
Controle de redundância dos dados
Controle de acesso (segurança)
Armazenamento persistente dos dados
Existência de múltiplas interfaces para os usuários
Representação de relacionamentos complexos entre os dados
Manutenção de restrições de integridade
Recuperação de falhas
Implicações da Abordagem de BD
Adoção/imposição de padrões
Redução do tempo de desenvolvimento das aplicações
Flexibilidade
Atualidade da informação disponível
Economia de escala
Quando não Utilizar um SGBD
Aplicações simples e bem definidas onde não se espera mudanças
Aplicações de tempo-real
Aplicações onde não é necessário acesso multi-usuário
Motivos: Investimento inicial alto
Generalidade na definição e manipulação dos dados
Custo adicional para prover outras facilidades funcionais (manutenção de segurança, controle de concorrência, recuperação de falhas, etc.)
Modelo de Dados, Esquema e Instância
Modelo de dados: Conjunto de conceitos usados para descrever a estrutura de um banco de dados Abstração de dados Estrutura = tipos de dados + relacionamentos +
restrições (+operações )
Esquema: Descrição (textual ou gráfica) da estrutura de um banco de dados de acordo com um determinado modelo de dados
Instância: Conjunto de dados armazenados em um banco de dados em um determinado instante de tempo
Modelo de Dados, Esquema e Instância
Esquema do banco de dados de exemplo
Modelo de Dados, Esquema e Instância
Instância do banco de dados de exemplo
Relação entre Modelo de Dados, Esquema e Instância
Modelo de Dados
Esquema InstânciaRegras para
estruturação dosdados
Regras para verificação das
instâncias
Modelo de Dados, Esquema e Instância
Estado do Banco
Dados do banco em qualquer ponto do tempo
Inicialmente vazio
Muda freqüentemente
Validade parcialmente guarantida pelo SGBD
Esquema do Banco
Armazenado no catálogo
Mudanças muito menos freqüentes
Tipos de Modelo de Dados
Modelos conceituais Utilizados para se descrever a estrutura de um
banco de dados de uma forma mais próxima da percepção dos usuários (independente de aspectos de implementação)
Ex. Conceitos: entidades, atributos, relacionamentos
Exemplos: Modelo entidade-relacionamento (ER)
Modelo funcional
Modelo orientado a objetos (OO)
Tipos de Modelo de Dados
Modelos representacionais (lógicos) Utilizados para se descrever a estrutura de um banco
de dados da forma como será manipulado através de SGBD (mais dependente das estruturas físicas de armazenamento de dados)
Exemplos:
Modelo relacional
Modelo de rede (CODASYL)
Modelo hierárquico
Tipos de Modelo de Dados
Modelos físicos Utilizados para descrever como os dados são
fisicamente armazenados
Linguagens
Linguagem de definição de dados (LDD) Usada para definir esquemas
Linguagem de manipulação de dados(LMD) Recuperação, inserção, remoção, modificação
do BD
Linguagem de consulta LMD de alto nivel usada em modo “stand-
alone”
Exemplo: SQL
Utilitários
Carregamento
Backup
E.g. dumps do banco de dados
(Re-)Organização de arquivos
Monitoramento da performance
Classificação dos SGBDs Quanto ao modelo de dados adotado:
Relacionais De rede Hierárquicos Orientados a objetos Objeto-relacionais
Quanto ao número de usuários suportados: Mono-usuários Multi-usuários
Quanto à localização dos dados: Centralizados Distribuídos
Exemplo de um BD Relacional
NumEmp NomeEmp Salário Dept
032 J Silva 380 21
074 M Reis 400 25
089 C Melo 520 28
092 R Silva 480 25
112 R Pinto 390 21
121 V Simão 905 28
130 J Neves 640 28
NumDept NomeDept Ramal
21 Pessoal 142
25 Financeiro 143
28 Técnico 144
Empregado
Departamento
Exemplo de um BD de Rede
21 Pessoal 142
25 Financeiro 143
28 Técnico 144
032 J Silva 380
112 R Pinto 390
121 V Simão 905
130 J Neves 640
092 R Silva 480
089 C Melo 520
074 M Reis 400
Departamento
Empregado
Exemplo de um BD Hierárquico
21 Pessoal 142 25 Financeiro 143 28 Técnico 144
032 J Silva 380
112 R Pinto 390 121 V Simão 905
130 J Neves 640
092 R Silva 480
089 C Melo 520074 M Reis 400
Departamento
Empregado
Modelo Entidade-Relacionamento
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
Aplicação exemplo
Banco de Dados de uma companhia
Organizada em departamentos que têm um nome e umnúmero únicos e um empregado que gerencia odepartamento. A data de quando o empregadocomeçou a gerenciar o departamento deve serregistrada. Um departamento pode ter variaslocalizações
Um departamento controla um número de projetos,cada qual com um nome e número únicos e uma únicalocalização
Aplicação exemplo
Banco de Dados de uma companhia Nós armazenamos para cada empregado seu
nome, identidade, endereço, salário, sexo, e datade nascimento. Um empregado é assinalado a umdepartamento mas pode trabalhar em diversosprojetos, os quais não são necessariamentecontrolados pelo mesmo departamento. Nosregistramos o número de horas por semana que oempregado trabalha em cada projeto e osupervisor direto de cada empregado
Nós mantemos registro para cada empregado, donumero de dependentes (para seguro) e paracada dependente o primeiro nome, sexo, data denascimento e relacionamento com o empregado.
Esquema conceitual
M
Modelo ER - Conceitos
Entidades:
Objetos do mundo real que são de interessepara alguma aplicação
Atributos:
Propriedades utilizadas para descrever umaentidade
Name = John
Address = 2311 Kirby, Houston, TXAge = 55
Home Phone = 713-749-2630e1
(Employee)
Modelo ER - Conceitos Tipos (classes) de atributo:
Simples ou compostos Ex. Endereço (Endereço da Rua (número, nome da rua,
número do apto), Cidade, Estado, CEP)
Monovalorados ou multivalorados Ex. Profissão
Armazenados ou derivados Data de Nascimento Idade, Empregados trabalhando
no departamento NumeroDeEmpregados
Valores Null Não aplicável
Ex. Número do apartamento
Desconhecido Ex. Telefone de casa
Modelo ER - Conceitos
Tipo de entidade:
Define um conjunto de entidades que têmos mesmos atributos (propriedades)
Descreve o esquema para um conjunto deentidades que compartilham a mesmaestrutura
Exemplos:
Employee, Company
Modelo ER - Conceitos
Chave de um tipo de entidade: Atributo que possui valor único para cada entidade
(instância) Ex. Nome da companhia, identidade do empregado
Chave pode ser formada por vários atributos: chavecomposta Registro do Veiculo: Numero de Registro e Estado
Domínio de um atributo: Conjunto de valores que podem ser atribuídos a um
atributo para cada entidade individualmente
Ex. Idade do Empregado: (16,70); Nome doEmpregado:String
Figura 3.5
Tipos de entidade e suas instâncias
Esquema conceitual
M
Modelo ER - Conceitos
Relacionamentos:
Associações entre duas ou mais entidadesdistintas (instâncias) com um significado
Exemplo:
Employee John Smith Works-for DepartmentResearch
Employee Fred Brown Manages DepartmentResearch
Departament Research Controls Project X
Modelo ER - Conceitos
Tipo de Relacionamento:
Define um conjunto de associações entre ntipos 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 (instâncias de) relacionamentos ri,onde cada ri associa n (instâncias de) entidades(e1,...,en) e cada ej pertence a um tipo de entidadeEj
R E1 x E2 x ... x En
ri = (e1,...,en)
Grau de um Tipo de Relacionamento
Número de tipos de entidade participantes de umtipo de relacionamento
Instâncias de um tipo de relacionamento binário
Instâncias de um tipo de relacionamento ternário
Esquema conceitual
M
Modelo ER - Conceitos Restrições sobre tipos de relacionamento:
Limitam as possiveis combinações de entidades quepodem participar no conjunto de relacionamentos
Cardinalidade: Especifica o número de instâncias deum tipo de relacionamento do qual uma entidade podeparticipar
Participação: Especifica se a existência de umaentidade depende de seu relacionamento com outraentidade através de um tipo de relacionamento
parcial ou total Ex. Todo empregado deve trabalhar para um departamento
(total) Ex. Nem todo empregado gerencia um departamento (parcial)
Cardinalidade + Participação RestriçõesEstruturais
Cardinalidade 1:1
Cardinalidade M:N
Esquema conceitual
M
Modelo ER - Conceitos
Papéis e relacionamentos recursivos Entidades atuam com um determinado papel
Significado do papel é dado por um nome,atribuído a cada tipo de entidade
Nomes só são necessários em tipos derelacionamento que envolvam mais de uma vezo mesmo tipo de entidade relacionamentosrecursivos
Exemplo: Supervision, onde Employee tem ospapéis de Supervisor e Supervisee
Figure 3.11
1 – Supervisor2 - Supervisee
Esquema conceitual
M
Modelo ER - Conceitos
Tipos de Entidade Fraca
Tipos de entidade que não têm chave própria
As instâncias são identificadas através dorelacionamento com entidades de outro tipo,chamado de dono ou identificador, juntamentecom os valores de alguns atributos (chaveparcial)
Exemplo: Dependent
Esquema conceitual
M
Notação ER(Resumo)
Modelo de Dados Relacional
Introdução
O modelo relacional representa um banco dedados como um conjunto de relações
Informalmente, uma relação é uma tabela devalores, onde cada linha representa umacoleção de dados relacionados
Cada linha de uma tabela representa um “fato”que tipicamente corresponde a uma entidadeou relacionamento do mundo real
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 deatributo
O conjunto de valores que pode aparecer em cadacoluna é chamado de domínio
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 papeldesempenhado por algum dominio D no Esquema darelação R
Exemplo: Student(Name, SSN, HomePhone, Address,
OfficePhine, Age,GPA)
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>
Características de uma Relação As tuplas de uma relação não são
ordenadas
Registros em um arquivo são ordenados deacordo com a posição em que sãoarmazenados no disco
Benjamin Bayer 305-61-2425 373-1616 2918 Bluebonnet Lane null 19 3.21
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ãopermitidos
O valor especial null é utilizado para representar valoresnão conhecidos ou não aplicáveis a uma determinadatupla
Restrições de Integridade Restrições de domínio
Especificam que o valor de cada atributo A de umarelaçã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 derelação R tal que, para duas tuplas quaisquer t1 e t2 der(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 propriedadeadicional de que nenhum de seus subconjuntostambém seja uma super-chave de R
{SSN,Name,Age} = super-chave; {SSN} = chave
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 derelação, uma delas é indicada como chave primária e asdemais constituem as chaves alternativas
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
Esquema de um BD Relacional
Restrições de Integridade
Além das restrições de domínio e dechave as seguintes restrições deintegridade são parte do modelorelacional:
Restrição de integridade de entidade
Nenhum componente de uma chave primáriapode ser nulo
Restrições de Integridade Restrição de integridade referencial
Usada para manter a consistencia entre tuplas deduas relacoes
Uma tupla em uma relação que se refere a outrarelação deve referenciar uma tupla existente nestaoutra relação
Aparecem devido aos relacionamentos entreentidades
Seja FK um conjunto de atributos de um esquemade relação R1 definido sobre o mesmo domínio dosatributos 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
Restrições de integridade referencial
A restrição de integridade referencial pode serexpressa pela notação
R1[FK] R2[PK],
onde PK é a chave primária de R2 e FK é a chaveestrangeira de R1
Exemplos:
EMPLOYEE[DNO] DEPARTMENT[DNUMBER]
WORKS_ON[ESSN] EMPLOYEE[SSN]
WORKS_ON[PNO] PROJECT[PNUMBER]
Restrições de Integridade
Instância de um BD Relacional
1
4
5
5
5 Houston
Instância de um BD Relacional
Opções de Remoção da RIR
A cada RIR R1[FK] R2[PK] é possível associar umaopção de remoção que especifica como a remoçãode 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
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
Restrições de integridade referencial com opções de remoção
n
p
p
bb
bb
b
Operações sobre Relações
As operações sobre um BD relacional podem serclassificadas 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)
Operações sobre Relações
Operações de atualização
Restrições de integridade não podem servioladas
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 estrangeirareferencia tupla inexistente
Ação default: rejeitar inserção (com explicação)
Operações sobre Relações
Operações de atualização
Restrições de integridade não podem servioladas
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 violemuma restrição de integridade referencial
Terceira Opcao: Modificar o valor da chave estrangeirapara nulo
Operações sobre Relações
Operações de atualização
Restrições de integridade não podem servioladas
Modificação
Modificar o valor de um atributo que nao e’ chave primariaou estrangeira não causa problemas (se o valor for dodominio, e, se for null, que este valor seja permitido)
Modificar a chave primaria e’ igual a remover uma tupla einserir outra
Modificar chave estrangeira: SGBD deve verificar se novovalor do atributo referencia tupla existente
A Linguagem SQL
Introdução
Originalmente proposta para o System Rdesenvolvido nos laboratórios da IBM na décadade 70 SEQUEL (Structured English QUEry
Language)
Objeto de um esforço de padronizaçãocoordenado pelo ANSI/ISO:
SQL1 (SQL-86)
SQL2 (SQL-92)
SQL3 (SQL:1999)
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
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>);
Definição 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));
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
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)
Restrição de Integridade Referencial em SQL
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 EMQUALQUER RESTRICAO
Comando ALTER TABLE
ALTER TABLE COMPANY.EMPLOYEEADD JOB VARCHAR(12);
Inicialmente Null para todas as tuplas
ALTER TABLE COMPANY.EMPLOYEEDROP ADDRESS CASCADE (RESTRICT); RESTRICT: SE NENHUMA VISAO OU RESTRICAO
REFERENCIA A COLUNA
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, ADDRESSFROM EMPLOYEEWHERE FNAME=‘John’ AND
MINIT=‘B’ ANDLNAME=‘Smith’;
Consultas Básicas em SQL
SELECT FNAME, LNAME, ADDRESSFROM EMPLOYEE, DEPARTMENTWHERE DNAME=‘Research’ AND DNO=DNUMBER;
SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATEFROM PROJECT, DEPARTMENT, EMPLOYEEWHERE PLOCATION=‘Stafford’ AND
DNUM=DNUMBER AND MGRSSN=SSN;
condição de seleção condição de junção
Consultas Básicas em SQL
Atributos ambíguos e pseudônimos (alias)
SELECT DNAME, DLOCATION
FROM DEPARTMENT, DEPT_LOCATIONSWHERE DEPARTMENT.DNUMBER =
DEPT_LOCATIONS.DNUMBER;
SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME
FROM EMPLOYEE AS E, EMPLOYEE AS SWHERE E.SUPERSSN=S.SSN;
Consultas Básicas em SQL
Consultas sem a cláusula WHERE
SELECT SSN, LNAME, SALARY
FROM EMPLOYEE;
SELECT LNAME, DNAMEFROM EMPLOYEE, DEPARTMENT
Atenção! Esta consulta corresponde a um produto cartesiano das tabelas EMPLOYEE e DEPARTMENT
WHERE DNO=DNUMBER;
Consultas Básicas em SQL Manipulando tabelas como conjuntos
SELECT SALARYFROM EMPLOYEE;
SELECT DISTINCT SALARYFROM EMPLOYEE;
(SELECT PNUMBERFROM PROJECT, DEPARTMENT, EMPLOYEEWHERE DNUM=DNUMBER AND MGRSSN=SSN AND
LNAME=‘Smith’)UNION(SELECT PNUMBERFROM PROJECT, WORKS_ON, EMPLOYEEWHERE PNUMBER=PNO AND ESSN=SSN AND
LNAME=‘Smith’);
Não elimina linhas (tuplas) duplicatas
Consultas Complexas em SQL
Consultas aninhadas
SELECT FNAME, LNAME, ADDRESSFROM EMPLOYEEWHERE DNO IN (SELECT DNUMBER
FROM DEPARTMENTWHERE DNAME=‘Research’);
é equivalente à consulta
SELECT FNAME, LNAME, ADDRESSFROM EMPLOYEE, DEPARTMENTWHERE DNO=DNUMBER AND DNAME=‘Research’;
Consultas Complexas em SQL Comparação de conjuntos
SELECT DISTINCT PNUMBERFROM PROJECTWHERE PNUMBER IN (SELECT PNUMBER
FROM PROJECT, DEPARTMENT,EMPLOYEE
WHERE DNUM =DNUMEBR ANDMGRSSN=SSN ANDLNAME=‘Smith’)
ORPNUMBER IN (SELECT PNO
FROM WORKS_ON, EMPLOYEEWHERE ESSN=SSN AND
LNAME=‘Smith’);
Consultas Complexas em SQL Comparação de conjuntos
SELECT DISTINCT ESSNFROM WORKS_ONWHERE (PNO, HOURS) IN (SELECT PNO, HOURS
FROM WORKS_ONWHERE ESSN=‘123456789’);
SELECT LNAME, FNAMEFROM EMPLOYEEWHERE SALARY > ALL (SELECT SALARY
FROM EMPLOYEEWHERE DNO=5);
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 ANDE.FNAME=DEPENDENT_NAME);
SELECT FNAME, LNAMEFROM EMPLOYEEWHERE NOT EXISTS (SELECT *
FROM DEPENDENTWHERE SSN=ESSN);
Consultas Complexas em SQL Uso do operador CONTAINS
SELECT FNAME, LNAMEFROM EMPLOYEEWHERE ((SELECT PNO
FROM WORKS_ONWHERE SSN=ESSN)CONTAINS(SELECT PNUMBERFROM PROJECTWHERE DNUM=5));
Facilidades Adicionais
Uso do operador JOIN
SELECT FNAME, LNAME, ADDRESSFROM (EMPLOYEE JOIN DEPARTMENT
ON DNO=DNUMEBR)WHERE DNAME=‘Research’;
SELECT DNAME, DLOCATION
FROM (DEPARTMENT NATURAL JOIN DEPT_LOCATIONS);
SELECT FNAME, LNAME, DEPENDENT_NAMEFROM (EMPLOYEE LEFT OUTER JOIN DEPENDENT
ON SSN=ESSN);
Facilidades Adicionais
Agrupamento
SELECT DNO, COUNT(*), AVG(SALARY)FROM EMPLOYEEGROUP BY DNO;
Facilidades Adicionais
Agrupamento com a cláusula HAVING
SELECT PNUMBER, PNAME, COUNT(*)FROM PROJECT, WORKS_ONWHERE PNUMBER=PNOGROUP BY PNUMBER, PNAMEHAVING COUNT(*) > 2;
3
3
3
3
Atualizações 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;
Atualizações em SQL
Comando DELETE
DELETE FROM EMPLOYEEWHERE LNAME=‘Brown’;
DELETE FROM EMPLOYEEWHERE DNO IN (SELECT DNUMBER
FROM DEPARTMENTWHERE DNAME=‘Research’);
DELETE FROM EMPLOYEE;
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 DEPARTMENTWHERE DNAME=‘Research’);
Projeto Lógico de Bancos de Dados Relacionais
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
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”
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
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
Aplicação exemplo
Banco de Dados de uma companhia
Organizada em departamentos que têm um nome e umnúmero únicos e um empregado que gerencia odepartamento. A data de quando o empregadocomeçou a gerenciar o departamento deve serregistrada. Um departamento pode ter variaslocalizações
Um departamento controla um número de projetos,cada qual com um nome e número únicos e uma únicalocalização
Aplicação exemplo
Banco de Dados de uma companhia Nós armazenamos para cada empregado seu
nome, identidade, endereço, salário, sexo, e datade nascimento. Um empregado e’ assinalado a umdepartamento mas pode trabalhar em diversosprojetos, os quais não são necessariamentecontrolados pelo mesmo departamento. Nosregistramos o número de horas por semana que oempregado trabalha em cada projeto e osupervisor direto de cada empregado
Nós mantemos registro para cada empregado, donumero de dependentes (para seguro) e paracada dependente o primeiro nome, sexo, data denascimento e relacionamento com o empregado.
M
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
Representação Relacional de Esquemas ER
Estratégias de representação
Mapeamento 1-1: cada tipo de entidade ou derelacionamento é representado por um esquema derelação separado
Mapeamento otimizado: tipos de relacionamentofuncionais (1:1 e N:1) e subtipos de entidade sãocolapsados e representados através de atributos em
outro esquema de relação
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 atributosde R1 que referencia a chave Y de R2
Restrições estruturais
<expr1> op <expr2>, onde <expr1> e <expr2> sãoexpressões da álgebra relacional e op é um dosoperadores , , ou
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
Representação de Tipos de Entidade (sem atributos multivalorados)
Empregado
NEmp
NomeEmp
Salário
Empregado (NEmp(nn),NomeEmp,Salário)
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
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
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)
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
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
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
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>)
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) referencesDepartamento)
Restrições de Integridade em SQL
Restrições de unicidade (unique constraints) queindicam a chave primária e as chaves alternativasde uma tabela
Restrições de integridade referencial (referentialconstraints) que especificam as chaves estrangei-ras de uma tabela
Restrições de verificação (check constraints) queespecificam condições que devem ser satisfeitaspor coluna/linhas de uma tabela ou entre tabelas
Restrições de Unicidade
Chave primária
primary key (<attribute list>)
Chaves alternativas
unique (<attribute list>)
create table Departamento
( ...
primary key (NDept),
unique (NomeDept),
...)
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)
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 ofSQL 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 MaintainingOptimizing Relational Representations of Entity-Relationship Schemas. InThalheim, 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 Representationof Specialization Structures. Information Systems 25, 6(2000), 399-415.