Как обеспечить масштабируемость моей базы данных? - PullRequest
0 голосов
/ 14 октября 2010

У меня есть две модели - пользователи и рестораны. Они могут устанавливать твиты как сообщения о статусе и могут иметь ответы. У меня есть следующие настройки и мне нужна ваша помощь для оптимизации дизайна.

users(id, name, ......)
restaurants(id, name.....)
modules(id, name)  [this table stores the modules - (1,user) and (2,restaurant)

Моя таблица сообщений

status_messages(id, pid, message, time, module_id, moduleID)

id - Uid, primary key
pid - self ID or parent ID - for accomodating the replies in to the same table.
message - the status message is stored here
time - the time the status message was set
module_id - refers to the module its pointing - Users or Restaurants
moduleID - the actual foreign key

Это правильный путь?

Масштаб приложения: это будет открытое приложение по всему миру, поэтому одна таблица будет масштабироваться для всех этих ресторанов и пользователей.

Я хочу иметь похожие модели для обзоров, которые будут обслуживать рестораны, блюда, события, буфет на одном столе. Будет ли это излишним?

1 Ответ

1 голос
/ 15 октября 2010

Да, этот дизайн должен быть в порядке, вы бы хотели разместить какой-то индекс в столбце status_messages.module_id, чтобы выборки в таблице могли быть отфильтрованы пользователем / рестораном.

Обычно на стороне серверавы должны создать два класса для таблицы сообщений о состоянии

1 класс UserMessages 2-й класс RestaurantMessages

и использовать какой-либо инструмент ORM, чтобы определить module_id в качестве столбца декриминатора.Таким образом, в базе данных его в одной таблице для максимального повторного использования.Но в приложении оно имеет два разных имени (логические имена).Не уверен, как это работает в PHP.

...