code

데이터베이스 동의어는 언제 사용해야 합니까?

starcafe 2023. 7. 2. 20:52
반응형

데이터베이스 동의어는 언제 사용해야 합니까?

구문을 적어 놓았는데 데이터베이스 동의어가 매우 유용한 예시적인 사용 사례를 누가 제공할 수 있는지 궁금합니다.

테스트 시 모의 테이블 스테이징에 매우 적합합니다.예를 들어 원본 테이블에 수백만 개의 레코드가 포함되어 있고 데이터의 작은 부분 집합을 테스트하려는 경우 동의어를 사용하여 원본 테이블을 제어하는 더 작은 테이블로 리디렉션하여 다양한 시나리오를 준비할 수 있습니다.

이렇게 하면 원본 테이블에 영향을 주지 않고 모의 테이블의 데이터를 업데이트/삭제할 수 있습니다.원본 테이블을 사용할 준비가 되면 동의어를 다시 지정하기만 하면 됩니다.

동의어에 대한 Oracle 설명서를 확인하십시오.

여기에 나와 있는 다른 답변 외에도 일반적으로 사용되는 답변은 다음과 같습니다.

  • 데이터베이스 링크를 통해 원격 테이블에 사용하기 쉬운 이름 제공
  • 모든 사용자가 액세스할 수 있어야 하는 테이블(예: 공용 동의어)

일반적으로 DBA가 데이터베이스 개체를 다른 스키마로 분리하려고 하지만 이러한 개체 중 일부가 다른 스키마에 표시되기를 원하거나 필요로 할 때 사용되는 동의어를 봅니다.

제가 가장 최근에 본 예는 같은 회사에서 운영하는 여러 웹 앱입니다.사용자는 일반적으로 두 개 이상의 앱에 액세스할 수 있으며 에서는 이러한 앱에 액세스할 수 있는 사용자 계정이 하나만 있습니다.사용자 계정 정보는 다음에 저장됩니다.USER_ACCOUNTS스키마, 그리고 다른 모든 앱들은 그들만의 스키마에 있고 액세스합니다.USER_ACCOUNTS동의어를 통한 스키마.

데이터베이스 개체 이름이 기존 코드 내에서 하드 코딩된 경우.

동의어를 사용하면 테이블 또는 데이터베이스 이름에 대한 고유한 아이디어가 있는 여러 소스에서 이전 코드를 다시 작성하는 수고를 덜 수 있습니다.

예를 들어 프로덕션 서버용으로 작성된 코드를 본 적이 있습니다.코더는 편리하게도 메인 테이블의 이름을 하드 코딩했습니다.test_data그의 워크스테이션에서 잘 작동했습니다.그의 코드를 다시 쓰는 대신 동의어를 사용하여 저는 일찍 집에 돌아왔습니다.

일반적으로 SQL 또는 PL*SQL에 스키마 이름을 포함하는 것은 좋지 않습니다.따라서 만약 당신이 다른 스키마의 테이블을 참조해야 하는 코드를 작성하고 있다면: "다른 스키마에서 id를 선택하십시오.기타 테이블" 표의 동의어를 정의하는 것이 가장 좋습니다(다른 스키마에 대한 동의어 기타 테이블 만들기).기타 표) 및 "기타 표에서 ID 선택"을 기록합니다.

이렇게 하면 OtherTable이 다른 스키마 이름으로 이동하거나 다른 스키마 이름을 사용하는 다른 시스템을 설치한 경우 코드를 변경하는 대신 동의어를 재정의할 수 있습니다.

동의어를 재정의하여 동일한 구조를 가진 두 스키마 간에 코드를 전환하는 데도 사용할 수 있습니다.

예를 들어, 제대로 작성되지 않은 애플리케이션을 만들어야 하는 경우(문제가 발생하지 않음)ALTER SESSION SET CURRENT_SCHEMA스키마에 합니다. 다른 스키마에 대해 작업합니다.

동의어는 주로 그러한 경우의 해결책으로 사용됩니다.제대로 작성된 애플리케이션을 사용하면 거의 사용할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/2364818/when-should-database-synonyms-be-used

반응형