Я создаю общий хранилище данных ключа/значения в MS SQL Server. У меня есть таблица UserDecimalData определяется следующимSQL SUM() по значению другого столбца
create table [UserDecimalData] (
[UserID] nvarchar(64) not null,
[ValueKey] uniqueidentifier not null,
[Value] decimal null
);
alter table [UserDecimalData]
add constraint PK_UserDecimalData primary key clustered ([UserID], [Date], [ValueKey]);
и в качестве примера, вот некоторые данные, которые используют GUID, оканчивающийся 0001, чтобы указать счет индивидуума в игре, и GUID заканчивая 0002, чтобы указать, какую команду пользователь включен.
UserID ValueKey Value
Dave 00000000-0000-0000-0000-000000000001 35
Dave 00000000-0000-0000-0000-000000000002 1
Phil 00000000-0000-0000-0000-000000000001 35
Phil 00000000-0000-0000-0000-000000000002 1
Pete 00000000-0000-0000-0000-000000000001 35
Pete 00000000-0000-0000-0000-000000000002 2
я могу легко найти счет для физического лица путем поиска их UserID + ValueKey заканчивая 0001. Я могу также узнать, какая команда человек находится в поиске по их UserID + значения строки, где ValueKey заканчивается 0002.
Мой вопрос в том, как я могу получить список баллов команды? В этом случае команда 1 будет иметь 70 и команда 2 будет иметь 35.
Вы приезжаете против одной из проблем, которая приводит к тому, что [EAV рассматривается как анти-шаблон SQL] (программа http: // rs.stackexchange.com/q/93124), это почти наверняка не самый эффективный способ хранения этих данных. – GarethD