FACULDADEDEENGENHARIA
DepartamentodeEngenhariaElectrotecnia
LicenciaturaemEngenhariaInformtica
BASEDEDADOSII
Tema:GestodasRequisiesDiriasdeumaconstrutoracivil
Discentes:
Gueze,VanDilson
Massango,JlioBoaventura
Matavele,CastroFaifane
Nhantumbo,AmliadaSnia
Docentes:
Dr.ValiJafarIssufo
Maputo,Maiode2016
ndice
ENUNCIADO DO PROJECTO
GESTODASREQUISIESDOESCRITRIODEUMACONSTRUTORA
UmaEmpresavocacionadanoramodaConstruoCivil,pretendefazeragestodasrequisies
diriasdoescritrio,osistemadevefuncionardaseguintemaneira,aRecepcionistarecebeas
requisiesfeitaspelosEncarregadosquepodemserEngenheirosouTcnicos,decadaobra,e
separaasrequisiesconsoanteotipoderequisio,quepodeserdepagamento,oudacompra
de material, das requisies nos importa guardar nr.Requisio, Obra, tipoRequisio, e
valorRequisio,darecepcionistanosinterressasabercdigo,nome,emaileonr.dotelefone,a
dataemqueoencarregadoentregaarequisioeimportante,doencarregadoimportanossaber
cdigoEncarregado,nomeEncarregado,eonomeObra,edaObraimportanosterasseguintes
InformaescdigoObra,nomeObra,tipoObra,duraoObraalocalizao,eCadaObrapossui
um Oramento que contm a seguinte informao, nr.Oramento, nomeObra, item,
designao,PreoUn,unidade,quantidade,etotal,cadarequisiodeveestaranexaauma
Cotao,naqualdeveter nr.Referencia,dataCotao,nomeInstituio,valorDaCotaoeo
nomeObra,etodasasrequisiesAutorizadasdeveseguardar,onr.daRequisio,nomeObra,
dataAutorizao,oDirectordeObraeoresponsvelpelaAutorizaodasrequisiesedele
nosimportaconservarcdigoDirector,nomeDirector.
Descrio do Projecto
OprojectotemcomotemaSistemadeGestodeRequisiesDiriasdeUmEscritriodeUma
EmpresadeConstruoCivil.
CadastrarosusuriosqueiroacederaoSistema
PermitirocadastrodasrequisiesdiriasdecadaObra;
CadastrarObras
Imprimirasrequisiesfeitassegundoadatadefinidapeloutilizador
Aparteadministrativaserusadainternamentepelosfuncionrioscadastradosnabasededadosque
iroreceberasrequisiesdecadadeobra,esepararasrequisiesdepagamentoeasrequisiesde
compradeMaterial,paraasrequisiesdecompradeMaterialosfuncionriosdevemverificarsea
requisioesteemanexoaumacotaodomaterialaserrequisitado.
NORMALIZAO
1FN
Construtora(codEncarregado, codObra, nomeEncaregado (nrRequisio, codRecepcionista,
codirector,descrio,codObra,tipo_Requisio(nrRequisicao,codEncarregado (codRecepcionista, nome,
telefone (codRequisioA, codRecepcionista, nrRequisicao (codDirector, nomeDirector (nrReferencia,
codRefMaterial data,nomeInstituio,codObra(codOramento,quantidade,designao,item,codObra
(codObra,codOrcamento,nomeObra,endereo,avenida,bairro,rua,quantidade,designao,item)))))))))
2FN
Encarregado(codEncarregado,codObra,nomeEncaregado)
Requisio(nrRequisio,codRecepcionista,codirector,codObra)
Requ(nrRequisio,descrio,tipo_Requisio)
Encar_Requisicao(nrRequisicao,codEncarregado)
Recepcionista(codRecepcionista,nome,telefone)
Requ.Autorizadas(codRequisioA,codRecepcionista,nrRequisicao)
Director_Obra(codDirector,nomeDirector)
Cotao(nrReferencia,codRefMaterialdata,nomeInstituio,codObra)
Orcamento_Obra(codObra,codOrcamento,quantidade,designao,item)
Obra(codObra,nomeObra,endereo,avenida,bairro,rua)
3FN
Encarregado(codEncarregado,codObra,nomeEncaregado)
Requisio(nrRequisio,codRecepcionista,codirector,codObra)
Requ(nrRequisio,descrio,tipo_Requisio)
Encar_Requisicao(nrRequisicao,codEncarregado)
Recepcionista(codRecepcionista,nome,telefone)
Requ.Autorizadas(codRequisioA,codRecepcionista,nrRequisicao)
Director_Obra(codDirector,nomeDirector)
Cotao(nrReferencia,codRefMaterialdata,nomeInstituio,codObra)
Orcamento_Obra(codObra,codOrcamento,quantidade,designao,item)
Obra(codObra,nomeObra,endereo,avenida,bairro,rua)
Tabela Oramento
Item
CodOrcamento CodObra
Quantidade
Designacao
1.1
12
400
1.2
12
1000
Chapas de Cofragem
1. Pr
i
m
ei
ra
Transaco
T1 (Requisio): O encarregado 1 faz uma consulta sobre a base de dados para verificar a
quantidade de cimento existente no sistema de forma requisitar X quantidades de cimento.
T1 em RW
T1 em SQL
Read(Orc.qtyCimento)
SELECT Quantidade
FROM Orcamento
WHERE Cod_Orcamento = 1
Orc.qtyCimento = Orc.qtyCimento-X
Write( Orc.qtyCimento)
UPDATE Orcamento
SET Quantidade = 100
WHERE Cod_Orcamento = 1
T2 (Requisio): O encarregado2 faz uma consulta sobre a base de dados para verificar a
quantidade de cimento existente no sistema de forma requisitar X quantidades de cimento.
T1 em RW
T1 em SQL
Read(Orc.qtyCimento)
SELECT Quantidade
FROM Orcamento
WHERE Cod_Orcamento = 1
Orc.qtyCimento = Orc.qtyCimento-X
Write( Orc.qtyCimento)
UPDATE Orcamento
SET Quantidade = 200
WHERE Cod_Orcamento = 1
Descri
o do
conflito
T2
Read(Orc.qtyCimento) 400
Orc.qtyCimento = Orc.qtyCimento - 300
Read(Orc.qtyCimento)400
Orc.qtyCimento = Orc.qtyCimento-200
Orc.qtyCimento = Orc.qtyCimento-200
Write( Orc.qtyCimento)100
Write( Orc.qtyCimento)200
I.
S = r1(Orc.qty.Cimento),r2(Orc.qty.Cimento),w1(Orc.qty.Cimento),w2(Orc.qty.Cimento);
Ss =
2. Transaco
T1 (Requisio): O encarregado 1 faz uma consulta sobre a base de dados para verificar a
quantidade de cimento existente no sistema de forma requisitar X quantidades de cimento.
T1 em RW
T1 em SQL
Read(Orc.qtyCimento)
SELECT Quantidade
FROM Orcamento
WHERE Cod_Orcamento = 1
Orc.qtyCimento = Orc.qtyCimento-X
Write( Orc.qtyCimento)
UPDATE Orcamento
SET Quantidade = 100
WHERE Cod_Orcamento = 1
T1 (Requisio): O encarregado2 faz uma consulta sobre a base de dados para verificar a
quantidade de cimento existente no sistema de forma requisitar X quantidades de cimento.
T1 em RW
T1 em SQL
Read(Orc.qtyCimento)
SELECT Quantidade
FROM Orcamento
WHERE Cod_Orcamento = 1
Orc.qtyCimento = Orc.qtyCimento-X
Write( Orc.qtyCimento)
UPDATE Orcamento
SET Quantidade = 50
WHERE Cod_Orcamento = 1
Descri
odo
conflito
T2
Read(Orc.qtyCimento) 400
Orc.qtyCimento = Orc.qtyCimento - 200
Write( Orc.qtyCimento)200
Read(Orc.qtyCimento)200
Orc.qtyCimento = Orc.qtyCimento-50
Orc.qtyCimento = Orc.qtyCimento-200
Write( Orc.qtyCimento)150
10
T2
Lock X (Orc.qty.Cimento);
Read(Orc.qtyCimento) 400
Orc.qtyCimento = Orc.qtyCimento - 200
Write( Orc.qtyCimento)200
UnLock X(Orc.qty.Cimento);
UnLock X(Orc.qty.Cimento);
Read(Orc.qtyCimento)200
Orc.qtyCimento = Orc.qtyCimento-50
Orc.qtyCimento = Orc.qtyCimento-200
Write( Orc.qtyCimento)150
11
3.Transaco
T1 (Requisio): O encarregado 1 faz uma consulta sobre a base de dados para verificar a
quantidade de cimento existente no sistema de forma requisitar X quantidades de cimento.
T1 em RW
T1 em SQL
Read(Orc.qtyCimento)
SELECT Quantidade
FROM Orcamento
WHERE Cod_Orcamento = 1
Orc.qtyCimento = Orc.qtyCimento-X
Write( Orc.qtyCimento)
UPDATE Orcamento
SET Quantidade = 100
WHERE Cod_Orcamento = 1
12
T1 (Requisio): O encarregado 1 faz uma consulta sobre a base de dados para verificar a
quantidade de cimento existente no sistema de forma requisitar X quantidades de cimento.
T1 em RW
T1 em SQL
Read(Orc.qtyCimento)
SELECT Quantidade
FROM Orcamento
WHERE Cod_Orcamento = 1
Orc.qtyCimento = Orc.qtyCimento-X
Write( Orc.qtyCimento)
UPDATE Orcamento
SET Quantidade = 100
WHERE Cod_Orcamento = 1
Descrio do conflito
13
T2
Read(Orc.qtyCimento) 400
Orc.qtyCimento = Orc.qtyCimento - 200
Write( Orc.qtyCimento)200
Read(Orc.qtyCimento)200
Orc.qtyCimento = Orc.qtyCimento-50
Orc.qtyCimento = Orc.qtyCimento-200
Write( Orc.qtyCimento)150
1.
2.
3.
4.
5.
Cadastro do Funcionrio
6.
14
Operao
01
Frequncia
10/Dia
Conceito
Encarregado
Elabora
Requisio
E/R
E
R
E
R/W
W
Media de
Ocorrncia
10
15
02
03
04
05
06
20/Dia
Director Obra
Autoriza
Requisies
E
R
E
20
30/Dia
Recepcionista
Recebe
Requisio
E
R
E
30
Recepcionista
1/Dia
Guarda
Requisies Autorizadas
Director Obra
10/Semestre Cadastra
Funcionrio
2/Meses
Encarregado
Cadastra
Obra
E
R
E
E
R
E
E
R
E
1
R
10
W
2
W
MATRIZ CRUD
Funcionalidade/
Entidade
Encarregado
Director
Obra
Funcion
rio
16
01
CRUD
02
R
RU
03
04
R
R
05
06
RU
RU
CRUD
CRUD
17
Desnormalizaco
Tabela Normalizada
Se quisermos que o sistema nos retorne o valor total das requisies, seria
interessante criar um campo totalValorRequisitado na tabela Requisio
Material, de forma que toda a vez que quisermos obter o total das
requisies no tenhamos que percorrer todas as tabelas para chegar nesse
valor. Porque para obter o valor total temos que percorrer todas as tabelas.
Para Obtermos o valor total das requisies feitas num dia j no precisamos percorrer todas as 3
tabelas, bastando apenas fazer um select na tabela requisio Material, que ele ira nos retornar o
valor total das requisies feitas no dia.
Mas no entanto ser muito difcil manter o atributo derivado valorTotalRequisicao Actualizado.
18
Proposta de ndices
KEY
(`nrCell`),REFERENCES
`requisicoes`.`telfone`
19
ResumosobreParties
Parties
Esta optimizao tem como objectivo reduzir os custos de acesso aos dados eliminando
informao transferida inutilmente da memria secundria para a memria central.
Tipos:
Horizont
ais
Vertica
Para o nosso is
projecto identificamos uma tabela, na qual fizemos uma partio Horizontal na qual
consiste em subdividir as tuplas em sub-tabelas de mesmo esquema. A tabela inicial
pode ser facilmente recuperada pela unio das suas sub-tabelas. Agrupar-se-o as
tuplas que tm grandes hipteses de serem acedidos em conjunto.
Tabela Requisicao Material
20
Tabela No Particionada
Nr. Requi.
Cod.Obra Descrio
201301
Sacos de Cimento
Quantidad
e
200
Pr.Total
Nr.Cotao
01
02
201301
Varao 10 mm
300
20.000
2222
03
201404
Sacos de Cimento
200
40.000
3333
04
201505
Sacos de Cimento
100
30.000
44444
60.000
1111
Tabela Particionada
Nr. Requi.
01
02
Nr. Requi.
Cod.Obra Descrio
201301
Sacos de Cimento
Quantidad
e
200
201301
Varao 10 mm
300
Cod.Obra Descrio
03
201404
Sacos de Cimento
Quantidad
e
200
04
201505
Sacos de Cimento
100
Pr.Total
Nr.Cotao
60.000
1111
20.000
2222
Pr.Total
Nr.Cotao
40.000
3333
30.000
44444
21
Optimizao de Consultas
22
23