Ваш дизайн в основном здоров. Ваша третья таблица должна иметь имя, похожее на UsersEntriesComments, с полями UserName, EntryID и Comment. В этой таблице у вас будет составной первичный ключ, состоящий из полей UserName и EntryID; это обеспечит соблюдение правила, согласно которому каждый пользователь может комментировать каждую запись только один раз. Таблица также будет иметь ограничения внешнего ключа, так что UserName должно быть в таблице Users, а EntryID должен быть в таблице Entries (в частности, поле ID).
Вы можете добавить поле идентификатора в таблицу Users, но многие программисты (включая меня) выступают за использование «естественных» ключей, где это возможно. Поскольку имена пользователей должны быть уникальными в вашей системе, это совершенно допустимый (и легко читаемый) первичный ключ.
Обновление : просто прочитайте ваш вопрос еще раз. Вам не нужны поля Comments или CommentsCount в вашей таблице записей. Комментарии должным образом будут храниться в таблице UsersEntriesComments, а количество запросов будет рассчитываться динамически в ваших запросах (избавляя вас от необходимости самостоятельно обновлять это значение).
Обновление 2 : Джеймс Блэк делает хороший вывод в пользу , а не , используя UserName в качестве первичного ключа и вместо этого добавляя искусственный первичный ключ в таблицу (UserID или некоторые другие ). Если вы используете UserName в качестве первичного ключа, разрешить пользователю изменять свое имя пользователя будет сложнее, так как вы должны также изменить имя пользователя во всех связанных таблицах.