Насколько хороши идеи многозначных атрибутов в реляционной базе данных, когда они должны широко использоваться?
Позвольте мне привести вам пример, чтобы показать, что я имею в виду.Предположим, у меня есть следующая таблица:
UserID Attribute1
User1 a,b,c
User2 x,y,z
User3 a,x,y
User4 c,b,z
[a,b,c,x,y,z are to be strings]
Есть еще один пользователь User5
, которому я должен дать несколько советов о других пользователях в зависимости от того, соответствует ли его Attribute1
кому-либо из других 4 пользователей.
[В графовых базах данных задача могла бы быть намного проще, поскольку я мог бы создать несколько узлов из соответствующих пользователей, используя одинаковые отношения.]
Теперь,эта таблица - просто микроуровневая абстракция того, как будет выглядеть реальная база данных.Количество строк в таблице может исчисляться сотнями тысяч, если не миллионами.Кроме того, множественные значения могут быть намного больше 3. Кроме этого, база данных может быть сильно загружена, и в этой ситуации могут возникнуть некоторые проблемы.
Итак, многозначные атрибутыполезно в таких случаях?Или есть ли лучший способ сделать то же самое?Один очевидный способ, который я могу придумать, - это сохранить его как:
UserID Attribute1
User1 a
User1 b
User1 c
User2 x
User2 y
User2 z
User3 a
User3 x
User3 y
User4 c
User4 b
User4 z
Есть ли более быстрый способ решения таких ситуаций в базах данных?Или есть какие-то встроенные функции современных баз данных, которые можно использовать?