Sábado, Maio 15, 2004


Matrimônio e crianças : modelando banco de dados

Em uma de muitas viagens minhas pela Internet encontrei uma questão de modelagem de dados muito curiosa que agora retrato neste blog.

Como um sistema deve retratar o mundo real em uma situação que depende de costumes, comunidades e religiões.

A Experiência: Um mapa de uma estrutura de dados com uma família; mãe, o pai e crianças (entenda-se filhos), e isto apresentado de uma maneira hierárquica, é claro.
Toda a análise começa com a afirmação a seguir:

Crianças são a descendência de pais; Eles pertencem a eles, e para nenhuma outra pessoa.

Sim?

Não. Temos de considerar as variantes do tema nos dias de hoje e no nível multinacional e multiracial.

Se você é um mau pai, sua criança poderá lhe será retirada e irá parar em um lar adotivo ou em algum órgão tutelar em nosso país; eles serão os novos pais de sua criança. Porém, sua criança tem pais fisiológicos . E ainda pode acontecer isto: Sua criança ser devolvida em algum momento se você mudar seu tipo de vida, ou seja, lhe ser restaurado os direitos paternos. Você pode não ter condições de criar seus filhos e permitir a sua adoção por outras pessoas, que serão seus pais adotivos.

Você também pode ter pulado a cerca; o que lhe pode fazer que você seja pai para crianças com mães diferentes. O mundo está muito doido atualmente e estes fatos acontecem verdadeiramente.

Como você soluciona isto?

Este é tipo da mesma situação que acontece quando você é levado a conectar um homem e uma mulher em um matrimônio, (uma conectividade de um-para-um).

Mas de fato, um matrimônio é um relacionamento um-para-um, limitado por tempo, pois devemos levar em conta a relação de existência de divórcio atualmente.
Como se modela isto, se simplesmente não posso apagar os dados relativos ao casamento anterior?
Podem existir muitos relacionamentos um-para-um (devido a esta existência de divórcio), assim a chave primária tem que incluir o aspecto restritivo de tempo. Bem, então isto irá se transformar efetivamente em um relacionamento um-para-muitos, restringida por tempo. Caso contrário, estaríamos permitindo bígamos em nossa aplicação.
Na realidade a solução é transformar este relacionamento em muitos-para-muitos com inserção de uma restrição de tempo na chave primária.
A questão é o número de erros de modelagem que uma simples afirmação destas pode provocar.

O exemplo que apresentamos garante que exista somente um casamento ativo entre um intervalo de datas, mas nada impede que existam intervalos similares em aberto, ou seja, ativos entre as datas inicial e final.



Logo o que necessitamos realizar é a efetivação por uma restrição de validade, ou seja, de um indicador, identificador de qual é o casamento atual e válido em nosso banco de dados.



Com isto a data de inicial do casamento passa a ser um mero atributo descritivo do mesmo.

Você perde esta solução se seu sistema atuar com pessoas de religiões que podem lhe permitir ter vários cônjuges, ai a coisa complica mais.
Se você está morando em algum país muçulmano, por exemplo,, você tem que levar em conta a relação um-para-muitos; Não limitada neste caso por tempo. Logo sem a restrição imposta pela coluna Id Validation, que deixa de existir permitindo múltiplas existências ao mesmo tempo do fato matrimônio.

Claro que, nesta colocação do modelo, não existem bígamos; ou tudo que permite (ou quer permitir) esta relações múltiplas que necessitam de uma grande capacidade física.

O mundo está maluco, e nós temos que pôr isto em um sistema...
Mas a questão é : E os filhos nesta confusão toda? Onde foram parar as crianças?



Isto seria o normal, uma hierarquia de pai e mãe, e que permite que você seja pai de muitos filhos independentemente de da mãe, assim como alguém pode ser mãe independentemente de quem é o pai.
O detalhe é que este modelo agora somente permite a existência de um pai e uma mãe para cada pessoa. Logo ainda não satisfaz as questões colocadas no início desta discussão.
Como registrar paternidades múltiplas durante períodos de tempo, ou indicar paternidades biológica e adotiva?
Logo vamos a mais uma modificação em nosso modelo de dados:



Para terminar e esclarecer a resposta deste artigo, apresento as tabelas correspondentes à questão da paternidade agora após o modelo com o relacionamento muitos-para-muitos que a representa



Observa-se olhando as tabelas que Julio Adamastor tem como mãe biológica Sandra Chu Li e como pai biológico Alvaro Medeiro Sá. Já Paulo Alenghi tem registro de pais biológicos (Carmem e Júlio) e pais adotivos (Sandra e Álvaro). Isto é somente uma representação, prezados senhores, pois neste nosso caso, Paulo foi adotado pelos avós paternos.

Caso o ilustre freqüentador deste blog tenha novas alternativas de solução, solicito a gentileza nos enviar por e-mail, para que possamos estabelecer e agregar valor a esta discussão técnica.


Posted by Felipe Machado em Sábado, Maio 15, 2004

