Представьте себе три таблицы:
user:
- id
- name (string)
event:
- id
- description (string)
- points (int)
history:
- user_id
- event_id
Теперь представьте, что таблицы в настоящее время заполнены следующими данными:
user:
id: 1, name: foo
id: 2, name: bar
id: 3, name: beef
event:
id: 1, description: "walked 5 miles", points: +10
id: 2, description: "awake the whole night", points: +15
id: 3, description: "wasn't naughty", points: +20
history:
id: 1, user_id: 1, event_id: 1
id: 2, user_id: 1, event_id: 3
id: 3, user_id: 2, event_id: 1
Так что схема похожа на «сколькоочки есть у пользователя ".В настоящее время, например, пользователь 1 имеет в сумме 10 + 20 = 30 баллов, верно?
Я хотел бы добавить еще одну таблицу с вещами, которые пользователь может "купить" для своих баллов.
gift:
- id
- points (int)
- description (string)
, который заполнен, например,
gift:
id: 1, points: -30, description: "a bottle of beer"
id: 2, points: -5, description: "coffee"
Моя проблема:
В настоящее время я создаю новую запись в history когда пользователь получает очки.Но как бы вы вычли баллы, когда он покупал подарок?
Я думал о чем-то вроде комбинированной таблицы, которая включает события и записи подарков:
[USER]-----[HISTORY]-----[COMBINED]--+--[EVENTS]
|
+--[GIFTS]
Но я не могу присоединиться к нимпотому что мне нужна таблица gift где-то еще.
Я абсолютно не представляю, как это сделать в SQL, прошло много времени с тех пор, как я его изучил, и, к сожалению, с тех пор я его никогда не использовал.Я надеюсь, что кто-нибудь может указать мне правильное направление:)
Спасибо!