다음을 통해 공유


AdventureWorks의 스키마

AdventureWorks 예제 OLTP 데이터베이스의 스키마에는 테이블, 뷰 및 프로시저와 같은 개체가 포함되어 있습니다. 스키마는 이러한 개체에 액세스하는 방법을 변경합니다. 이 항목에서는 스키마에 대해 간략히 소개하고 AdventureWorks 데이터베이스에서 스키마가 사용되는 방법과 스키마에 포함되어 있는 개체에 액세스하는 다양한 방법을 설명합니다.

AdventureWorks의 스키마

Microsoft SQL Server 2005에서 스키마는 사용자와 구분됩니다. 데이터베이스 보안 주체인 사용자는 스키마와 스키마에 포함되어 있는 개체를 소유합니다. 자세한 내용은 사용자와 스키마 분리를 참조하십시오.

다음 표에서는 AdventureWorks에 사용된 스키마를 설명하고 각 스키마의 대표적인 테이블을 나열합니다.

스키마 포함된 관련 개체

HumanResources

Adventure Works Cycles 직원

Employee 테이블

Department 테이블

Person

개인 고객, 공급업체 및 직원의 이름과 주소

Contact 테이블

Address 테이블

StateProvince 테이블

Production

Adventure Works Cycles에서 제조하고 판매하는 제품

BillOfMaterials 테이블

Product 테이블

WorkOrder 테이블

Purchasing

부품 및 제품을 공급하는 공급업체

PurchaseOrderDetail 테이블

PurchaseOrderHeader 테이블

Vendor 테이블

Sales

고객 및 판매 관련 데이터

Customer 테이블

SalesOrderDetail 테이블

SalesOrderHeader 테이블

스키마에 포함된 개체 액세스

사용자는 항상 기본 스키마를 소유합니다. 기본 스키마는 DML 또는 DDL 문에 지정되어 있는 정규화되지 않은 개체 이름을 확인할 때 서버에서 검색하는 스키마입니다. 따라서 기본 스키마에 포함된 개체를 참조할 때는 스키마 이름을 지정할 필요가 없습니다. 예를 들어 table_name이 기본 스키마에 포함되어 있는 경우에는 SELECT * FROM table_name 문을 실행할 수 있습니다.

[!참고] 사용자를 만들 때 기본 스키마를 지정하지 않은 경우에는 dbo가 기본 스키마가 됩니다. 자세한 내용은 CREATE USER(Transact-SQL)를 참조하십시오.

기본 스키마가 아닌 다른 스키마에 있는 개체에 액세스하려면 최소 두 부분으로 구성된 식별자(schema_name**.**object_name)를 지정해야 합니다. 이것은 스키마 범위 개체를 참조하는 모든 DDL 및 DML 문에도 해당됩니다.

다음 예에서는 두 개의 SELECT 문을 사용하여 기본 스키마 외부에 있는 개체를 참조하는 방법을 보여 줍니다. 기본 스키마가 HumanResources가 아니라고 가정하면 Department 테이블이 기본 스키마에 포함되어 있지 않기 때문에 첫 번째 문은 실행되지 않습니다. 두 번째 문은 개체가 포함되어 있는 스키마를 지정했기 때문에 올바르게 실행됩니다.

USE AdventureWorks;
GO
--This statement fails.
SELECT Name, GroupName
FROM Department;
GO
--This statement succeeds.
SELECT Name, GroupName
FROM HumanResources.Department;
GO

AdventureWorks 스키마에 대한 대안

SQL Server 온라인 설명서의 코드 예제 및 SQL Server 2005와 함께 설치할 수 있는 추가 예제에서는 모든 스키마 범위 개체에 대해 최소한 두 부분으로 구성된 식별자를 지정합니다. 이러한 예제는 사용자의 기본 스키마에 관계없이 성공적으로 실행될 수 있습니다.

AdventureWorks를 사용하여 예제를 만들거나 테스트하려면 두 부분으로 구성된 식별자를 지정하는 다른 방법이 필요합니다. SQL Server 2005의 SQLServerEngineSamples.msi에는 AdventureWorks의 스키마를 사용하는 다른 두 가지 방법을 제공하는 스크립트가 포함되어 있습니다.

DBO 스키마에 개체 전송

AlterSchemaToDbo.sql 스크립트는 AdventureWorks의 모든 스키마 범위 개체를 dbo 스키마로 전송합니다. dbo 기본 스키마를 소유한 사용자가 이 스크립트를 실행한 후에는 DDL 및 DML 문에서 AdventureWorks 개체를 참조할 때 두 부분으로 구성된 식별자를 사용하지 않아도 됩니다.

ms124894.note(ko-kr,SQL.90).gif중요:
SQL Server 2005에서 제공하는 코드 예제에 지정되어 있는 스키마 이름을 제거하거나 dbo로 바꾸지 않은 경우에는 AlterSchemaToDbo.sql을 실행하더라도 예제가 실행되지 않습니다.

AlterSchemaFromDbo.sql 스크립트는 dbo 스키마의 개체를 AlterSchemaToDbo.sql 스크립트를 실행하기 전에 해당 개체가 속해 있던 스키마로 전송하거나 반환합니다.

동의어 사용

동의어는 스키마 범위 개체의 다른 이름입니다. 이러한 동의어는 DDL 및 DML 문에서 기준 개체 대신 지정됩니다.

CreateSynonymsDbo.sql 스크립트는 AdventureWorks의 각 스키마 범위 개체에 대한 동의어를 만듭니다. 동의어 이름은 기준 개체 이름과 동일하지만 dbo 스키마를 사용합니다. 예를 들어 HumanResources.Department의 동의어는 dbo.Department입니다. 동의어를 사용하면 다음과 같은 이점이 있습니다.

  • dbo가 기본 스키마인 경우 DDL 및 DML 문에서 해당 개체를 지정하는 데 두 부분으로 구성된 식별자를 사용할 필요가 없습니다.
  • SQL Server 2005에서 제공하는 코드 예제를 수정하지 않고 사용할 수 있습니다.

DropSynonymsDbo.sql 스크립트는 CreateSynonymsDbo.sql 스크립트로 만든 동의어를 삭제합니다. 동의어에 대한 자세한 내용은 Using Synonyms을 참조하십시오.

참고 항목

관련 자료

AdventureWorks 데이터 사전
AdventureWorks 예제 및 예제 데이터베이스 설치

도움말 및 정보

SQL Server 2005 지원 받기