2009-11-30 3 views
0

데이터 키 이름을 한 곳과 한 곳에서만 변경할 수 있으며 응용 프로그램과 데이터베이스 모두에서 적절하게 처리 할 수있는 패러다임이 있습니까?응용 프로그램과 데이터베이스 사이의 단일 데이터 키?

나는 최근에 데이터베이스 상수 필드에 매핑하기 위해 클래스 상수를 사용했지만, 여전히 원시 데이터베이스 키와 정렬해야한다.

내 말하는 예로서 PHP를 사용하는 것입니다, 지금 나는이 내가 일정에 변경 때, 나는 코드를 검색 할 필요가 없다는 것을 의미

$infoToUpdateUser[ User::FIELD_FIRST_NAME ]

사용할 수 있습니다 해당 필드에 대한 모든 참조를 변경합니다.

이 부분은 참조 필드에 있습니다.

(테이블 이름 : primary_key와)

  • 고양이 : 인해 일부 초기 가난한 디자인 결정에, 나는 예를 들어,이 테이블의 종류,이
  • 개를 CAT_ID :
  • 앵무새를 dog_id : bird_id를
  • 도마뱀 (가난한 디자인, 앵무새 사이 따라서 불일치/bird_id 기억) : lizard_id

그럼 레코드를 업데이트하는 일련의 폼 클래스가 있다고 가정 해 보겠습니다.

  • AnimalForm
  • DogForm는 AnimalForm
  • CatForm이 AnimalForm
  • ParrotForm이 AnimalForm를 확장 확장 확장

지금은 업데이트 기능을 사용하여 SQL 데이터베이스에 레코드를 업데이트 할 부모 클래스 인 AnimalForm에서 20 개의 하위 클래스로 코드를 복제 할 필요가 없습니다.

그러나 나는 업데이트 쿼리를 일반화 할 수있는 방법을 알고하지 않기 때문에 현재 각 서브 클래스는 idFieldName 멤버 변수를 가지고 있으며, 부모 클래스는 것 같다

"UPDATE " . $this->table . " SET <data> WHERE " . $this->idFieldName

처럼 쿼리에 있음을 삽입 이 방법을 사용하는 것은 쉽지 않지만이 시점에서는 더 나은 해결책을 생각할 수 없습니다.

데이터베이스와 응용 프로그램 모두에서 참조로 공유 할 데이터 키 이름을 함께 연결하거나 추상화하는 디자인 모델이나 패러다임이 있습니까?

답변

1

당신이 찾고있는 것을 객체 - 관계 매핑 레이어라고합니다.

ORM은 관계형 데이터베이스를 개체 모델에 매핑하여 비즈니스 논리와 데이터 액세스의 문제를 구분합니다.ORM은 모든 변환을 수행하므로 데이터베이스 테이블이나 컬럼의 이름을 변경하면 ORM에 한 번만 알려 주면 모든 변경 사항이 해당 코드에 올바르게 적용됩니다.

PHP를 사용하고 있음을 나타내므로 다음은 PHP에 question that addresses ORM libraries입니다. ORM 기술에 대한 추가 정보는 found in Wikipedia 일 수 있습니다.

관련 문제