Comentários:


Sexta-feira, Maio 14, 2004


Seu projeto de desenvolvimento está em risco?

De acordo com The Standish Group, 2 entre 3 projetos de desenvolvimento de software vão fracassar. Mais ou menos 30% deles não vão nem terminar.

De acordo com o resultado parcial de pesquisa realizada pela IT Web o gerenciamento de riscos de projetos neste país ainda não evoluiu, ou seja a grande maioria das empresas ou desconhece ou simplesmente não avaia nenhum risco de projeto.

Seja por falta de conhecimento, poucos profissionais, ou baixa divulgação das técnicas de gerenciamento de riscos, é preocupante esta posição de "não avaliação de riscos" em projetos desenvolvidos nas empresas médias e pequenas em nosso país.

Segundo o que podemos observar na pesquisa:
Há gerenciamento dos riscos durante a condução de projetos de TI na sua empresa?
Os resultados são assustadores

Não, não há --------------- 52,5%

Sim, com metodologia própria -----25,9%

Sim, com metodologia PMI ou outra de mercado ---21,6%

Estes números indicam dois aspectos: O baixo nível de utilização de PMI nos projetos, e evidentemente para quem acompanha o mercado que esta utilização esta localizada em grandes grupos empresariais e não em empresas de médio e pequeno porte, com raras excessões.

Metodologia própria infelizmente se refere a improvisação, ou a desconhecimento completo do que seja controlar riscos.

Quais as chances de sucesso de seu projeto atual?

Como seria bom se houvesse uma maneira de determinar isto... Pois Steve MacConnell acredita que tem. E para tanto, montou um teste para medir a "fitness" de um projeto: o Survival Test.

Você pode ver o teste on-line e a sua versão Excel.



Posted by Felipe Machado em Sexta-feira, Maio 14, 2004

Comentários:


Quinta-feira, Maio 13, 2004


A importãncia Estratégica da Qualidade de Dados

Devido à quantidade enorme de dados que wxistem nas organizações nos dias de hoje e da sua variedade das fontes, a qualidade dos dados é frequentemente comprometida. entretanto este tema ainda não tem sua importância destacada e tratada na maioria das organizações.

Veja a integra de artigo sobre Data Quality na DM Review



Posted by Felipe Machado em Quinta-feira, Maio 13, 2004

Comentários:


Longa Vida ao Cobol

IBM is looking to modernize Cobol applications by bridging its mainframe-oriented Cobol and WebSphere products to Enterprise JavaBeans (EJB) and service-oriented architectures.

see more in Computerworld

Posted by Felipe Machado em Quinta-feira, Maio 13, 2004

Comentários:


Quarta-feira, Maio 12, 2004


Meu Novo Lançamento



Banco de Dados - Projeto e Implementação

O projeto de bancos de dados e a sua crescente utilização pelas empresas estão relacionados à necessidade do domínio de informações para garantir qualidade de aplicações e respostas e ações aderentes e rápidas às necessidades do negócio, assegurando a competitividade de um mercado altamente mutável.

Com uma apresentação diferenciada, utilizando metodologia e conceitos embasados na experiência real da execução de projetos de banco de dados, o consultor Felipe Machado transmite sua experiência com uma linguagem simples, didática e objetiva, que permite ao leitor a compreensão da técnica Entidade-Relacionamento de forma gradativa e efetiva, com exemplos e estudos de caso.

A nova forma de pensar e projetar banco de dados transforma-se em um processo simplificado, e ressalta a importância e o formato de técnicas como Álgebra Relacional, linguagem SQL e a integração entre UML e Bancos de Dados Relacionais pelo mapeamento OO -> ER.

Para compreender melhor o tema, a introdução apresenta definições, necessidades, o estado da arte e as tendências no desenvolvimento de aplicações.

O capítulo 1 apresenta os conceitos de projeto de banco de dados, suas características, arquitetura, componentes e papéis. O capítulo 2 mostra os exemplos de abstração em modelagem de dados, descrevendo os tipos de abstração e sua utilização no processo.

A Teoria Relacional, os significados de chaves primárias e estrangeiras, suas características e regras de integridade e exercícios sobre o tema são assuntos do capítulo 3.

O capítulo 4 explica o modelo ER e seus componentes, entidades, relacionamentos, atributos, conectividade, relacionamentos reflexivos e exercícios propostos.

As extensões do modelo ER como generalização, relacionamentos múltiplos, modelagem de atributos e exemplos de sua aplicação são apresentados no capítulo 5.

O capítulo 6 é dedicado a uma extensão especial, agregação, explorando sua utilização, exemplos de uso, regras para identificar quando usar e diversos exemplos práticos.

O capítulo 7 avança para utilização de interpretações de dados, visões de dados diferenciadas dentro de um modelo de dados, tratamento de hierarquias e relacionamento entre subtipos.

A explicação detalhada do processo de normalização de dados, aplicação das cinco formas normais e Forma Normal de Boyce/Cood, com exemplos de simples entendimento, são assuntos do capítulo 8.

