Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof: Jailton Cardoso da Cruz A Abordagem Relacional Prof. Jailton Cardoso A meta do projetista é produzir um modelo ou representação de qualquer entidade que será construída posteriormente. O processo combina: ◦ Intuição ◦ Julgamento baseado em experiências ◦ Heurísticas ◦ Critérios de julgamento da qualidade Prof. Jailton Cardoso Atividades Técnicas ◦ Projeto Projeto de dados Projeto Arquitetural Projeto Procedimental ◦ Codificação ◦ Testes Prof. Jailton Cardoso Projeto de Dados ◦ Transforma o modelo de domínio de informação criado durante a análise nas estruturas de dados que serão exigidas para se implementar o software Projeto Arquitetural ◦ Define o relacionamento entre os grandes componentes estruturais do programa Projeto Procedimental ◦ Transforma os componentes estruturais numa descrição procedimental do software Prof. Jailton Cardoso Prof. Jailton Cardoso Modelagem de Dados ◦ Consiste da aplicação de técnicas para, a partir dos requisitos do sistema, desenvolver o projeto do modelo de dados necessário para armazenar os dados que darão suporte ao desenvolvimento do modelo de processos ◦ Neste momento não estaremos preocupados nos processo e sim nos objetos que compões este minimundo, identificando os elemetos conceituais que são as entidades, relacionamentos e os atributos das entidades. Prof. Jailton Cardoso Modelagem de Dados ◦ Este processo, devido sua característica de ser independente de software ou de hardware facilita a implementação da independência física e lógica de dados. ◦ Desenvolver o modelo de dados é um processo criativo e, na minha modesta opinião, o mais importante no projeto de um sistema. É como criar música e poesia. Prof. Jailton Cardoso ... “Só queria discutir um ponto: a relação entre poesia e música no ato criativo. Há músico que faz a melodia e depois o poeta “coloca” a letra. Vinicius de Moraes teria feito isso com Tom Jobim, com Baden Powell e até com compositores clássicos. Pode ou não pode? Em sentido contrário, o músico “musicaliza” o poema como fez Joan Manuel Serrat com os versos esplêndidos de Antonio Machado e o nosso Fagner fez com um texto de Cecília Meireles.” ... Disponível em: http://www.antoniomiranda.com.br/editorial/letra_d_musica.html Prof. Jailton Cardoso Prof. Jailton Cardoso Estratégias para Desenvolvimento do Projeto de Dados Podemos desenvolver o modelo de dados a partir de três elementos principais: ◦ Descrição Funcional ◦ Definição de Arquivo ◦ Documento Prof. Jailton Cardoso Neste caso iremos criar o modelo de dados a partir de uma descrição narrativa de processo, por meio escrito ou falado, ou de algum processo do negócio. Prof. Jailton Cardoso Descrição Funcional 01. Uma determinada empresa fornece produtos e serviços de informática. Clientes fazem 02. pedidos de material ou serviços através de um formulário de pedidos. Cada cliente 03. é identificado por um código pelo qual podemos ter acesso aos seus dados tais como 04. nome, endereço (rua, numero, bairro, cidade, cep), telefone, o tipo de cliente, se 05. pessoa física ou jurídica, o número do CPF ou CNPJ e seu limite de crédito. Nos 06. pedidos devemos informar os dados do cliente, o endereço de entrega, o tipo de frete 07. (CIF - por conta do cliente ou FOB – por conta do fornecedor), os dados da 08. transportadora. Os itens do pedido devem ser detalhados, informando o código do 09. produto (material ou serviço a ser fornecido), o nome do produto, a quantidade, 10. unidade de medida o valor unitário e o valor total do referido item. O pedido deve ser 11. totalizado no campo “Total do Pedido”. Informar também o código e o nome do 12. vendedor a data do pedido e o prazo de entrega. Prof. Jailton Cardoso Questões ◦ ¿ Sobre quais os objetos queremos manter informações ◦ ¿ Quais as informações de interesse do usuário. Devemos encontrar no caso descrito questões tais como: ¿ Quais produtos foram comprados por determinado cliente ¿ Qual o total de venda de um determinado vendedor ¿ Quais pedido foram transportados por determinada transportadora ¿ Quais os serviços pedidos ¿ Para qual(ais) cidade(s) foram efetuadas vendas Prof. Jailton Cardoso Entidades: ◦ Linha 1. Produtos e clientes (objeto concreto), serviços (objeto abstrato) ◦ Linha 2. Pedido (documento) ◦ Linha 4. Bairro, cidade (locais) ◦ Linha 8. Transportadora (pessoa jurídica) ◦ Linha 10. Unidade de medida (evento legal) ◦ Linha 12. Vendedor (pessoa física) Prof. Jailton Cardoso Relacionamentos: ◦ Linha 1,2: Clientes fazem pedidos ◦ Linha 7,8: Transportadora transporta pedido ◦ Linha 8,9:Pedido possui produtos ◦ Vendedor emite pedido Prof. Jailton Cardoso Transportadora Transporta 1 N Cliente Faz 1 N Emite Vendedor N 1 Pedido Produto Composto N N Prof. Jailton Cardoso Neste caso iremos criar o modelo de dados a partir de uma descrição de um arquivo de um sistema legado utilizando o processo de normalização. ◦ Modelo Relacional ◦ Sistema de Arquivo ◦ Formato TXT Prof. Jailton Cardoso *NUM_PEDIDO COD_CLIENTE NOME_CLIENTE TIPO_CLIENTE CGC_CPF_CLIENTE ENDER_CLIENTE TEL_CLIENTE LIMITE_CRED_CLIENTE ENDERECO_ENTREGA TIPO_FRETE TIPO_PEDIDO QTDE_PRODUTO #COD_PRODUTO #NOME_PRODUTO #SIGLA_UNIDADE_MEDIDA_PRODUTO #UNIDADE_MEDIDA_PRODUTO #QTD_PRODUTO # VALOR_UNITARIO #VALOR_TOT_PRODUTO VALOR_TOT_PEDIDO COD_VENDEDOR NOME_VENDEDOR COD_TRANSPORTADORA NOME_TRANSPORTADORA * Indica chave primária # indica atributo multivalorado Prof. Jailton Cardoso Conceito proposto E. F. Codd (1972) Processo matemático formal Fundamentado na teoria dos conjuntos Prof. Jailton Cardoso Objetivo: criar um conjunto de entidades e relacionamentos que se apresentem livre de problemas tais como: ◦ Grupos repetitivos (atributos ou conjunto de atributos multivalorados) ◦ Anomalias de atualização ◦ Dependência funcional (parcial, em relação à chave primária composta, ou transitiva) ◦ Redundância de dados ◦ Garantir a unicidade dos dados ◦ Permitir uma representação semântica do modelo Prof. Jailton Cardoso Anomalias de atualização e consulta ◦ Anomalia de inclusão ◦ Anomalia de remoção ◦ Anomalia de atualização ◦ Anomalias de consulta Prof. Jailton Cardoso Vamos utilizar o exemplo para ilustrar o processo de normalização utilizando uma descrição de um arquivo de nota fiscal Onde utilizaremos a seguinte notação: * chave primária # item repetitivo (multivalorado) Prof. Jailton Cardoso ¿ Quando ocorre – ocorre quando uma entidade apresenta atributos ou grupos de atributos repetitivos. ¿ Por que – uma tupla deve ser ATÔMICA, ou seja indivisível. ¿ Como resolver – ◦ Eliminando o atributo ou grupo de atributos multivalorados. ◦ Criando uma nova entidade com o atributo ou grupo de atributos multivalorados, onde a chave primária da entidade original fará parte da chave da entidade criada além de outro(s) atributo(s) da nova entidade que garantam a que não haverá duplicidade. Prof. Jailton Cardoso Pedido *NUM_PEDIDO COD_CLIENTE NOME_CLIENTE TIPO_CLIENTE CGC_CPF_CLIENTE ENDER_CLIENTE TEL_CLIENTE LIMITE_CRED_CLIENTE ENDERECO_ENTREGA TIPO_FRETE TIPO_PEDIDO QTDE_PRODUTO VALOR_TOT_PEDIDO COD_VENDEDOR NOME_VENDEDOR COD_TRANSPORTADORA NOME_TRANSPORTADORA Item_Pedido *NUM_PEDIDO *COD_PRODUTO NOME_PRODUTO SIGLA_UNIDADE_MEDIDA_PRODUTO UNIDADE_MEDIDA_PRODUTO QTD_PRODUTO VALOR_UNITARIO VALOR_TOT_PRODUTO Observar que COD_PRODUTO foi escolhido para compor a chave composta da entidade Item_produto a fim de garantir que não ocorra tuplas duplicadas Pedido Item_PedidoPossui 1 N Prof. Jailton Cardoso ¿ O que é – ocorre quando um atributo ou conjunto de atributos depende funcionalmente de outro, ou seja um atributo ou conjunto de atributos B depende de um atributo A se A determina B. A → B, lê - se: ◦ A funcionalmente determina B ◦ B é funcionalmente dependente de A ◦ B éfunção de A Para cada valor de A só existe um valor de B. Prof. Jailton Cardoso ¿ O que é – ocorre quando, em uma entidade que possui chave primária composta, para cada atributo B depende funcionalmente da chave composta completa e não parte dela. Caso Um atributo B dependa de parte da chave ocorre uma dependência PARCIAL em relação à chave composta. A, B, C → D (D é totalmente funcionalmente dependente de {A, B, C}) se para todo valor de {A, B, C} só existe um valor de D, e se D não é funcionalmente dependente de A, ou B, ou C. Prof. Jailton Cardoso ¿ O que é – ocorre quando, em uma entidade, existe(m) atributo(s) que depende(m) funcionalmente de um outro atributo que não faz parte da chave. Esta análise deve ser feita entre os atributos que não fazem parte da chave. A → B (B é funcionalmente dependente de A) e A é um atributo que não faz parte da chave primária. Ocorre dependência funcional transitiva quando o valor de um atributo também pode ser obtido através de uma expressão. f(A) → B ◦ P. ex. data_nascimento e idade. O atributo idade pode ser obtido atraveés da subtração da data atual pela data do nascimento Prof. Jailton Cardoso ¿ Como – uma entidade está na segunda forma normal quando se encontra na 1FN e não existe ocorrência de dependência funcional parcial. Então a segunda forma normal só se aplica a entidades com chave concatenada. ¿ O que fazer – criar uma nova entidade cuja chave primária será a parte da chave que gerou a dependência e os atributos dependentes da parte da chave. Na entidade Item_NF aplicaremos a 2FN Prof. Jailton Cardoso Item_Pedido *NUM_Pedido *COD_PRODUTO QTDE_PRODUTO VAL_UNIT_PRODUTO VAL_TOTAL_PRODUTO Pedido Item_PedidoPossui 1 N Produto *COD_PRODUTO NOME_PRODUTO VAL_UNIT_PRODUTO SIG_UNID_MED_PROD DSC_UNID_MED_PRO Produto Possui 1 N Prof. Jailton Cardoso ¿ Como – uma entidade está na segunda forma normal quando se encontra na 1FN e na 2FN e não existe ocorrência de dependência funcional transitiva, ou seja, todos os atributos dependem unicamente da chave primária. ¿ O que fazer – criar uma nova entidade cuja chave primária será o atributo que gerou a dependência e os atributos dependentes deste atributo. Na entidade Pedido, Produto e Item_Pedido aplicaremos a 3FN Prof. Jailton Cardoso Aplicando a 3FN em Pedido Pedido *NUM_PEDIDO COD_CLIENTE ENDERECO_ENTREGA TIPO_FRETE TIPO_PEDIDO COD_VENDEDOR COD_TRANSPORTADORA Vendedor *COD_VENDEDOR NOME_VENDEDOR Cliente *COD_CLIENTE NOME_CLIENTE TIPO_CLIENTE CGC_CPF_CLIENTE ENDER_CLIENTE TEL_CLIENTE LIMITE_CRED_CLIENTE Transportadora *COD_TRANSPORTADORA NOME_TRANSPORTADORA Prof. Jailton Cardoso Transportadora PedidoTransporta 1 N Cliente Faz 1 N Emite Vendedor N 1 Prof. Jailton Cardoso Prof. Jailton Cardoso Item_Pedido *NUM_Pedido *COD_PRODUTO QTDE_PRODUTO VAL-UNIT_PRODUTO VAL_TOTAL_PRODUTO Na tabela Item_Pedido, o atributo Val_total_produto é um atributo que pode ser calculado através da somatória do produto do valor unitário pela quantidade. Neste caso elimina-se o atributo. Item_Pedido *NUM_Pedido *COD_PRODUTO QTDE_PRODUTO VAL_UNIT_PROD Produto *COD_PRODUTO NOME_PRODUTO VAL_UNIT_PRODUTO SIG_UNID_MED_PROD Unidade_medida *COD_UNID_MEDIDA DSC_UNID_MEDIDA Considerações sobre o atributo Val_unit_produto para fins de histórico, o valor unitário do produto deve se repetir na entidade item_pedido, pois em caso de mudança no valor do produto a nota fiscal ficará com valor diferente do valor emitido (anomalia de alteração) Transportadora PedidoTransporta 1 N Cliente Faz 1 N Emite Vendedor N 1 Item_Pedido Possui N 1 ProdutoCompõe N 1 Unidade_medida Possui 1 N Prof. Jailton Cardoso Prof. Jailton Cardoso Prof. Jailton Cardoso PEDIDO Nr:__________ Data: ___/___/___ Tipo: Prod:_ Serv:_ Cliente:_______________ CGC/CPF: _________ End: _______________ Transp: __________ Vend: _______________ Tipo Frete: CIF:_ FOB:Transp:_____________ Cód Produto Qtd UM Vl.Unit Vl.Total Vendedor: ___ Nome:_____________ Total:
Compartilhar