Escolar Documentos
Profissional Documentos
Cultura Documentos
Escola de Engenharia
Mestrado Integrado em Engenharia Informtica
Unidade Curricular de
Bases de Dados
Ano Lectivo de 2015/2016
BelaPadaria
Janeiro, 2016
Data de Recepo
Responsvel
Avaliao
Observaes
BelaPadaria
<<Janeiro, 2016>>
<</opcional Dedicatria>>
Resumo
O documento contm toda a informao sobre o processo de elaborao de uma
arquitetura de base de dados, que ser a base para a informatizao do processo de fabrico e
venda de uma empresa produtora de po.
Inicialmente feita a contextualizao do problema apresentado, seguindo-se da
anlise do caso de estudo em questo. Ainda numa parte introdutria descrita a motivao
que levou a empresa a optar pela mudana do modo como era registada a informao relativa
ao processo de produo, assim como os objetivos a atingir com essa mesma mudana.
Esta
primeira
parte
do
relatrio
do
projeto
incluir
os
seguintes
pontos:
ndice
1. Introduo
1.1. Contextualizao
3.1.1 Cliente
3.1.2 Funcionrio
3.1.3 Pedido
3.1.4 Produto
10
10
11
11
13
14
15
15
16
18
4. Modelo Lgico
19
19
22
22
22
23
23
ii
24
28
29
5. Modelo Fsico
33
33
33
38
38
40
40
42
42
43
44
45
47
47
6. Ferramentas utilizadas
48
49
Anexos
I.
53
II.
59
iii
ndice de Figuras
10
14
19
27
27
28
28
38
41
41
42
43
45
iv
ndice de Tabelas
Tabela 1 - Dicionrio de dados das entidades
10
13
13
30
30
30
31
31
31
31
32
1. Introduo
Este primeiro capitulo tem como objetivo apresentar uma breve introduo ao projeto a
realizar. Sendo assim, necessrio definir o contexto no qual se desenvolve o caso de estudo,
seguido da sua descrio. tambm importante perceber os motivos que levaram criao da
BelaPadaria assim como os objetivos pretendidos.
Ainda numa parte introdutria ao nosso trabalho prtico, vamos definir o contexto no
qual se desenvolve o caso de estudo e posteriormente descrev-lo.
Vamos tambm abordar alguns motivos que nos levaram escolha e posterior
desenvolvimento da BelaPadaria, incluindo desta forma, uma anlise do caso de estudo.
Relativamente a segunda parte do nosso projeto ser apresentado o modelo lgico
correspondente ao modelo conceptual. Faremos uma anlise e validao das relaes atravs
da normalizao e ainda de seguida faremos a validao das relaes construindo o mapa das
transaes e respetivas anotaes e concluses finais.
1.1. Contextualizao
A panificao talvez uma das artes culinrias mais antigas, os primeiros relatos sobre
a produo e consumo de po pelo homem datam do ano 8.000 a.C. quando uma
massa de
farinha de trigo (obtida pela moagem rudimentar com pedras) seria misturada com gua e
cozinhada em pedras aquecidas. Atualmente o processo de produo de po est bastante
diferente devido grande evoluo e concorrncia no mundo da indstria, existe uma grande
oferta tecnolgica e inovadora que permite s empresas oferecer um servio com qualidade e
diversificao aos clientes. O facto de as empresas encontrarem equipamentos adaptados
sua necessidade, cujo investimento muito alto, quase todas as padarias tm os mesmos
produtos, sendo artesanal e padronizado, o que fica muito claro que a maioria dos produtos
pr- mistura, com acabamento no ponto de venda, parecendo os mesmos em todas as
padarias. apostando nesses mercados sempre em evoluo e procurando disponibilizar
produtos a preo mais baixo que a concorrncia, que surge a BelaPadaria.
A empresa BelaPadaria dedica-se ao fabrico de po e outros derivados para venda no
setor alimentar. A empresa efetua todo o processo de fabrico, desde a aquisio da matria1
Foi o facto de ser um alimento simples e to famoso que nos fez pensar em criar uma
base de dados para a gesto mais eficiente de uma padaria. Visto que o po do consumo
comum da comunidade portuguesa, achamos que uma empresa deste tipo daria lucro e teria
margem para crescer.
Devido grande adeso esperada por parte de potenciais clientes, esta rea d
bastante lucro empresa, e consequentemente, o sucesso pretendido.
Objetivos
Aps a concluso deste projeto e da ingresso da BelaPadaria no mercado,
esperado que se consiga atingir um determinado nmero de objetivos. Assim, um dos objetivos
pretendidos que a empresa consiga progredir no mercado, obtendo sempre um nmero cada
vez mais elevado de clientes ao longo do tempo. Para o aumento da produo esperado,
espera-se conseguir atingir um nvel elevado no que diz respeito rapidez e organizao de
todos os membros da empresa.
Surge tambm a necessidade de
comunidade. Pretende-se que sejamos reconhecidos como os mais econmicos e com mais
qualidade. Pretende-se tambm que os servios oferecidos sejam cada vez mais e melhores.
Outro objetivo seria proporcionar ao cliente um bom atendimento, para alm dos objetivos
mencionados, pretende-se que a empresa tenha facilidade no acesso e gesto de informao
sobre clientes, ofertas, faturas e empregados.
Assim sendo o documento est organizado em sete captulos, sendo que o primeiro
est a ser abordado e trata do processo de conhecimento do caso de estudo, mais
especificamente, a contextualizao do caso de estudo, a apresentao do mesmo, a
motivao para que o mesmo seja trabalhado e por fim os objetivos pretendidos com a
materializao da soluo do caso de estudo.
O segundo captulo aborda o levantamento de requisitos que ser a base para todo o
resto do trabalho a desenvolver. Assim no terceiro captulo teremos o desenvolvimento do
modelo conceptual que acontece diretamente a partir do levantamento de requisitos. O modelo
3
Produtos
Clientes
Funcionrios
Para se registar, um funcionrio dever ter idade igual ou superior a 18 anos e inferior
a 65 anos.
Pedidos
3.1.1 Cliente
O cliente uma das entidades mais importantes no processo de venda, pois vai
adquirir os produtos que a BelaPadaria produz. O processo de venda torna-se mais rpido e
prtico se os dados do cliente forem adquiridos previamente, no entanto, o registo de cada
cliente no obrigatrio. Posto isto notvel a necessidade da criao da entidade clientes.
8
3.1.2 Funcionrio
Uma outra personagem importante no processo de venda e fabrico ser a entidade
funcionrio. Esta surge na venda como representante desta fbrica de produzir po, ainda que,
nem todos os funcionrios desta empresa estejam em contato direto com o pblico. Surge
ento a entidade funcionrios.
3.1.3 Pedido
A entidade Pedido servir para registar todos os produtos e as quantidades pedidas
por cada entidade Cliente. Como tal, o registo pormenorizado dos pedidos so cruciais no
nosso problema.
3.1.4 Produto
Os diferentes tipos de produtos devem ser caracterizados com detalhe de modo a
serem facilmente identificados. Surgem portanto a entidade produto. Existem vrios tipos de
pes e ainda alguns tipos de bolos, como baguetes, po bijou, po centeio, broa de milho, po
com chourio, bolas de Berlim, tarte de morango podero ser alguns dos exemplos dos
produtos presentes no sistema.
Descrio
Sinnimos
Consumidor
Clientes
Artigo
Produtos
Empregado
Funcionrios
Pedidos
Pedido
Ocorrncia
Nome Entidade
Multiplicidade
Relacionamento
Multiplicidade
Nome Entidade
Funcionrio
(1, 1)
Gere
(0, n)
Funcionrio
Funcionrio
(1, n)
Regista
(0, n)
Pedido
Funcionrio
(1, n)
confeciona
(0, n)
Produto
Pedido
(1, n)
feito pelo
(1, 1)
Cliente
Pedido
(1, n)
constitudo
(1, n)
Produto
10
tipos
de
relacionamentos/
Atributo
Descrio
Tipo de
dados e
tamanho
Nulo
Chaves
IdCliente
Int
No
Primria
Nome
Varchar 75
Sim
NrCartaoCidadao
Numeric 8
Sim
NrContribuinte
Numeric 9
Sim
DataNascimento
DATE
Sim
CdigoPostal
Varchar 8
Sim
Rua
Varchar 75
Sim
Concelho
Varchar 75
Sim
Telemvel
Numeric 9
Sim
E-mail do cliente.
Varchar 75
Sim
idProduto
Int
No
Clientes
Produtos
11
Primria
Funcionrios
nome
Varchar 75
No
preo
Preo do produto.
Numeric 7, 2
No
stock
Stock do produto.
Int (10)
No
durao
TIME
Sim
idFuncionario
Numeric 8
No
Nome
Nome do funcionrio.
Varchar 75
No
Salrio
Numeric 8, 2
No
NIB
Nmero de identificao
bancria, para a qual recebe o
salrio.
Numeric 22
No
NrCartaoCidadao
Numeric 8
No
NrContribuinte
Numeric 9
No
DataNascimento
Data de nascimento do
funcionrio.
DATE
No
CdigoPostal
Numeric 8
No
Freguesia
Nome da freguesia do
funcionrio.
Varchar 75
No
NPorta
Varchar 10
Sim
Rua
Varchar 75
Sim
Concelho
Nome do concelho do
funcionrio.
Varchar 75
No
Distrito
Varchar 75
No
Telemvel
Nmero de telemvel do
funcionrio.
Numeric 9
No
Telefone
Nmero de telefone do
funcionrio.
Numeric 9
Sim
Endereo de facebook do
funcionrio.
Varchar 75
Sim
Endereo de e-mail do
funcionrio.
Varchar 75
Sim
12
Primria
Pedidos
horario
Nmero inteiro
No
id
Nmero inteiro
No
valor
DECIMAL 7, 2
No
dataHora
DATETIME
No
Primria
Atributo
Descrio
Tipo de dados
e tamanho
Nulo
Pedido
constitudo por
produto
quantidade
A quantidade de cada
produto que constitui o
produto
Numeric 8
No
quantidade
A quantidade de
produtos que foram
confecionados pelo
funcionrio
Numeric 8
No
dataConfe
A data de confeo de
um produto por um
funcionrio
DATETIME
Sim
Produto
confecionado
por funcionrio
13
Clientes:
Chaves candidatas: {idCliente, nr_cartao_cidadao, nr_contribuinte}
Chave primria: A chave primria escolhida ser o id pois, apesar de todos serem do
mesmo domnio (nmeros inteiros), o que tem menor ordem de grandeza.
Chaves Alternadas: nr_cartao_cidadao,nr_contribuinte
Pedidos:
Chaves candidatas: {idPedidos}
14
Chave primria: A escolha da chave primria recai na nica chave candidata, id.
Chaves Alternadas: Nenhuma.
Funcionrios:
Chaves candidatas: {idFuncionarios, nr_cartao_cidadao, nr_contribuinte}
Chave primria: A chave primria escolhida ser o id pois, apesar de todos serem do
mesmo domnio (nmeros inteiros), o que tem menor ordem de grandeza.
Chaves Alternadas: nr_cartao_cidadao, nr_contribuinte
Produtos:
Chaves candidatas: {idproduto, Nome}
Chave primria: A chave primria escolhida ser o id pois, comparando com o nome,
requer menor carga computacional pois o nome uma string e o id um inteiro.
Chaves Alternadas: Nenhuma.
caminhos entre duas entidades do modelo, contudo isso no implica que existam
relacionamentos redundantes entre elas, pois tais relacionamentos podem representar
associaes distintas.
3.7. Validar
Modelo
com
perguntas
do
utilizador
Neste momento est definido um modelo conceptual que representa os requisitos
impostos pela BelaPadaria. Assim, justifica-se ento a verificao de todo o modelo de forma a
garantir que este consegue dar resposta a todas as interrogaes requeridas pelo utilizador. Se
o modelo no conseguir responder a alguma das interrogaes analisadas, ento significa que
houve algum erro na modelao, e podero ter de ser repetidos alguns passos da modelao
conceptual j realizados. Apresentar-se-o de seguida as perguntas e as suas respostas tendo
em conta as entidades e relacionamentos que sero usados para responder.
Qual o nmero de pedidos que determinado cliente fez entre duas datas?
Esta pergunta importante, pois percebe-se desta forma, se o cliente est ou no satisfeito
com os nossos produtos, para sabermos quantos pedidos foram efetivamente efetuados entre
16
duas datas por um determinado cliente, temos que inicialmente saber quais os clientes que
efetuaram pedidos e depois basta somar o nmero de pedidos nas respetivas datas.
Quais foram os produtos confecionados por um determinado funcionrio cujo pedido foi
efetuado numa determinada data?
Acedemos a entidade pedido que contem o atributo data no qual fazemos uma pesquisa pelo
dia pedido, e daqui resultam todos os pedidos referentes ao dia em causa. De seguida para
cada um desses pedidos consultamos todos os produtos que o constituem e para cada um
desses produtos consultamos o funcionrio que o confecionou fazendo uma pesquisa pelo id
do funcionrio.
17
18
4. Modelo Lgico
Terminada a modelao conceptual, procedemos fase de modelao lgica. Esta
consiste na traduo do modelo conceptual anteriormente desenvolvido para um modelo lgico
capaz de representar os requisitos definidos, assim como a validao do mesmo. Aps a
concluso desta fase, deveremos obter um modelo lgico nico representativo dos requisitos
do sistema. Este modelo est apresentado na figura abaixo:
19
(Database Definition Language), onde se descreve a composio de cada uma das relaes,
tendo por base as seguintes estruturas que se podem encontrar no modelo conceptual:
1 - Entidades Fortes
2- Relacionamentos muitos-para-muitos
3- Relacionamentos um-para-muitos Recursivos
4- Relacionamentos um-para-muitos
Para cada um dos pontos acima listados ser descrito como foram abordados no contexto do
problema de forma a derivar as relaes e os relacionamentos alcanados no modelo lgico.
1 - Entidades Fortes
Uma entidade forte uma entidade que no depende da existncia de outra entidade e
que pode por si s formar uma chave primria com os seus atributos. No modelo desenvolvido
todas as nossas entidades so fortes.
nrContribuinte,
dataNascimento,
2- Relacionamentos muitos-para-muitos
Quando este tipo de relacionamentos acontece criada uma nova relao que conter
todos os atributos que fazem parte do relacionamento. A nova relao ter uma cpia das
chaves primrias das entidades que participam no relacionamento e funcionam como chaves
estrangeiras. Uma dessas chaves ou mesmo as duas formaro a chave primria da nova
relao ou ainda em combinaes com outros atributos da nova relao. Desta forma surgem
as seguintes relaes:
Funcionarios - Pedidos
Resulta:
FuncionariosPedidos (Funcionario, Pedido)
Chaves Estrangeiras: Funcionario correspondente a idFuncionario
20
Funcionarios Produtos
Resulta:
FuncionariosProdutos (Funcionario, Produto, quantidade)
Chaves Estrangeiras: Funcionario correspondente a idFuncionario
Produto correspondente a idProduto
Chaves Primrias: (Funcionario, Produto)
Pedidos Produtos
Resulta:
PedidosProdutos (Pedido, Produto, quantidade)
Chaves Estrangeiras: Pedido correspondente a idPedido
Produto correspondente a idProduto
Chaves Primrias: (Pedido, Produto)
4- Relacionamentos um-para-muitos
Neste tipo de relacionamentos, a entidade de multiplicidade muitos fica com um novo
atributo (chave estrangeira) que a chave primria representante da outra entidade. Temos no
nosso modelo a seguinte
21
4.2. Validao
das
relaes
atravs
da
normalizao
Esta fase do processo tem como objetivo decidir quais os atributos que pertencem em
conjunto numa relao. Sero validados os atributos presentes em cada relao de modo a
assegurar que estes so os necessrios para sustentar os requisitos de dados. As relaes
devem da mesma forma ser validadas para evitar redundncia e situaes de inconsistncia
aquando de inseres ou atualizaes. Devem ser identificadas as dependncias funcionais
entre atributos em cada relao e todas as chaves primrias. De notar que estas dependncias
funcionais identificam os relacionamentos do modelo de dados. O resultado da normalizao
um modelo lgico estruturalmente consistente e que possui mnima redundncia. No entanto,
s vezes discutido que um desenho de uma base de dados normalizada no oferece o
mximo de eficincia de processamento. A normalizao fora-nos a perceber completamente
cada atributo e o que representa na base de dados. O processo de normalizao ser
executado at terceira forma normal.
22
Neste caso como tambm j foram tomadas consideraes acerca das dependncias
funcionais nas relaes, tambm j no possvel encontrar no modelo casos em que a
segunda forma normal seja desrespeitada.
Assim como os atributos nessa tabela so dependentes da totalidade da chave, a
segunda forma normal j se verifica.
4.3. Validao
das
relaes
atravs
das
23
Nesta transao pretende-se que o valor do stock se mantenha consistente, para tal
sempre que um funcionrio confeciona uma quantidade de produtos o stock desse produto
necessita de ser atualizado. Ser feita a insero na tabela FuncionariosProdutos o funcionrio
responsvel pela confeo do produto, a quantidade e data de confeo. Desta forma ser feita
uma atualizao ao stock na tabela Produtos, mantendo assim a coerncia de dados.
Nesta transao atualizada a nossa lista de funcionarios, ser feita uma atualizao
na tabela FuncionarioPedidos onde ocorre a substituio do funcionrio despedido pelo novo
funcionrio. De seguida ser efetuada a eliminao do funcionrio despedido da tabela
Funcionarios.
24
As chaves primrias so valores que no podem ser nulos mas podem existir outros que por
regras de negcio tambm se enquadram neste ponto. Todos os atributos que podem ter esta
caracterstica podem ser visualizados no dicionrio de dados lgico.
Todos os atributos tem a si associado um domnio que define a gama ou tipo de valores que
cada atributo pode ter. Desta forma tenta-se dar algum significado a cada atributo guardado de
forma a diminuir possveis erros futuros do utilizador. O domnio dos atributos foi apurada no
desenvolvimento j efetuado e pode ser visualizado no dicionrio de dados do modelo
conceptual.
3 Multiplicidade:
A multiplicidade uma restrio que diz respeito ao relacionamento entre entidades. esta
regra que identifica a cardinalidade que ocorre entre duas relaes, ou seja, identifica a forma
como os dados se relacionam. A multiplicidade est presente desde logo no modelo conceptual
e consequentemente ir passar para o modelo lgico. O modelo lgico gerado est dependente
da multiplicidade presente no modelo conceptual e portanto para cada multiplicidade diferente
gerado uma soluo diferente.
4 - Integridade da entidade:
Esta integridade garantida pelo uso de uma chave primria que seja nica e no nula. Desta
forma garante-se que cada tuplo identificado univocamente por uma chave na relao. A
forma como a chave primria formada depende do caso em estudo mas desde que se
cumpra as duas regras apresentada esta integridade ser cumprida. Esta restrio foi
considerada na identificao das chaves primrias e explicita no dicionrio de dados.
5 - Integridade referencial:
Esta regra de integridade diz respeito a forma como as chaves estrangeiras so utilizadas.
Independentemente da sua utilizao obrigatrio garantir que os relacionamentos entre as
relaes sejam preservados e o modelo relacional seja respeitado, ou seja, esta restrio
pretende garantir que o valor de uma chave estrangeira de uma relao filho seja o mesmo e
exista na chave primria da relao pai associada. Sempre que uma chave estrangeira sofra
alteraes devido a remoes e modificaes esta integridade deve ser verificada. O dicionrio
de dados explicita que as chaves estrangeiras so eleitas chaves primrias de outras tabelas.
Esta restrio supervisiona a consistncia da base de dados, uma vez que uma alterao
numa chave primria deve ser refletida nas chaves estrangeiras a esta associada.
25
Esta restrio ajuda na consistncia da base de dados e deve portanto ser verificada
sempre que uma relao "pai" sofra qualquer tipo de alterao ou remoo.
Inserir um registo na relao pai Uma insero na relao pai no interfere com a
integridade referencial. Contudo de modo manter a informao atualizada e consistente
necessrio proceder atualizao nas respetivas relaes filho.
Atualizar a chave primria num registo pai Da mesma forma que a situao
anterior, as atualizaes da chave primria num registo pai devem ser refletidas na
relao filho. Por isso foram novamente consideradas as estratgias de NO ACTION e
CASCADE.
6 - Restries gerais:
Por fim, necessrio ver representadas no modelo as restries que dizem respeito a
regras de negcio. Todas as restries deste tipo sero apresentadas abaixo, agrupadas por
relao. Como todas as restries acima enunciadas estas tambm tm de ser refletidas no
modelo de forma a que o modelo represente a organizao da BelaPadaria de forma correta.
Clientes
O nmero do BI, NIF, email so nicos
26
Esta restrio est definida no script de criao das tabelas, passaremos a mostrar na
imagem a baixo um exemplo:
Funcionrios
Para se registar, um funcionrio dever ter idade igual ou superior a 18 anos e inferior
a 65 anos, o seu salrio dever ser superior a 0
27
Produtos
Os preos dos produtos devero ser superior a zero euros
Pedidos
O valor do pedido dever ter um valor superior a zero
4.5. Reviso
do
modelo
lgico
com
utilizador
A reviso do modelo lgico junto do utilizador tem como principal objetivo validar o
desenho lgico de acordo com as especificaes do cliente.
Primeiramente foi apresentado a evoluo da arquitetura da sua fase inicial,
conceptual, para a fase lgica. Recorrendo ao dicionrio lgico, foi possvel caracterizar toda a
estrutura a nvel da sua robustez, de garantias de consistncia de dados, e identificar de que
forma a estrutura vai de encontro com a realidade pretendida pelos requisitos do cliente. Aqui
foi tomado especial foco em relao a todas restries que o dicionrio lgico definia para cada
uma das relaes da estrutura.
28
Para se poder continuar a analise necessrio saber-se o tamanho que o sql server
2014 utiliza para cada tipo de dados. De seguida, apresenta-se um quadro resumo para os
tipos de dados utilizados no projeto e o seu respetivo tamanho.
Tipos de dados
Tamanho
Integer
4 bytes
Varchar(N)
2 + N bytes
DATE
3 bytes
DATETIME
8 bytes
29
DECIMAL (N, M)
TIME
3 bytes
Tabela 5 - Tipos de dados e tamanhos em Sql Server
na
tabela
FuncionariosPedidos,
basta
31
32
5. Modelo Fsico
Nesta etapa efetuada a traduo do modelo lgico desenvolvido anteriormente para
um modelo fsico a ser implementado num SGBD. Esta etapa tambm desenvolvida no
sentido de otimizar o modo como os dados so guardados e acedidos. Existem diversas
estruturas de armazenamento dados. Ao passo que algumas delas so extremamente
eficientes na tarefa de guardar dados, umas so mais eficientes no modo como os dados so
acedidos. A escolha das estruturas de armazenamento naturalmente condicionada pelo
SGBD, j que estamos dependentes da disponibilizao ou no de estruturas alternativas de
armazenamento. O modelo de dado fsico deve ser totalmente dirigido para a natureza dos
dados e aquilo que se pretende realizar com eles.
Assim, so seguidamente descritas as relaes base, organizao de ficheiros e
ndices usados para alcanar um uso eficiente dos dados, e todas as restries de integridade
e medidas de segurana.
33
cada relacionamento, e de forma muito parecido com o que foi feito para o modelo lgico, ser
apresentada a informao necessria mas agora tendo em considerao o SGBD escolhido.
Relao Pedidos
Domnio ID:
Inteiro
Domnio Valor:
Decimal
Domnio DataHora
DateTime
Domnio Cliente
Inteiro
Pedidos(
idPedido
ID
NOT NULL,
valor
Valor
NOT NULL,
dataHora
DataHora
NOT NULL,
Cliente
Cliente
NOT NULL
Relao Clientes:
Domnio ID
Inteiro
Domnio NrCartoCidado
Domnio Nome
Domnio NrContribuinte
Domnio DataNascimento
Data
Domnio CodPostal
Domnio Rua
Domnio Concelho
Domnio Telemvel
Domnio Email
Clientes(
idCliente
ID
NOT NULL,
nrCartaoCidadao
NrCartoCidado
NULL,
nome
Nome
NULL,
nrContribuinte
NrContrinuinte
NULL,
dataNascimento
DataNascimento
NULL,
codPostal
CodPostal
NULL,
rua
Rua
NULL,
34
concelho
Concelho
NULL,
telemovel
Telemvel
NULL,
NULL,
Relao Funcionrios
Domnio ID
Inteiro
Domnio Horrio
Inteiro
Domnio NIB
Domnio Salrio
Domnio Nome
Domnio nrContribuinte
Dominio DataNascimento
Data
Domnio NrCartoCidado
Inteiro, tamanho 8
Domnio NrPorta
Domnio Rua
Domnio Freguesia
Domnio Concelho
Domnio Distrito
Domnio CodPostal
Domnio Telemvel
Domnio Telefone
Domnio Facebook
Domnio Email
Domnio Funcionrio
Inteiro
Funcionrios(
idFuncionario
ID
NOT NULL,
horario
Horrio
NOT NULL,
nib
NIB
NOT NULL,
salario
Salrio
NOT NULL,
nome
Nome
NOT NULL,
nrContribuinte
NrContribuinte
NOT NULL,
dataNascimento
DataNascimento
NOT NULL,
nrCartaoCidadao
NrCartoCidado
NOT NULL,
nrPorta
NrPorta
NULL,
rua
Rua
NULL,
35
freguesia
Freguesia
NOT NULL,
concelho
Concelho
NOT NULL,
distrito
Distrito
NOT NULL,
codPostal
CodPostal
NOT NULL,
telemovel
Telemvel
NOT NULL,
telefone
Telefone
NULL,
NULL,
NULL,
Funcionario
Funcionrio
NULL,
Relao Produtos:
Domnio ID
Inteiro
Domnio Nome
Domnio Preo
Domnio Durao
TEMPO
Domnio Stock
Inteiro
Produto(
idProduto
ID
NOT NULL,
nome
Nome
NOT NULL,
preco
Preo
NOT NULL,
duracao
Durao
NULL,
stock
Stock
NOT NULL,
Funcionario
FuncionrioID
NOT NULL,
Pedido
PedidoID
NOT NULL,
Relao FuncionriosPedidos:
Domnio FuncionrioID
Inteiro
Domnio PedidoID
Inteiro
FuncionriosPedidos (
Relao FuncionriosProdutos
Domnio FuncionrioID
Inteiro
Domnio ProdutoID
Inteiro
Domnio Quantidade
Inteiro
Domnio dataConfe
Data
FuncionriosProdutos (
Funcionario
FuncionrioID
NOT NULL,
Produto
ProdutoID
NOT NULL,
quantidade
Quantidade
NOT NULL,
dataConfe
Data Confeo
NULL
Relao PedidosProdutos:
Domnio PedidoID
Inteiro
Domnio ProdutoID
Inteiro
Domnio Quantidade
Inteiro
PedidosProdutos(
Pedido
PedidoID
NOT NULL,
Produto
ProdutoID
NOT NULL,
quantidade
Quantidade
NOT NULL,
37
Relao Funcionrio
Relao produto
Para estas restries serem respeitadas implementaram-se na script de criao das tabelas os
mecanismos CHECK (preco > 0) e CHECK (stock >= 0), como pode ser observado na Figura 7.
Relao Pedido
De forma a aumentar a performance da base de dados, foi necessria uma anlise das
transaes que ocorrem entre as relaes. A partir desta anlise, foi possvel perceber a sua
funcionalidade e identificar as mais importantes. Como foi referido anteriormente, na anlise de
requisitos, foi elaborada uma lista com algumas das principais queries. Atravs da anlise
dessa lista, conclumos que a maior parte das delas apenas implicam operaes de leitura. No
entanto, tambm existem operaes frequentes que implicam a insero/atualizao de valores
nas relaes. De qualquer das maneiras, optamos por criar uma script que identifica o tipo de
operaes que cada querie implica.
40
41
so inseridos, o InnoDB tenta deixar 1/16 da pgina livre para futuras inseres e updates nos
registos do ndice. Se os registos do ndice so inseridos de forma ordenada, as pginas
resultantes estaro praticamente preenchidas. Caso as inseres sejam feitas de forma
aleatrio, as pginas estaro entre metade e praticamente preenchidas. Se o fator de
preenchimento da pgina de um ndice baixar para menos de metade, o InnoDB tenta contrair
a rvore para libertar a pgina. Como foi referido, o InnoDB utiliza a chave primria de cada
tabela como ndice. Sendo assim, vamos apresentar alguns ndices:
Integer
4 bytes
Date
3 bytes
Varchar(N)
2+N bytes
Decimal (7,2)
5 bytes
Decimal (8,2)
9 bytes
Aps alguns clculos, conclumos que o espao necessrio para cada registo nas tabelas so
os seguintes:
Funcionarios
614
FuncionariosPedidos
Pedidos
17
Produtos
63
43
PedidosProdutos
13
FuncionariosProdutos
15
Clientes
337
Agora, de acordo com a informao da nossa base de dados o espao necessrio para cada
registo numa tabela a multiplicar pelo nmero de registos totais:
Funcionario
8*614 = 4912
FuncionariosPedidos
30*8 = 240
Pedidos
30*17 = 510
Produtos
22*63 = 1386
PedidosProdutos
13*29 = 377
FuncionariosProdutos
26*15 = 390
Clientes
100*337 = 33700
Somando todos os valores de cada tabela, estima-se que o tamanho inicial necessrio para
a base de dados ronde 41755 bytes (40,77Kbytes).
Administrador Tem acesso a toda a Base de Dados e pode executar todas as aes
que entender.
Chefe de padaria Tem acesso a toda a informao exceto os dados pessoais dos
clientes.
Cliente Pode consultar os produtos que esto expostos, ver as compras que lhe
dizem respeito e os seus dados pessoais.
44
Figura 16 - Criao de uma vista coma informao dos horarios dos funcionrios
diferentes.
45
Funcionrios
Tem permisses de consulta e insero para todas as tabelas, mas este utilizador no
pode remover ou alterar nenhuma entrada de qualquer tabela.
Administrador
Este tipo de utilizador deve ter permisses para realizar todas as tarefas sobre a base
de dados.
5.5. Considerao
de
introduo
de
redundncia controlada
A introduo de redundncia controlada apenas deve ser considerada quando se
prev que a Base de Dados criada no cumprir os requisitos de performance pretendidos,
dado que esta contribui para o surgimento de dados inconsistentes. Quando se pretende evitar
o processamento simultneo de vrias relaes, manter um qualquer sistema de arquivo ou
manter as relaes a um nvel (simples) que permita satisfazer as queries dos seus
utilizadores, desnormalizar o sistema em causa pode ser uma opo vivel. Apesar de a
desnormalizao contribuir positivamente para o desempenho das operaes de pesquisa,
acontece o contrrio relativamente s operaes de atualizao. Deste modo, poder fazer
sentido considerar a realizao deste processo para relaes cuja frequncia de atualizaes
seja pequena e bastante menor do que a frequncia de pesquisas efetuadas. Neste sistema
optou-se por no introduzir nenhum tipo de redundncia.
47
6. Ferramentas utilizadas
Para a elaborao deste documento foram utilizadas vrias ferramentas:
48
49
Bibliografia
Thomas M. Connolly, Carolyn E. Begg - Database Systems: A Practical Approach to Design,
Implementation and Management - 4th Edition.
50
Base de Dados
ER
Entidade-Relacionamento
51
Anexos
52
I.
esquema
-- MySQL Workbench Forward Engineering
@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET
@OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
57
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
58
USE `belapadaria` ;
-- SET SQL_SAFE_UPDATES = 0;
Costa',
246464646,
'1994-01-21',
'4710-416',
'Rua
dos
Pees','Braga',933337681,'mmcostinha@gmail.com'),
(idCliente,14425150,'Xavier Francisco', 258903384, '1994-11-10', '2495-183', 'Rua da Central',
'Leiria',912845563,'xavier.n.francisco@gmail.com'),
(idCliente,14256545,'Maria Linda', 562345089, '1989-12-25', '4755-117', 'Rua da Quinto',
'Barcelos',919568697, 'marialinda@hotmail.com'),
(idCliente,13142598,'Pedro Miguel', 232524089, '1994-06-06', '4890-123', 'Rua da Cortina',
'Guimares',936575075,'celianlfg@hotmail.com'),
(idCliente, 65752855, 'Acacio Reino', 236896573, '1990-06-01','4789-456', 'Rua das Camlias',
'Braga', 936545623, 'acacioreino@gmail.com'),
(idCliente,41988997, 'Afonso Felipe', 255590195, '1978-06-16', '4659-489','Rua Doutor
Fernando Santos', 'Braga', 919636489, 'afonsofilipe@hotmail.com'),
(idCliente,66813274, 'Aida Figueira', 234117754 , '1950-01-31', '4632-488','Rua Martins S',
'Guimares', 969596989, 'aidafigueira@gmail.com'),
60
'4755-118',
'Rua do
77563243
,'Cleiton
Dmaso',
230040906,'1946-04-06','4789-063',
'Rua
dos
243459649 , '1963-06-06','4695-569',
58402102,'Fausto Bezerril',
(idCliente, 28459026 , 'Irene Cayubi', 256196917, '1970-05-13', '3956-102', 'Rua das Flores',
'Aveiro', 912365698, 'irenecay@gmail.com'),
(idCliente, 31133069, 'Isaura Fraga', 216794139 , '1971-09-29', '3789-036', 'Rua dos Canteiros
da Igreja', 'Porto', 936632220, 'isaurafraga@gmail.com'),
(idCliente, 55387861 , 'Isilda Louzada',
77434812,'Moiss Mourato',
'Rua dos
Figos',239580157,'2002-12-11','4835-052','Rua
das
Violetas','Guimares',969654555,'jujufigos@hotmail.com'),
(idCliente,28778883,'Amlia Costa',223050562,'1989-10-10','3800-032','Rua do Rei','Viana do
Castelo',939564525,'amaliacostinha@yahoo.com'),
(idCliente,76460503,'Henrique Alburqueque',252339592, '1979-11-26', '3455-489', 'Rua dos
Combatentes', 'Fafe', 912211662, 'heriqueque@hotmail.com'),
(idCliente,54808239,'Susana Freitas',228058672,'1990-02-18','3820-416','Rua Mousinho da
Silveira','Aveiro',939998452,'sufrei@yahoo.com'),
(idCliente,12723975,'Cludia
Mendes',245217670,'2000-02-03','4035-025','Rua
das
Amoreiras','Lisboa',912103254,'mendeslau9@hotmail.com'),
(idCliente,72520958,'Joel
Freitas',220720397,'1992-06-01','4800-050','Rua
Rossio','Lisboa',969654148,'jufreitas@gmail.com'),
64
do
(idCliente,35078862,'Celina
Melo',241573795,'1990-03-02','4810-023','Rua
25
de
Abril','Porto',966659032,'melo11@gmail.com'),
(idCliente,50007458,'Eduardo
Almeida',232152526,'1999-09-12','3835-023','Rua
Central
3','Fafe',939365472,'edu_al_meida@gmail.com'),
(idCliente,24038347,'Ana
Joo
Castro',246336500,'1994-06-15','4835-005','Rua
de
'2000-01-01','3805-155','Avenida
da
Janeiro','Braga',918542013,'castro_ana34@hotmail.com'),
(idCliente,97767537,'Zita
Cerqueira',
217587087,
Guerra','Porto',939352012,'zzitac_5@gmail.com'),
(idCliente,72682483, 'lvaro Passos', 217484621 , '1988-09-13', '4800-212', 'Rua Soares dos
Santos ', 'Famalico', 912296364, 'passos88@hotmail.com'),
(idCliente,72682480, 'Manuel Mendes', 249807888 , '1998-09-13', '4850-211', 'Rua Sol do Ave ',
'Fafe', 932296304, 'manuelfmendes8@hotmail.com'),
(idCliente,67939759, 'rtur Fonseca', 240020325 , '1978-10-13', '4610-561', 'Rua Soares Abreu
', 'Felgueiras', 966296364, 'arturfonfon@hotmail.com'),
(idCliente, 66097075, 'Vitor Ferreira', 232536798, '1992-03-03', '4800-321', 'Rua dos Santos
Populares ', 'Famalico', 922206364, 'ferreira65@hotmail.com'),
(idCliente, 23656282, 'Diogo Costa', 252918603, '1984-08-11', '4710-417', 'Rua Soares dos
Santos ', 'Braga', 912246364, 'dicosta@hotmail.com');
'1',003589657632569874569,
2000,
'Clia
Figueiredo',
262646080,
'1993-02-
'Barcelos',
'Braga','4755-118',
919568697,
'252957073',
'https://www.facebook.com/celianlfg','celianlgh@hotmail.com', null),
(idFuncionario, '2',032565658456985698563, 1100, 'Jos Joo', '262646210', '1993-0329',16254896,2569,' Rua da Quint', 'Remelhe',
'Barcelos', 'Braga', '4625-485', 926354789, 253808909, 'https://www.facebook.com/JosJoo',
'jj@gmail.com', null),
(idFuncionario, '1',123568466569874563210, 850, 'Carlos Daniel', 264646200, '1993-09-22','
14384154', 93,'Rua da Calada',
'Courel','Barcelos',
'Braga',
'4589-129',
911171046,
do
Barroso',
'Boticas',
'Vila
Real',
'4068-110',
934885521,
'Carvalhas','Amares',
'Braga','4720-118',963126744,
257527118,'https://www.facebook.com/MarcusCosta','marcuscosta@gmail.com', 2),
(idFuncionario, '3',123123123123123123123, 1090, 'Lus Oliveira', 245689056, '1989-0622','13459687',56,'Rua das Cancelinhas',
'Oliveira Santa Maria','Vila Nova Famalicao','Porto', '4899-123', 915325568, 252951987,
'https://www.facebook.com/LuisCarlosRoqueOliveira','luis.roqueoliveira@gmail.com', 1),
(idFuncionario, '2', 123654789632023654569, 1500, 'Mrcia Costa', 252646260, '1994-0121',14513294, 46, 'Rua do Rio Alto', 'Alto',
'Pvoa
de
Varzim',
'Porto',
'4490-002',
919299987,
253419557,
'Guimares',
'Braga',
'4835-599',
252369896,'https://www.facebook.com/manuelfaria', 'manuelfaria@gmail.com', 2 );
-- SELECT * FROM funcionarios;
933365236,
(8, 19),
(9, 6),
(10, 21),
(11, 9),
(12, 10),
(13,10),
(14, 1),
(15, 5),
(16, 15),
(16, 1);
70