O capítulo 9 dedica-se a um estudo de caso completo para projeto de bancos de dados e o capítulo 10 trata especificamente de um caso de solução de hierarquias de múltiplos níveis em um modelo ER de medicina.

O capítulo 11 apresenta a construção de modelos físicos de dados, suas características, tais como datatypes, índices, views e chaves substitutas (surrogates keys) e a relação entre o modelo lógico e o modelo físico.

O capítulo 12 descreve um estudo sobre o mapeamento de modelos de Classes (UML) para modelo Entidade-Relacionamento, detalhando regras para esse processo. Uma novidade na literatura.

Os conceitos e expressões da Álgebra Relacional, com um formato diferenciado e simples utilizando formas gráficas de representação para a compreensão e exemplos claros com tabelas e resultados das operações, são tratados no capítulo 13.

O capítulo 14 aborda os comandos básicos da linguagem SQL ANSI, aplicada à criação, manutenção e manipulação de Bancos de Dados SQL Server® 2000(TM).

Este livro foi escrito para todos que desejam aprender e utilizar modelagem de dados e necessitam evoluir seus conhecimentos em projetos e implantação de Bancos de Dados.

Algumas respostas dos exercícios propostos no livro (em formato PDF e ERwin 4.0) do livro disponíveis no site da Editora Érica (www.editoraerica.com.br).

Visite o site e o livro na





Posted by Felipe Machado em Quarta-feira, Maio 12, 2004

Comentários:


Seu projeto de desenvolvimento está em risco?

De acordo com The Standish Group, 2 entre 3 projetos de desenvolvimento de software vão fracassar. Mais ou menos 30% deles não vão nem terminar

Veja em IT-Talks

Posted by Felipe Machado em Quarta-feira, Maio 12, 2004

Comentários:


Produtividade por quantidade ou por qualidade?

Um artigo muito interessante sobre medir por quantidade e não por qualidade a produtividade do desenvolvimento de aplicações.
Discorre sobre múltiplos projetos em uma mesma equipe, subavaliação de recursos etc.

Vale a pena ler. Computerworld


Posted by Felipe Machado em Quarta-feira, Maio 12, 2004

Comentários:


Notícias Interessantes

17% logados via wireless


14/4/2004 14:29:10 B2B Magazine

Mais de 21 milhões de pessoas nos Estados Unidos, ou 17% do usuários de Internet, estão acessando a web com algum tipo de conexão wireless. Os números são de uma nova pesquisa realizada pela Pew Internet & American Life Project.

O levantamento também aponta os membros da Geração Y - usuários entre 18 e 27 anos - como os maiores usuários desse tipo de acesso, com 28%. Além disso, os internautas com recursos e educação estão mais propensos a utilizar esse tipo de recurso.
A pesquisa foi feita em fevereiro e seus resultados foram baseados em entrevista com 2.204 adultos, 1.304 dos mais variados perfis.

Quando por aqui teremos um índice destes?



Posted by Felipe Machado em Quarta-feira, Maio 12, 2004

Comentários:


Terça-feira, Maio 11, 2004


Oportunidade para Desenvolvedor

Tenho oportunidade de trabalho free-lancer para desenvolvedor Java com os seguintes requisitos:

Conhecimento em ambiente WebSphere
Experiência em JAVA
Experiência em RUP

Curriculos por e-mail



Posted by Felipe Machado em Terça-feira, Maio 11, 2004

Comentários:


Ache string em procedures, views e funções

Script Language: SQL Server


--usage
select * from dbo.udf_Buscastringinobjects ('Quantity')
--results
CK_Quantity others
Products by Category View
Invoices View
Order Details Extended View
Order Subtotals View
Product Sales for 1997 View
CustOrdersDetail Stored procedure
CustOrderHist Stored procedure
SalesByCategory Stored procedure

Create Function dbo.udf_Buscastringinobjects (@string varchar(100))
returns @tbl Table(Name varchar(128), Type varchar(100))
AS
BEGIN
insert into @tbl(Name,Type) select name, ObjectType = case
when TYPE='D' then 'Default or DEFAULT constraint'
when TYPE='FN' then 'Scalar function'
when TYPE='IF' then 'Inlined table-function'
when TYPE='P' then 'Stored procedure'
when TYPE='R' then 'Rule'
when TYPE='RF' then 'Replication filter stored procedure'
when TYPE='TF' then 'Table function'
when TYPE='TR' then 'Trigger'
when TYPE='U' then 'User table'
when TYPE='V' then 'View'
when TYPE='X' then 'Extended stored procedure'
else 'others'
end
from sysobjects where id in
(select id from syscomments where text like '%'+@string+'%')
return
END


Seria interessante observarmos esta mesma função escrita para Oracle 9i. Aceitamos sua colaboração.
Envie um e-mail


Posted by Felipe Machado em Terça-feira, Maio 11, 2004

Comentários:

Home