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 = 35465488Adivinhe 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?