簡體   English   中英

具有兩個不同名稱的MYSQL表

[英]MYSQL table with two different names

我正在集成兩個系統,即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表(指定了字段名稱關系)中提取? 我不是要重寫所有數百個查詢,而是要設置一次(或每次DB調用一次)自動執行此操作的東西。

希望例如結果:

此查詢(來自zen-cart系統):

Select customers_password from customers where customers_id = :id

實際返回結果,就好像它已經運行過一樣:

select password from mdl_user where id = :id

(編輯/添加)mdl_users.id是Modle系統的主鍵字段。 (唯一,索引,自動編號)。 customer.customers_id與zen-cart系統相同。

任何解決方案都必須在進行插入和更新時保持主鍵號的一致性。

您可以使用觸發器來執行此操作,搜索sql觸發器。 這可以從一個表到另一個表進行調用,我的意思是您可以對觸發器進行編程,以便接收Moodle查詢並生成針對zen-cart表的查詢。

哪個是“主”系統? 是從Zen Cart和Moodle中添加用戶,還是僅從一個(或從其他來源)添加用戶?

我認為沒有辦法僅使用sql來執行此操作,盡管如前所述,視圖可能是部分解決方案。 我看不到如何確保“插入”按其應有的方式工作,即使僅僅是因為您可以在一個系統中擁有數據而在另一個系統中卻沒有。

Moodle提供了幾種使用外部系統來同步用戶的方法:“外部數據庫身份驗證”是我想到的第一個方法,但是在這種情況下,我可能會分叉它(auth / db)制作一個新插件,該插件實際上將與Moodle的新用戶/更新用戶(如果可以在Moodle中添加用戶)一起更新Zen Cart的數據庫。

我對Zen Cart的了解不足,無法在這方面提出建議(盡管似乎沒有任何“用戶/身份驗證插件”),但是值得進行調查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM