BANCO DE DADOS I
• Nos próximos slide estão apresentados um
modelo ER parcial de uma fábrica e o seu
respectivo modelo Relacional. O esquema da
base de dados relacional contém os nomes das
tabelas, os nomes dos atributos, atributos que
formam a chave primária e as chaves
Departamento
lotação
Máquina
Empregado
possui
trabalha
NumDepto
NomeDepto
(0,N)
(1,1)
(1,1)
(0,N)
NumEmp
(0,N)
NumMaq
NomeMaq
NomeEmp
(0,N)
MER
Telefone
QtdeHoras
Endereco
Modele relacional
Empregado (NumDepto,NumEmp,NomeEmp, Telefone, Endereco)
(NumDepto) referencia Departamento
Maquina (NumDepto,NumMaq,NomeMaq)
(NumDepto) referencia Departamento
Departamento (NumDepto,NomeDepto)
EmpMaq (EmpNumDepto,NumEmp,MaqNumDepto,NumMaq,
QtdeHoras)
(EmpNumDepto, NumEmp) referencia Empregado
(MaqNumDepto,NumMaq) referencia Maquina
Resolvam
0. Transforme o ER para relacional.
1. Escreva os comandos completos de criação das tabelas
na ordem correta de execução.
1.1. Defina o atributo telefone como number(15)
Obs:
Defina tamanho e tipos dos demais atributos da maneira
que você achar adequado.
Não esqueça de informar se os campos são obrigatórios ou
opcionais.
2. Altere a o atributo telefone para varchar2(20)
3. Insira pelo menos 2 registros em cada tabela.
4. Escreva comando select para mostrar a quantidade de
registros da tabela Departamento
5. Escreva comandos select para mostrar os registros de
todas as tabelas (uma de cada vez).
Resolução 1
• Criação da tabela Departamento
Departamento (NumDepto,NomeDepto)
create table departamento
(numdepto number(4) not null,
nomedepto varchar(20) not null,
Resolução 1
• Criação da tabela Empregado
Empregado (NumDepto,NumEmp,NomeEmp, Telefone, Endereco)
(NumDepto) referencia Departamento
create table empregado
(numdepto number(4) not null,
numemp number(4) not null,
nomeemp varchar(50) not null,
telefone number(15) null,
endereco varchar(50),
constraint pk_numemp primary key(numemp,numdepto),
constraint fk_empregado_departamento foreign key (numdepto)
references departamento(numdepto));
Resolução 1
• Criação da tabela Maquina
Maquina (NumDepto,NumMaq,NomeMaq)
(NumDepto) referencia Departamento
create table maquina
(numdepto number(4) not null,
nummaq number(4) not null,
nomemaq varchar(20) not null,
constraint pk_nummaq primary key(nummaq,numdepto),
constraint fk_maquina_departamento foreign
Resolução 1
• Criação da tabela EmpMaq
EmpMaq (EmpNumDepto,NumEmp,MaqNumDepto,NumMaq, QtdeHoras) (EmpNumDepto, NumEmp) referencia Empregado
(MaqNumDepto,NumMaq) referencia Maquina create table empmaq
(empnumdepto number(4) not null, numemp number(4) not null,
maqnumdepto number not null, nummaq number not null, qtdehoras number not null, constraint pk_empmaq
primary key(empnumdepto, numemp, maqnumdepto,nummaq), constraint fk_empmaq_empregado
foreign key(empnumdepto,numemp) references empregado(numdepto, numemp), constraint fk_empmaq_maquina
Resolução 2
Resolução 3
• insert into departamento (numdepto, nomedepto) values (001, 'TI');
• insert into departamento (numdepto, nomedepto) values (002, 'Vendas'); • insert into empregado (numdepto,numemp,nomeemp,endereco,telefone) values
(001, 24, 'José da Silva','Rua quinze de novembro, 222','01935632419'); • insert into empregado (numdepto,numemp,nomeemp,endereco,telefone) values
(002, 25, 'Pedro Pereira', 'rua sete de setembro, 212', '01538964984'); • insert into maquina (numdepto,nummaq,nomemaq) values (001, 121,'torno
cnc');
• insert into maquina (numdepto,nummaq,nomemaq) values (002, 122, 'furadeira');
• insert into empmaq (empnumdepto,numemp,maqnumdepto,nummaq,qtdehoras) values (001,24,001,121,8);
• insert into empmaq (empnumdepto,numemp,maqnumdepto,nummaq,qtdehoras) values (002,25,002,122,10);
Resolução 4
• Select count(*) from departamento;
SQL> Select count(*) from departamento;
COUNT(*)
---2
Resolução 5
SQL> select * from departamento;
NUMDEPTO NOMEDEPTO
--- ---1 TI
2 Vendas
SQL> select * from empregado;
NUMDEPTO NUMEMP NOMEEMP TELEFONE ENDERECO
--- --- --- --- ---1 24 José da Silva 0---19356324---19 Rua quinze de novembro, 222 2 25 Pedro Pereira 01538964984 rua sete de setembro, 212
SQL> select * from maquina;
NUMDEPTO NUMMAQ NOMEMAQ
--- --- ---1 ---12---1 torno cnc
2 122 furadeira
SQL> select * from empmaq;
EMPNUMDEPTO NUMEMP MAQNUMDEPTO NUMMAQ QTDEHORAS - - ---1 24 ---1 ---12---1 8 2 25 2 122 10