Приложение, с которым я сталкиваюсь у клиента, выглядит так:
- позволяет конечным пользователям вводить «материалы».
- К этим материалам они могут добавлять любое количество «свойств».
- Свойства могут иметь любое значение типа: decimal, int, dateTime и varchar (длина варьируется от 5 символов до больших кусков текста),
По сути, схема выглядит так:
Материалы
MaterialID int not null PK
MaterialName varchar (100) не нуль
Свойства
PropertyID
PropertyName varchar (100)
MaterialsProperties
MaterialID
PropertyID
PropertyValue varchar (3000)
Важной особенностью приложения является функция поиска:
конечные пользователи могут искать материалы, вводя такие запросы, как:
- [свойство] инспекцияДата> [DateTimeValue]
- [property] serialNr = 35465488
Угадайте, как это работает с таблицей MaterialsProperties, содержащей почти 2 миллиона записей.
База данных была изначально создана под SQL Server 2000, а затем перенесена на SQL Server 2005
Как это можно сделать лучше?