>

일반적으로 응용 프로그램 계층의 개체와 데이터베이스 계층의 테이블 간에는 1-1 매핑이 있습니다.
이 커플 링으로 인해 데이터베이스 스키마가 변경 될 때마다 응용 프로그램 버전이 현재 데이터베이스 버전과 호환되지 않을 수 있습니다.
메타 데이터로 구동되는 데이터베이스 디자인 방식이 있다는 것을 읽었습니다. 개체에 사용 가능한 필드와 같은 것이 테이블에서 발견 된 후 쿼리가 수행됩니다. 버전 관리 문제를 피하기 위해 어떤 방향으로 지시합니다.
이 접근법은 일반적으로 사용되며 정확히 어떻게 구현됩니까? 이 문제를 해결하는 다른 방법이 있습니까?

  • 답변 # 1

    당신이 생각하는 접근법을 Entity-Attribute = Value (EAV)라고합니다. 당신이 구글에 대해 주위에 있다면 당신은 그것이 거의 보편적으로 사악하다는 것을 매우 빨리 알게 될 것이다. 간단히 말해, 관계형 데이터베이스 관리 시스템이 의도 한 작업을 수행 할 수 없기 때문에 일반적으로 나쁜 생각입니다.

    대안으로, 스키마 변경을 역 호환성을 유지해야하는 것으로 생각해야합니다. 이것은 종종 새로운 열이 널 입력 가능하거나 기본값이 설정됨을 의미합니다. 하지만 응용 프로그램으로 수행하려는 작업에 따라 데이터베이스 변경이 단순히 주요 변경 사항이므로 해당 코드 변경을 해제하지 않고 데이터베이스 변경을 해제 할 수없는 경우가 있습니다.

    일부 사람들은 데이터베이스에 버전 정보가 포함 된 짧은 코드 테이블 (예 : 최소 및 최대 지원 코드 버전)을 유지하는 것을 보았습니다. 이것에 대한 아이디어는 응용 프로그램이 시작될 때 코드 테이블에서 빠른 조회를 수행하고 데이터베이스 버전이 코드와 호환되지 않으면 코드가 정상적으로 종료된다는 것입니다.

  • 이전 sql server - 작업이 다시 시작된 연결된 서버에 다시 연결되지 않습니다
  • 다음 database design - 논리식을 저장하는 권장 방법