Você está na página 1de 6

Programa

• 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

DCC011 ‐ profa. Mirella M. Moro 2

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

DCC011 ‐ profa. Mirella M. Moro 4

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

DCC011 ‐ profa. Mirella M. Moro 5 DCC011 ‐ profa. Mirella M. Moro 6


ALUNOS
Introdução 2. Definição de Dados em SQL
Matr Nome Sexo Cur
1 A F CC • Comando CREATE SCHEMA
Conceitos Relevantes 2 B M CC CREATE SCHEMA schemaName Comandos SQL
terminam em ;
•Tabela/Table = Relação 3 C M CC AUTHORIZATION userName;
ALUNOS 4 D F MC •Esquema tem nome e um usuário
•Linha/Row = Tuplap 5 E M MC administrador
1, A, F, CC 6 F M SI CREATE SCHEMA EMPRESA
Nota: um esquema define
os meta‐dados do banco
•Coluna/Column
Coluna/Column = Atributo AUTHORIZATION JohnSmith;
(cabeçalho das tabelas e
7 G F SI seus relacionamentos)

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

Definição de Dados em SQL Definição de Dados em SQL


Comando CREATE TABLE <definição da chave primária>
CREATE TABLE <nome da tabela> Toda linha em uma tabela deve ser única
Chave primária identifica unicamente cada linha
(<definições de colunas> Nota: um esquema define
os meta‐dados do banco Exemplo: número de matrícula
ç da chave primária>
<definição p ((cabeçalho
ç das tabelas e

<definições de chaves alternativas>


seus relacionamentos) <definições de chaves alternativas>
ERGO: os meta‐dados de
cada tabela Também possui valor único
<definições de chaves estrangeiras>);
Poderia ser utilizado como chave primária
MAS optou‐se por outro campo
Case sensitive Exemplo: cpf
<definições de chaves estrangeiras>
Informam que o campo na verdade referencia o valor presente em outro
campo da
d mesma ou dde outra tabela
b l
Exemplo: Empregado possui atributo dno, que é o número do
departamento que precisa existir na tabela Departamento

DCC011 ‐ profa. Mirella M. Moro 9 DCC011 ‐ profa. Mirella M. Moro 10

Aplicação Exemplo Aplicação Exemplo


do Livro Elmasri‐Navathe do Livro Elmasri‐Navathe

Banco de Dados de uma companhia • Organizada em departamentos:


• um nome único
• Organizada
O i d em ddepartamentos:
t t • um número único
• um nome único • um empregado que gerencia o departamento
• a data de quando o empregado começou a gerenciar o departamento deve
• um número único ser registrada
• um empregado que gerencia o departamento • um departamento pode ter várias localizações
• a data de quando o empregado começou a gerenciar o • Um departamento controla um número de projetos:
departamento deve ser registrada • cada qual com um nome e número únicos
• um departamento pode ter várias localizações • uma única localização

• Um departamento controla um número de Chaves primárias estão sublinhadas


‐ ex: DEPARTAMENTO.DNUMERO
projetos: Chaves estrangeiras são indicadas por flechas
‐ ex: PROJETO.DNUM só p pode ser um valor
• cada qual com um nome e número únicos contido na coluna DEPARTAMENTO.DNUMERO
Chaves alternativas: não são representadas :‐/
• uma única localização

DCC011 ‐ profa. Mirella M. Moro 11 DCC011 ‐ profa. Mirella M. Moro 12


Aplicação Exemplo Aplicação Exemplo
do Livro Elmasri‐Navathe do Livro Elmasri‐Navathe

• 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

DCC011 ‐ profa. Mirella M. Moro 13 DCC011 ‐ profa. Mirella M. Moro 14

Traduzindo para SQL, fica:


Tabelas, chaves primárias e estrangeiras
CREATE TABLE EMPREGADO
(PNOME VARCHAR(15) NOT NULL, Definições de colunas
MINICIAL CHAR
CHAR,
UNOME VARCHAR(15) NOT NULL,
SSN CHAR(9) NOT NULL,
NULL

SUPERSSN ( ),
CHAR(9),
DNO INT NOT NULL,
PRIMARY KEY (SSN), Definição de chave primária
FOREIGN KEY (SUPERSSN) Definições de chave estrangeira
REFERENCES EMPREGADO(SSN)
ON DELETE SET NULL,
NULL Estrangeira para a própria tabela

FOREIGN KEY (DNO)


REFERENCES DEPARTMENTO (DNUMERO));
Estrangeira para outra tabela

DCC011 ‐ profa. Mirella M. Moro 15 DCC011 ‐ profa. Mirella M. Moro 16

Tipos de Dados TRUE/FALSE/UNKNOWN


• Numérico (principais)
• INTEGER/INT,
INTEGER/INT FLOAT
FLOAT, REAL
Nota: esses são os AND TRUE FALSE UNKNOWN
• String de caractere tipos de dados mais
comuns, o nome real
• CHAR(n),
CHAR(n) VARCHAR(n)
VARCHAR(n), CLOB pode variar de
acordo com o SGBD
TRUE TRUE FALSE UNKNOWN

• ‘Smith ‘, concatenação || (por exemplo, um FALSE FALSE FALSE FALSE


SGBD chama de int e
• String de bits: BIT (n)
(n), BIT VARYING (n) outro de integer) UNKNOWN UNKNOWN FALSE UNKNOWN

• Booleano: BOOLEAN, TRUE/FALSE/UNKNOWN


• Data:
D DATE, YEAR, MONTH, DAY OR TRUE FALSE UNKNOWN

• Tempo: TIME, HOUR, MINUTE, SECOND, TRUE TRUE TRUE TRUE


TIMESTAMP FALSE TRUE FALSE UNKNOWN
UNKNOWN TRUE UNKNOWN UNKNOWN

DCC011 ‐ profa. Mirella M. Moro 17 DCC011 ‐ profa. Mirella M. Moro 18


Restrições de atributos e domínios
Tipos diferentes para
cada coluna
• NOT NULL
• Exemplo: todo aluno possui nome
• Implícita para chave primária (ex: cpf, número matrícula)
• DEFAULT <valor>
• Todo empregado precisa estar alocado em um Ó o ; separando cada
p
departamento; p
poderia definir um depto
p default = 1 comando de
CREATE TABLE
• CHECK <condição>
Figura 8.1 Comandos de
• Pode verificar q
qualquer
q condição
ç lógica,
g , por
p exemplo:
p definição de dados SQL
CREATE TABLE para a
• Dnumber INT NOT NULL definição do esquema
EMPRESA da Figura 5.7.
CHECK (Dnumber > 0 AND Dnumber < 21); (continua)
• CREATE DOMAIN D_NUM AS INTEGER
CHECK (D_NUM > 0 AND D_NUM < 21);

DCC011 ‐ profa. Mirella M. Moro 19 DCC011 ‐ profa. Mirella M. Moro 20

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 !!!

Figura 8.2 Exemplo ilustrando como os valores do atributo default


e asDCC011
ações referenciais
‐ profa. Mirella M. Moro engatilhadas são especificados em SQL. 21 DCC011 ‐ profa. Mirella M. Moro 22

3. Restrição Integridade Referencial


Restrição Integridade Referencial
• Cada Empregado está associado obrigatoriamente a
um Departamento
p • Opções de remoção (cláusula ON DELETE):
CREATE TABLE Empregado (… dno int NOT NULL FOREIGN KEY references • CASCADE (propagação)
Departmento (dnumero) …)
• SET NULL (substituição por nulos)
• O que acontece se apagarmos um Departamento do • SET DEFAULT (substituição por um valor default)
banco de dados???? • Opção
pç default: bloqueio
q ((RESTRICT))
1. Demitimos todos os empregados?!
2. Apagamos todos os registros de Empregado alocados naquele
• As mesmas opções se aplicam à cláusula ON UPDATE
departamento?
3. Alocamos todos os registros de Empregado ao valor default do
Departamento
4
4. Colocamos NULL no campo de chave estrangeira na tabela
Empregado?  INCONSISTÊNCIA! O campo é NOT NUL !!!!! 
E t t t esta
Entretanto t cláusula
lá l NÃO ddeve ser utilizada
tili d para
5. Não permitimos apagar Departamento se tiver Empregado
se evitar que as chaves primárias sejam modificadas
alocado pra ele?

DCC011 ‐ profa. Mirella M. Moro 23 DCC011 ‐ profa. Mirella M. Moro 24


Este é o esquema apresentado no livro Restrição Integridade Referencial
Agora em SQL fica como???? n
FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN)
ON DELETE SET NULL

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

