Проектирование реляционных баз данных - Пользовательский дизайн БД - PullRequest
0 голосов
/ 07 июня 2018

Вариант использования : сохранение избранной комбинации пользователя в базе данных.

Пользователь может выбрать

1. "A, b, c" в качестве своей первой любимой комбинации.

2. "A, b" как вторая любимая комбинация.

Как спроектировать таблицу БД для сохранения этой информации, а также иметь возможность извлекать ее путем запроса с использованием используемого идентификатора

выберите * из UserFav, где userId =: userId должен возвращать
[a, b, c] и [a, b]

Слишком много избыточных данных с этой схемой таблицы

userId  combination
qw1     a,b,c
qw1     b,c

Может ли кто-нибудь направить меня к дизайну наилучшим образом?

1 Ответ

0 голосов
/ 07 июня 2018

Я бы сохранил его в отдельных строках, а не в виде строк с разделителями:

Declare @favourites table (UserID char(3), fav_list_pos int, fav_pos int, fav_val char(1))

insert into @favourites values
  ('qw1', 1, 1, 'a')
, ('qw1', 1, 2, 'b')
, ('qw1', 1, 3, 'c')
, ('qw1', 2, 1, 'a')
, ('qw1', 2, 2, 'b')

select * from @favourites where userId = 'qw1' order by fav_list_pos, fav_pos  
...