Дизайн базы данных для выбора основного элемента из списка - PullRequest
0 голосов
/ 29 марта 2012

У пользователя есть список книг, но только 1 книга может быть отображена в его профиле, поскольку он должен выбрать его в качестве своей любимой книги.Как мне разработать схему, чтобы книга была «книгой»?

Если у меня есть поле IsFavourite в сущности книги, то все книги можно пометить как избранные.Если я устанавливаю избранное в 1, мне нужно извлечь его любимую книгу и снять отметку с ним в качестве избранного (3 вызова базы данных).

Если у меня есть объект предпочтения, имеющий ссылку на книгу, я могупросто сделайте эту книгу любимой;

User -< Preferences >- Book >- User
User -< Book

Как вы добиваетесь подобных вещей?Есть ли другой метод, который мне не хватает?Который лучший?Я использую платформу, основанную на коде, поэтому кодирую свои модели.

1 Ответ

0 голосов
/ 29 марта 2012

Три таблицы / модели

Users
Books
UserBooks (join table, user id and book id, and favorite flag)

Между пользователями и книгами существует связь один ко многим.

Вместо флага избранного в третьей таблице у вас может быть модель предпочтений со ссылкой на пользователей (и их любимую книгу), но это зависит от того, что еще вы хотите добавить в этот список, рекомендуется ли это иликак бы это выглядело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...