DCC011 ‐ profa. Mirella M. Moro 25 DCC011 ‐ profa. Mirella M. Moro 26

Definição de Dados em SQL


• Comandos DROP SCHEMA e DROP TABLE
• DROP SCHEMA COMPANY CASCADE (RESTRICT)
(RESTRICT);
• RESTRICT: apenas se não tem elementos
• DROP TABLE DEPENDENT CASCADE (RESTRICT);
• RESTRICT: se a tabela não é referenciada em qualquer restrição ou
visão
• Comando
C d 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);
• RESTRICT: se nenhuma visão ou restrição referencia a coluna

Figura 8.2 Exemplo ilustrando como os valores do atributo default


e asDCC011
ações referenciais
‐ profa. Mirella M. Moro engatilhadas são especificados em SQL. 27 DCC011 ‐ profa. Mirella M. Moro 28

REVISÃO CREATE TABLE


CREATE TABLE EMPLOYEE
(FNAME VARCHAR(15) NOT NULL,
LNAME ( )
VARCHAR(15) NOT NULL,,
SSN CHAR(9) NOT NULL,

SUPERSSN CHAR(9)
CHAR(9),
DNO INT NOT NULL,
PRIMARY KEY (SSN),
(SS ), SQL: Atualizações
FOREIGN KEY (SUPERSSN) 1. Insert
REFERENCES EMPLOYEE (SSN)
2. Delete
ON DELETE SET NULL,
NULL
FOREIGN KEY (DNO) 3. Update
REFERENCES DEPARTMENT (DNUMBER)); 4. Visões

DCC011 ‐ profa. Mirella M. Moro 29


Cria esquema
1. INSERT Cria tabelas do esquema
Agora: insere dados no banco
INSERT
de dados criado pelo esquema

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

DCC011 ‐ profa. Mirella M. Moro 31 DCC011 ‐ profa. Mirella M. Moro 32

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

DCC011 ‐ profa. Mirella M. Moro 33 DCC011 ‐ profa. Mirella M. Moro 34

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;

DCC011 ‐ profa. Mirella M. Moro 35

Você também pode gostar