2015-01-03 3 views
0

두 시스템 인 moodle과 zen-cart를 통합하려고합니다. 각 시스템에는 사용자 데이터 저장을위한 자체 테이블이 있습니다. 고객을 위해 동일한 테이블에 액세스하려면 두 시스템이 모두 필요합니다. 무들에는 mdl_users라는 테이블이 있습니다. Zen-cart에는 고객이라는 표가 있습니다. (A 없습니다 잘 encapsalated 방법)이 테이블을 가리키는 각 시스템에서 쿼리의 수백이있다두 개의 다른 이름을 가진 MYSQL 테이블

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... 

: 표는 다른 필드 이름과 비슷하지만 데이터가 포함되어 있습니다.

다른 테이블을 가리키는 방법이 있습니까? 즉, customers 테이블에 대한 모든 호출이 mdl_users 테이블 (필드 이름 관계가 지정된 상태로)에서 가져 오는 것을 의미합니까? 나는 수백 개의 쿼리를 모두 다시 쓰고 싶지는 않지만, 자동으로이를 수행하는 한 번 (또는 DB 호출 당 한 번 호출)을 설정하십시오.

예 결과 희망 :

(선종 - 카트 시스템에서)이 쿼리가 실행 한 것처럼

Select customers_password from customers where customers_id = :id 

실제로 결과를 반환

select password from mdl_user where id = :id 

(편집/덧셈) mdl_users.id는 무들 시스템의 기본 키 필드입니다. (고유, 색인 생성, 자동 번호 지정). customers.customers_id는 젠 카트 시스템과 동일합니다.

모든 솔루션은 삽입 및 업데이트가 수행 될 때 기본 키 번호의 일관성을 유지해야합니다.

+0

보기를 설정할 수 있다고 생각합니다. 뷰는 가상 테이블입니다. 고객을 가리키는 "mdl_user"라는보기를 만들 수 있습니다. http://code.tutsplus.com/articles/an-introduction-to-mysql-5-views--net-12698 – chepe263

답변

0

트리거를 사용하여 SQL 트리거를 검색 할 수 있습니다. 이것은 한 테이블에서 다른 테이블로 전화를 걸 수 있습니다. 즉, 무들 쿼리를 수신하고 젠 카트 테이블에 대한 쿼리를 생성하기 위해 트리거를 프로그래밍 할 수 있습니다.

+1

보기 사용 방법은 무엇입니까? – chepe263

+0

나는 당신이'선택'에 방아쇠를 당길다는 것을 생각하지 않는다. 다른 테이블이 갱신 될 때마다 트리거를 사용하여 하나의 테이블을 갱신 할 수 있습니다. – Barmar

+0

두 테이블 간의 관계 설정이 가능합니까? – Colum

0

"마스터"시스템은 무엇입니까? Zen Cart와 Moodle 모두에서 사용자를 추가 했습니까? 아니면 하나의 소스에서만 (또는 다른 소스에서) 추가 했습니까?

SQL을 사용하여이 작업을 수행 할 방법이 없다고 생각합니다. 이전에 제안 된 것처럼보기가 부분적인 해결책 일 수 있습니다. 한 시스템에서는 가질 수 있지만 다른 시스템에서는 가질 수없는 데이터 때문에 단지 "삽입"작업을해야하는지 알 수는 없습니다.

Moodle은 외부 시스템을 사용하여 사용자를 동기화 할 수있는 몇 가지 방법을 제공합니다. "외부 데이터베이스 인증"이 내가 생각할 수있는 첫 번째 것이지만이 경우에는 아마 포크가됩니다. auth/db)를 사용하여 Moodle의 새로운/업데이트 된 사용자 (Moodle에 사용자를 추가 할 수있는 경우)와 Zen Cart의 db를 실제로 업데이트하는 새로운 플러그인을 만듭니다.

Zen Cart에 대해 (사용자/인증 플러그인이없는 것 같지만) 그 곳에서 뭔가를 제안하는 데는 충분하지 않지만 조사할만한 가치가 있습니다.

관련 문제