Escolar Documentos
Profissional Documentos
Cultura Documentos
• Introdução
• Conceitos básicos,
básicos características da abordagem de banco
DCC011 de dados, modelos de dados, esquemas e instâncias,
arquitetura de um sistema de banco de dados,
Introdução a Banco de Dados componentes de um sistema de gerência de banco de
dados.
SQL gerenciar tabelas e dados
• Modelos
M d l d de d
dados
d e lilinguagens
Mirella M. Moro
Departamento de Ciência da Computação
• Modelo entidade‐relacionamento (ER), modelo relacional,
Universidade Federal de Minas Gerais
álgebra relacional,
relacional SQL.
mirella@dcc.ufmg.br • Projeto de bancos de dados
• Fases do projeto de bancos de dados
dados, projeto lógico de
bancos de dados relacionais, normalização.
• Novas Tecnologias
g e Aplicações
p ç de Banco de Dados
1. 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:
SQL • SQL1 (SQL‐86)
(SQL 86)
1. Introdução • SQL2 (SQL‐92)
2. Definição de Dados • SQL3 (SQL:1999)
3. Definição de Restrições de Integridade
Introdução Introdução
• SQL é considerada a razão principal para o sucesso •SQL = LDD + LMD + LCD
de bancos de dados relacionais comerciais
•Principais comandos:
• Tornou‐se a linguagem padrão para bases • LDD – Ling. Definição de Dados
relacionais • CREATE SCHEMA / TABLE / VIEW
• Funciona entre diferentes produtos • DROP SCHEMA / TABLE / VIEW
• ALTER TABLE
• Embedded
E b dd d SQL:
SQL Java,
J C/C++,
C/C Cobol…
C b l
• LMD – Ling. Manipulação de Dados
• SELECT, INSERT, UPDATE, DELETE
• LCD – Ling. Controle de Dados
• GRANT, REVOKE
Matr
8 H F SI •DBA: cria esquemas, tabelas, e demais
9 I M SI partes do banco de dados
10 J M ECA
DCC011 ‐ profa. Mirella M. Moro 7 DCC011 ‐ profa. Mirella M. Moro 8
• Cada empregado:
• nome,
nome identidade
identidade, endereço
endereço, salário
salário, sexo
sexo, data
OBSERVAÇÕES nascimento
• O mesmo departamento pode ter várias localizações • um empregado
p g é assinalado a um departamento
p
• PORÉM, o modelo relacional não permite que um atributo • pode trabalhar em diversos projetos, os quais não são
tenha mais de um valor necessariamente controlados pelo mesmo departamento
• o número
ú d
de hhoras por semana que o empregado d
• ERGO, as várias localizações precisam ficar armazenadas em
trabalha em cada projeto e o supervisor direto de cada
uma tabela individual: DEPTO_LOCALIZACOES
p g
empregado
• PERGUNTA: por que a tabela DEPTO_LOCALIZACOES tem
uma chave primária composta?! • Ainda para cada empregado
• número de dependentes
p (p
(para seguro)
g )
• para cada dependente: primeiro nome, sexo, data de
nascimento e relacionamento com o empregado
Geralmente, quando
o atributo é NOT
3. Restrição Integridade Referencial
NULL, associa‐se um
valor DEFAULT para
que efetivamente
• Cada Empregado está associado obrigatoriamente a
nunca fique vazio um Departamento
p
CREATE TABLE Empregado (… dno int NOT NULL FOREIGN KEY references
Departmento (dnumero) …)
• O que acontece se apagarmos um Departamento do
banco de dados????
5 opções
õ dif
diferentes!!!
t !!!
b b
FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER)
FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN)
p
b FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER)
ON DELETE CASCADE
b
FOREIGN KEY (DNUM) REFERENCES DEPARTMENT(DNUMBER)
p
• bloqueio
FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN) FOREIGN KEY (PNO) REFERENCES PROJECT(PNUMBER)
b p p g ç
• propagação FOREIGN KEY (
(ESSN)) REFERENCES EMPLOYEE(SSN)
( )
ON DELETE CASCADE
• substituição
por nulos
• INSERT: adiciona uma única linha a uma relação Outra opção: especifica o nome dos atributos
• Nome
N da
d relação
l ã e os valores
l para os atributos
t ib t • Adicionar
Adi i alguns
l valores
l
• Atributos na MESMA ORDEM do esquema (CREATE • Valores NOT NULL, e sem DEFAULT:
TABLE) INSERT INTO
INSERT INTO EMPLOYEE EMPLOYEE(FNAME, LNAME, SSN, DNO)
VALUES (‘Richard’,‘K’,‘Marini’,‘653258653’,‘1962‐12‐30’, VALUES (‘Richard’,‘Marini’,‘653258653’,4);
’98 Oak Forest, Katy, TX’,37000,’987654321’,4);
• Adiciona o resultado de uma consulta:
INSERT INTO
EMPLOYEE(FNAME LNAME
EMPLOYEE(FNAME, LNAME, SSN
SSN, DNO)
SELECT * FROM INPUT;
2. DELETE 3. UPDATE
• Remove tuplas de uma relação + propagação • Modifica valores de atributos em tuplas de UMA relação
• WHERE: seleciona tuplas a serem removidas • WHERE: seleciona tuplas a serem modificadas
• DELETE FROM EMPLOYEE WHERE LNAME=‘Brown’; • Alterar chave primária pode propagar valores em chaves
• DELETE FROM EMPLOYEE estrangeiras
g em outras relações
ç
WHERE DNO IN • UPDATE PROJECT
(SELECT DNUMBER SSET PLOCATION=‘Bellaire’,
OC O e a e , DNUM=5
U 5
FROM DEPARTMENT WHERE PNUMBER=10;
WHERE DNAME=
DNAME=‘Research’);
Research ); • UPDATE EMPLOYEE
• Remover todas as tuplas da tabela (mas mantém no SET SALARY=SALARY*1.1
esquema): WHERE DNO IN (SELECT DNUMBER
DELETE FROM EMPLOYEE; FROM DEPARTMENT
WHERE DNAME
DNAME=‘Research’);
Research );
Revisão: INSERT/UPDATE/DELETE
• INSERT INTO EMPLOYEE
VALUES (‘Richard’,‘K’,‘Marini’,‘653258653’,‘1962‐12‐
(‘Ri h d’‘K’‘M i i’‘653258653’‘1962 12
30’,
’98 Oak
O k Forest,
F t Katy,
K t TX’,37000,’987654321’,4);
TX’ 37000 ’987654321’ 4)
• DELETE FROM EMPLOYEE WHERE LNAME=‘Brown’;
• UPDATE PROJECT
SET PLOCATION=‘Bellaire’, DNUM=5
WHERE PNUMBER=10;