Таблица MYSQL с двумя разными именами

Я интегрирую две системы, Moodle и Zen-Cart. Каждая система имеет свою собственную таблицу для хранения пользовательских данных. Мне нужны обе системы для доступа к одной и той же таблице для клиентов. В Moodle есть таблица mdl_users. У Zen-cart есть стол, который называется клиенты. Таблицы содержат похожие данные, но с разными именами полей:

mdl_users fields:
id, username, password, firstname, lastname, email, etc....

customers fields:
customers_id, customers_nick, customers_password, customers_firstname, customers_lastname, customers_email_address, etc...

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

Есть ли способ указать одну таблицу на другую, что означает, что все вызовы таблицы клиентов будут извлечены из таблицы mdl_users (с указанием отношений имен полей)? Я не собираюсь переписывать все несколько сотен запросов, а скорее настраиваю что-то один раз (или вызываю один раз за вызов БД), что автоматически делает это.

Надеемся, например, результат:

Этот запрос (из системы zen-cart):

Select customers_password from customers where customers_id = :id

На самом деле возвращает результаты, как если бы он выполнялся:

select password from mdl_user where id = :id

(Редактирование / добавление)
mdl_users.id — это поле первичного ключа для системы Moodle. (Уникальный, проиндексированный, с нумерацией).
customer.customers_id — то же самое для системы zen-cart.

Любое решение должно поддерживать согласованность номеров первичных ключей при выполнении вставок и обновлений.

0

Решение

Вы можете использовать триггеры для этого, поиск SQL триггеров. Это может сделать вызов из одной таблицы в другую, я имею в виду, что вы можете запрограммировать триггер, чтобы получать запрос Moodle и генерировать запрос для таблицы zen-cart.

0

Другие решения

Какая система «мастер»? Добавлены ли пользователи как из Zen Cart, так и из Moodle, или только из одного (или из другого источника)?

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

Moodle предоставляет несколько способов, с помощью которых можно использовать внешнюю систему для синхронизации пользователей из: «Аутентификация на основе внешней базы данных» — это первое, о чем я могу подумать, но в этом случае, я бы, вероятно, раскошелился (auth / db) создать новый плагин, который бы фактически обновлял базу данных Zen Cart новыми / обновленными пользователями Moodle (если пользователи могут быть добавлены в Moodle).

Я не знаю достаточно о Zen Cart, чтобы предложить что-то с этой стороны (хотя, похоже, нет никаких «плагинов user / auth»), но это стоило бы исследовать.

0

По вопросам рекламы [email protected]