You are here: Re: Database Design « MsSQL Server « IT news, forums, messages
Re: Database Design

Posted by Erland Sommarskog on 07/26/07 21:19

Paul (paulwragg2323@hotmail.com) writes:
>>The design you aim at is known as EAV, and many frown at it.
>
> Is there a 'better' method for storing this type of data? If so I
> would be interested to know about it.

Without knowledge about what your tables really contains, I don't want to
say much more of what is good or bad. I just wanted to mention that
the deisgn you are looking has a bad name.

>> SELECT per.id, per.dob,
>> Home = MIN(CASE ph.Type WHEN 'Home' THEN ph.Value END),
> > Mob = MIN(CASE ph.Type WHEN 'Mob' THEN ph.Value END),
>
> This works very well actually, and the execution plan seems very
> reasonable compared to previous efforts! There is a problem though, in
> that some of the attributes are defined as text columns, which of
> course we cannot use the MIN aggregate function on. Do you have any
> suggestions for how we can include text columns using similar syntax
> and without using sub-selects?

Still on SQL 2000? In SQL 2005, you could use varchar(MAX) which
should work with MIN.

One alternative is to do a lot of joins:

SELECT per.id, per.dbo, Home = home.Value, Mob = Mob.value
FROM persons per
LEFT JOIN phones Home ON per.person = Home.person
AND Home.type = 'Home'
LEFT JOIN phones Mob ON per.person = Mob.person
AND Mob.type = 'Mob'


--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация