дизайн базы данных личных сообщений - PullRequest
3 голосов
/ 08 августа 2011

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

Первый дизайн - это таблица для сообщений и таблица для комментариев к сообщениям:

Message
---------------
id
recipientId
senderId
title
body
created_at

MessageComment
---------------
id
messageId
senderId
body
created_at

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

Message
---------------
id
recipientId
senderId
messageId
title
body
created_at

Мне бы хотелосьуслышать ваше мнение!

Ответы [ 3 ]

5 голосов
/ 08 августа 2011

В этом случае я бы проголосовал за одну таблицу.

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

Если вы составите две таблицы и будете регулярно писать запросы, объединяющие эти две группы,это указывает на то, что они должны быть объединены.

Если вы составляете одну таблицу, но обнаруживаете, что есть много полей, которые всегда равны нулю для случая A, и другие поля, которые всегда равны нулю для случая B, или если выпридавая неуклюжие двойные значения для полей, например, «для типа A это поле является почтовым индексом, а для типа B это серийный номер продукта», это указывает на то, что они должны быть разбиты.

0 голосов
/ 08 августа 2011

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

0 голосов
/ 08 августа 2011

Использование одной таблицы является наиболее выгодным.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...