Легко. : -)
Одна таблица для пользователей, я бы назвал ее Пользователь.
Одна таблица для кликов, я бы назвал ее ClickEvent.
Одна таблица для каждой отдельной ссылки, я бы назвал ее HyperLink (избегая слова «ссылка» в БД)
Таблица пользователей, учитывая то, что мы знаем (не очень), не очень материальна для вопросов или ответов.
Таблица HyperLink будет местом хранения всей информации по каждой ссылке, столбцы:
- HyperLinkID
- URL
- ClickValue
- RewardMultiplier
(Я думаю, что то, что вы указали, присваивает значение и множитель сущности ссылки, а не каждому событию одного щелчка, верно?)
Таблица ClickEvent занимает центральное место в вашем вопросе / ответе. Я бы дал столбцы следующим образом:
- ClickEventID, int (PK)
- UserID, int (FK)
- HyperLinkID, int (FK)
- ClickDateTime, datetime
- ComputedEventValue (десятичное или
smallmoney)
Ваше беспокойство о скорости должно быть приглушено - это не очень интенсивно, даже при большой активности. Каждая транзакция (клик) регистрируется в таблице ClickEvent. Каждое событие щелчка вставляет новую запись, и во время вставки записывается значение ComputedEventValue.
Кажется, это покрывает основную идею, как я ее вижу.