Моделирование пользователей, вещей и вещей, которые проголосовали или оценили пользователи? - PullRequest
2 голосов
/ 11 декабря 2011

Я новичок в сущности и моделировании данных.

Проблема:

У меня есть пользовательские объекты и объекты вещей, мои путанные существа, когда пользователь "голосует" за вещь? Со стороны EF, я думаю, я понимаю «связь многих со многими», а со стороны БД, я думаю, я понимаю «таблицу user_thing», которая будет содержать первичные ключи для пользователя и вещи. Моя проблема заключается в том, что когда пользователь голосует за то, что теперь является уникальным для этого пользователя. (не то же самое, что и за вещь, за которую не голосовали, или за, за которую проголосовал другой пользователь). Как это сохранить или смоделировать это? Создаю ли я новую таблицу для каждого пользователя, которая содержит только то, за что проголосовали? Создаю ли я новый объект с некоторым наследованием от моего объекта вещи, который имеет многозначную связь с пользователем? Я знаю, что ответ на этот вопрос существует, учитывая, что многие веб-сайты используют голосование, оценки, симпатии и т. Д. Даже самый толчок в правильном направлении был бы наиболее ценным. Спасибо

1 Ответ

1 голос
/ 11 декабря 2011

Ваша схема выглядит следующим образом:

User
UserId (Primary Key)
Name 
(etc)

Thing
ThingId (Primary Key)
Name
(etc)

UserThingVote
UserId
ThingId
--Has **composite** primary key on UserId, ThingId

Я думаю, что ваша путаница заключается в следующем утверждении:

Моя проблема в том, что когда пользователь голосует за вещь, которая теперь уникальнаэтому пользователю

Это не так, потому что в таблице UserThing есть составной первичный ключ, а не PK в UserId.Теперь у вас может быть много записей в таблице UserThingVote.Каждая комбинация UserId и ThingId должна быть уникальной.

Вы можете вставить в таблицу UserThing в EF так же, как вы вставляете в любую другую таблицу.Вы также должны установить отношения внешнего ключа между таблицей UserThingVote и таблицей User и Thing.Это значительно облегчит обход объектов в EF.

...