Это плохая идея, чтобы соединить две базы данных, как это?Как это можно сделать? - PullRequest
0 голосов
/ 31 июля 2011

В настоящее время я использую Simple Machines Forum на своем веб-сайте, и пользователи одновременно регистрируются и авторизируются, используя свою учетную запись на моем веб-сайте.Таблица smf_members содержит такие поля, как:

id_member |имя_члена |date_registered

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

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

Я собираюсь создать таблицу Команды со следующими полями:

ID |Имя |Описание

и таблица TeamMembership со следующими полями:

UserID |TeamID |Роль

Как вы можете видеть, эта таблица свяжет участника и команду, оставляя данные, относящиеся только к пользователю или команде, в их соответствующих таблицах ТОЛЬКО (успешно предотвращая избыточные данные).Звучит хорошо, правда?

Ну, я не хочу, чтобы эти две новые таблицы в той же базе данных, что и SMF, потому что они могут запутаться.Это самое простое решение?Как вы думаете, самое простое решение - просто создать мои новые таблицы в той же базе данных с префиксом cst для Custom?Я понятия не имею, как связать две базы данных, поэтому, если это слишком сложно, может быть, я просто должен сделать свое решение cst.

Я отредактировал этот пост и у меня есть дополнительный вопрос.

Спасибо за ответы.У меня есть дополнительный вопрос.Допустим, я хотел расширить новые переменные для участников, но снова хотел избежать добавления новых полей в таблицу участников SMF-форума.Какой самый простой способ сделать это?Например, я хочу создать таблицу с именем UsersExtended и иметь такие поля, как:

-ID (это НЕ поле с автоматическим приращением, но значение id_member из таблицы членов SMF)

-Страна

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

Ответы [ 6 ]

3 голосов
/ 31 июля 2011

Они полностью принадлежат одной базе данных.Используйте одну базу данных и объедините таблицы в своих запросах.

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

1 голос
/ 31 июля 2011

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

1 голос
/ 31 июля 2011

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

0 голосов
/ 31 июля 2011

Не знаю форума Simple Machines - но я знаю, что большинство приложений ожидают, что это будет единственное шоу в городе.

Я бы создал новую базу данных = возможно, под названием "команды" с вашими собственными таблицами,и использовать способ соединения между базами данных в NickCL для объединения двух приложений.

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

В идеале, «люди» / «аутентификация» и т. Д. Должны находиться в отдельной базе данных от материалов форумов - но поскольку вы работаете с готовым кодом, у вас нет такой роскоши.

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

0 голосов
/ 31 июля 2011

Вам следует создать только две таблицы в одной базе данных

**smf_members**

id_member | member_name | date_registered

**TeamMembership**

Team_ID | Name | Description | Role | id_member

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

0 голосов
/ 31 июля 2011

Вы можете попробовать это

SELECT * 
from database1.table, database2.table 
where database1.table.id=database2.table.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...