Abordagem do design genérico de banco de dados

Um aplicativo que estou enfrentando em um cliente, é assim:

permite que os usuários finais digitem "materiais".Para esses materiais, eles podem acrescentar qualquer número de "propriedades".As propriedades podem ter qualquer valor do tipo: decimal, int, dateTime e varchar (comprimento variando de 5 caracteres a grandes blocos de texto),

Essencialmente, o esquema é assim:

Materiais
MaterialID int não nulo PK
MaterialName varchar (100) não nulo

Propriedades
PropertyID
PropertyName varchar (100)

MaterialsProperties
MaterialID
PropertyID
PropriedadeValor varchar (3000)

Um recurso essencial do aplicativo é a funcionalidade de pesquisa: os usuários finais podem pesquisar materiais inserindo consultas como:

[property] inspectionDate> [DateTimeValue][property] serialNr = 35465488

Adivinhe como isso funciona na tabela MaterialsProperties com quase 2 milhões de registros.

Banco de dados foi criado inicialmente no SQL Server 2000 e posteriormente migrado para o SQL Server 2005

Como isso pode ser feito melhor?

questionAnswers(2)

yourAnswerToTheQuestion