Anda di halaman 1dari 9

Fundação Edson Queiroz

Universidade de Fortaleza - UNIFOR


Centro de Ciências Tecnológicas - CCT
Curso de Informática
Fundamentos de Banco de Dados

Nota de Aula: Modelo Relacional (Aula Prática)


Descrição: Criação e Manipulação de Bancos de Dados Relacional.
Objetivos: Criar um banco de dados, criar tipos de dados, criar relações, definir restrições
de integridade e manipular o banco de dados (executar consultas, atualizações, inserções e
remoções).

1. ESQUEMA DE TRABALHO

Empregado
ENome CPF Endereço Nasc Sexo Salário Chefe Cdep
Chiquin 1234 rua 1, 1 02/02/62 M 10000,00 8765 3
Helenita 4321 rua 2, 2 03/03/63 F 12000,00 6543 2
Pedrin 5678 rua 3, 3 04/04/64 M 9000,00 6543 2
Valtin 8765 rua 4, 4 05/05/65 M 15000,00 Null 4
Zulmira 3456 rua 5, 5 06/06/66 F 12000,00 8765 3
Zefinha 6543 rua 6, 6 07/07/67 F 10000,00 8765 2

Departamento
DNome Código Gerente
Pesquisa 3 1234
Marketing 2 6543
Administração 4 8765

Projeto
PNome PCódigo Cidade Cdep
ProdutoA PA Cumbuco 3
ProdutoB PB Icapuí 3
Informatização Inf Fortaleza 4
Divulgação Div Morro Branco 2

Tarefa
CPF PCódigo Horas
1234 PA 30.0
1234 PB 10.0
4321 PA 5.0
4321 Div 35.0
5678 Div 40.0
8765 Inf 32.0
8765 Div 8.0
3456 PA 10.0
3456 PB 25.0
3456 Div 5.0
6543 PB 40.0
DUnidade
DCódigo DCidade
2 Morro Branco
3 Cumbuco
3 Prainha
3 Taíba
3 Icapuí
4 Fortaleza

Dependentes
ECPF Nome Sexo Nasc Parentesco
4321 Gal F 02/10/80 Filha
5678 Jô F 25/02/79 Sobrinha
8765 Zé M 10/07/50 Pai
8765 Dete F 29/05/90 Filha

2. ATIVIDADES

1) Identificar o domínio dos atributos, o grau das relações, a diferença entre esquema
de relação e relação.
2) Identificar as chaves candidatas, a chave primária e as chaves estrangeiras para cada
relação.
3) Criar um Database para o esquema acima. (Usar a interface do SQL-Server)
4) Criar os seguintes tipos de dados:

- longstring: Uma string com 60 caracteres.

EXEC sp_addtype longstring, ‘varchar(60)’

- sexo: Uma string com apenas um caractere.

EXEC sp_addtype sexo, ‘char’

5) Excluir o tipo de dado “sexo”.

EXEC sp_droptype sexo


6) Criar as relações mostradas no esquema acima:

- Usar a interface do SQL-Server ou seguir o exemplo abaixo.

CREATE TABLE Departamento


{
Dnome varchar(30) NOT NULL,
Codigo smallint NOT NULL,
Gerente smallint NULL

OBS: Antes de criar as relações, identifique e defina as seguintes restrições de


integridade:

- Restrição de Domínio ou Check

Ex. O valor do atributo “Sexo” da relação “Empregado” deverá ser um dos


dois valores: “M” ou “F”. O salário de um empregado não pode ser maior
que R$ 1000,00.

CREATE TABLE Empregado


{
...

Salario Decimal(6,2),

...

Sexo char,

...

CHECK (Salario <= 1000.00),


CHECK (Sexo in (‘M’,’F’))
}
- Chave Primária

Ex. A chave primária deve identificar univocamente uma tupla Ti ∈ r(R).


Logo, não podem existir duas tuplas com os mesmos valores para os
atributos que constituem a chave primária.

CREATE TABLE Departamento


{
Dnome varchar(30) NOT NULL,
Codigo smallint NOT NULL,
Gerente smallint NULL,

CONSTRAINT pk PRIMARY KEY (Codigo)

- Integridade Existencial

A chave primária não pode ter valor nulo.

- Unique

EX:
CREATE TABLE Departamento
{
Dnome varchar(30) NOT NULL,
Codigo smallint NOT NULL,
Gerente smallint NULL,

CONSTRAINT U_dnome UNIQUE (Dnome)

}
- Chave Estrangeira ou Integridade Referencial

Ex:

CREATE TABLE Departamento


{
Dnome varchar(30) NOT NULL,
Codigo smallint NOT NULL,
Gerente smallint NULL,

CONSTRAINT pk PRIMARY KEY (Codigo)


CONSTRAINT Empregado_fk
FOREIGN KEY Gerente
REFERENCES Empregado (CPF)

- Default

EX:
CREATE TABLE Departamento
{
Dnome varchar(30) NOT NULL,
Codigo smallint NOT NULL,
Gerente smallint NULL,

CONSTRAINT DF_gerente DEFAULT 1234 FOR Gerente

7) Povoar as relações.

- Seguir a sintaxe do exemplo abaixo:

INSERT INTO Departamento


VALUES (‘Pesquisa’, 3, 1234)

8) Executar as seguintes consultas:

a) Recupere o nome e o salário de todos os empregados

SELECT ENome, Salario


FROM Empregado
b) Recupere o nome e o salário de todos os empregados do sexo feminino.

SELECT ENome, Salario


FROM Empregado
WHERE Sexo = ‘F”

c) Recupere o nome e o salário de todos os empregados que trabalham em


Marketing.

SELECT ENome, Salario


FROM Empregado, Departamento
WHERE Empregado.Cdep = Departamento.Codigo
AND DNome = ‘Marketing’

d) Recupere o nome e o salário de todos os empregados do sexo feminino que


trabalham em Pesquisa.

SELECT ENome, Salario


FROM Empregado, Departamento
WHERE Empregado.Cdep = Departamento.Codigo
AND DNome = ‘Pesquisa’
AND Sexo = ‘F’

e) Recupere o nome e o endereço de todos os empregados que trabalham para o


departamento “Pesquisa”.

SELECT ENome, Endereco


FROM Empregado, Departamento
WHERE Empregado.Cdep = Departamento.Codigo
AND DNome = ‘Pesquisa’

f) Recupere o nome e a data de nascimento dos gerentes de cada departamento.

SELECT ENome, Nasc


FROM Empregado, Departamento
WHERE Departamento.Gerente = Empregado.CPF

g) Recupere o nome e a cidade dos projetos que consomem mais de 30 horas por
empregado.

SELECT PNome, Cidade


FROM Projeto, Tarefa
WHERE Projeto.PCodigo = Tarefa.Pcodigo
AND Horas > 30
8) Execute as atualizações abaixo e verifique se alguma restrição é violada.

a) Atualize em 10% (Aumento) o salário de todos os empregados que ganham


menos de R$ 800,00.

UPDATE Empregado
SET Salario = Salario * 1.10
WHERE Salario < 800

b) Exclua todos os dependentes do empregado cujo CPF é 4321 (ou seja, da


funcionária Helenita).

DELETE Dependentes
WHERE ECPF = 4321

c) Inclua na relação empregado o funcionário “Joao” (cujos dados são mostrados


abaixo).

INSERT INTO Empregado


VALUES (‘Joao’, 8976, ‘rua 7,7’, ‘01/12/76’, ‘Masculino’, 500, 8765, 3)

d) Inclua na relação empregado a funcionária “Maria” (cujos dados são mostrados


abaixo).

INSERT INTO Empregado


VALUES (‘Maria’, 9976, ‘rua 7,7’, ‘01/12/76’, ‘F’, 1500, 8765, 3)

e) Inclua o departamento de “Vendas”, cujo código será 3 e o seu gerente será o


empregado com CPF 1234 (ou seja, o “Chiquim”).

INSERT INTO Departamento


VALUES (‘Vendas’, 3, 1234)

f) Inclua o departamento de “Vendas”, cujo código será 3 e o seu gerente será o


empregado com CPF 3412.

INSERT INTO Departamento


VALUES (‘Vendas’, 7, 3412)

g) Exclua o empregado cujo CPF é 8765.

DELETE Empregado
WHERE CPF = 8765
h) Exclua o departamento cujo código é 3 (departamento de “Pesquisa”).

DELETE Departamento
WHERE Codigo = 3

i) Inclua o departamento cujo os dados são mostrados abaixo.

INSERT INTO Departamento


VALUES (‘Pesquisa’, 7, 8765)

j) Inclua o departamento cujo os dados são mostrados abaixo.

INSERT INTO Departamento


VALUES (‘Vendas’, NULL , 8765)

k) Atualize o CPF do empregado “Chiquim” (CPF 1234) para 8765.

UPDATE Empregado
SET CPF = 8765
WHERE CPF = 1234

l) Atualize o departamento de “Pesquisa“ para que o seu novo gerente seja o


“Valtin” (CPF 8765).

UPDATE Departamento
SET Gerente = 8765
WHERE Dnome = ‘Pesquisa’

m) Inclua o dependente cujos dados são mostrados abaixo.

INSERT INTO Dependentes


VALUES(1234, ‘Laura’, ‘F’, ‘27/06/81’, ‘Filha’)

9) Adicione o atributo “Escolaridade” na relação “Dependentes”.

ALTER TABLE Dependentes


ADD Escolaridade char(30) null

10) Exclua o atributo “Escolaridade” da relação “Dependentes”.

ALTER TABLE Dependentes


DROP COLUMN Escolaridade
11) Exclua a relação “Dependentes”.

DROP TABLE Dependentes

Anda mungkin juga menyukai