데이터베이스 동의어는 언제 사용해야 합니까?
구문을 적어 놓았는데 데이터베이스 동의어가 매우 유용한 예시적인 사용 사례를 누가 제공할 수 있는지 궁금합니다.
테스트 시 모의 테이블 스테이징에 매우 적합합니다.예를 들어 원본 테이블에 수백만 개의 레코드가 포함되어 있고 데이터의 작은 부분 집합을 테스트하려는 경우 동의어를 사용하여 원본 테이블을 제어하는 더 작은 테이블로 리디렉션하여 다양한 시나리오를 준비할 수 있습니다.
이렇게 하면 원본 테이블에 영향을 주지 않고 모의 테이블의 데이터를 업데이트/삭제할 수 있습니다.원본 테이블을 사용할 준비가 되면 동의어를 다시 지정하기만 하면 됩니다.
동의어에 대한 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
'code' 카테고리의 다른 글
Log4같은 로거에 대해 두 개의 다른 수준에서 두 개의 다른 추가기에 대한 Net 로깅 (0) | 2023.07.02 |
---|---|
Mongoid / Mongodb 및 내장된 문서 쿼리 (0) | 2023.07.02 |
현재 COM 객체를 사용하는 올바른 방법은 무엇입니까? (0) | 2023.07.02 |
둘 이상의 값을 반환하는 함수에서 할당하는 방법은 무엇입니까? (0) | 2023.07.02 |
여러 레코드를 삽입하고 ID 값을 얻는 방법은 무엇입니까? (0) | 2023.07.02 |