Вопрос о схеме базы данных MYSQL - PullRequest
0 голосов
/ 08 июня 2011

Мне нужны мнения о том, как лучше всего создать таблицу или набор таблиц для решения этой уникальной проблемы. По сути, я проектирую этот сайт с бизнес-профилями. Таблица профиля содержит все ваши обычные вещи, такие как имя, уникальный идентификатор, адрес и т. Д. Теперь вся идея сайта в том, что он будет собирать небольшую строку информативного текста. Я хочу, чтобы клиенты могли хранить по одному на дату за 30 дней. Программа только покажет информацию с текущей даты на форварде, а даты с истекшим сроком не показаны.

Единственный способ убедиться, что это действительно сделано, - это таблица, состоящая из uniqueID, даты и информационного блока текста, но это создает довольно обширные запросы. В конечном итоге эта таблица будет как минимум в 20 раз больше, чем таблица предприятий в первую очередь, поскольку эти предприятия смогут разместить до 30 элементов в этой таблице, используя свой уникальный идентификатор.

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

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

1 Ответ

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

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

Предполагая, что вы имеете в виду уникальный идентификатор профиля, а не уникальный идентификатор для текстовой таблицы, вы правы.

Как сказал Паскаль в своем комментарии, вам понадобится первичный индекс уникального идентификатора и даты. Человек может ввести только одну строку текста на указанную дату.

Если вы хотите получить следующую текстовую строку для человека, ваш запрос SQL будет иметь следующие пункты:

WHERE UNIQUE_ID = PROFILE.UNIQUE_ID
AND DATE >= CURRENT_DATE
LIMIT 1

Поскольку у вас есть индекс по уникальному идентификатору и дате, это должен быть быстрый запрос.

Если вы хотите получить следующие 5 текстов для конкретного человека, вам просто нужно внести одно изменение:

WHERE UNIQUE_ID = PROFILE.UNIQUE_ID
AND DATE >= CURRENT_DATE
LIMIT 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...