2010-08-19 2 views
1

У меня есть вопрос, и я не уверен в том, как лучше его спроектировать.Вопрос с дизайном базы данных с ящиками сообщений

В основном, есть пользователи. Каждый пользователь может иметь окно сообщения, и каждый ящик, в свою очередь, может иметь несколько сообщений.

Проблема в том, что есть некоторые специальные сообщения, в том числе «Новые» и «Корзина». Пользователь должен иметь эти две коробки.

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

Я мог бы также иметь каждого пользователь имеет поля конкретно относящиеся к их специальным ящикам (так в user таблицы была бы поле, такой как newBox и trashBox). Конечно, если они необходимы, то user и user_messageBox таблицы будет взаимно связанный, что вызовет очевидные проблемы.

Затем я мог бы сделать это много-ко многим, где таблица сообщений не относится к пользователям, поэтому была бы другая таблица для связывания этих двух как много -Много. Я не хочу отношения «многие ко многим», поэтому он ничего не решает!

ответ

0

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

Это заставляет вас думать за пределами коробки (!) И может дать вам другие идеи относительно того, как использовать это поле, если вы так выбираете: «Помечено», «важно», «спам» и т. д.

+0

Вы знаете, я подумал об этом, но потом забыл об этом! Так что спасибо за ответ. Я думаю, я попробую это и посмотрю, куда меня достает. – rovaughn

+0

Этот план закончил работу очень хорошо! Поэтому я отвечу за вас. Благодарю. – rovaughn

0

Почему вы не используете поле message_box_type.

Я думаю, вы должны заставить пользователей иметь оба типа окна сообщений, используя логику приложения.

В идеале были бы две таблицы, таблица сообщений с идентификатором внешнего ключа message_box_id, которая связывает ее с другой таблицей message_box. В таблице message_box в свою очередь есть поле message_box_type в дополнение к другим полям. Логика приложения гарантирует, что при регистрации/создании пользователя создаются две записи message_box двух типов «new» и «trash».

+0

Я знал, что могу это сделать с помощью логики приложений, но я хотел посмотреть, есть ли хороший способ сделать это через базу данных. Думаю, я тоже буду экспериментировать с этой настройкой, поэтому спасибо за ответ. – rovaughn

Смежные вопросы