데이터베이스의 3층 스키마 구조는 외부 스키마, 개념 스키마, 내부 스키마로 구성되며, 각각 데이터베이스를 바라보는 관점이 다릅니다. 이를 실제 데이터를 통해 설명하겠습니다. ### 1. 외부 스키마 (External Schema) **외부 스키마**는 사용자의 관점에서 데이터베이스를 바라보는 뷰(View)를 의미합니다. 즉, 특정 사용자나 애플리케이션이 필요로 하는 데이터만을 보여주는 사용자 맞춤형 데이터 뷰입니다. 외부 스키마는 데이터의 특정 부분만을 보여줄 수 있으며, 사용자의 권한이나 역할에 따라 다르게 정의될 수 있습니다. #### 예시: - **예시 데이터**: 고객 정보와 주문 정보가 포함된 데이터베이스가 있다고 가정합니다. | CustomerID | CustomerName | Address | | ---------- | ------------ | ------------- | | 1 | Alice | 123 Maple St. | | 2 | Bob | 456 Oak St. | | OrderID | CustomerID | ProductName | Quantity | |---------|------------|-------------|----------| | 101 | 1 | Laptop | 1 | | 102 | 2 | Mouse | 2 | - **외부 스키마**: 특정 애플리케이션이 고객의 이름과 주문 정보만 필요로 한다면, 외부 스키마는 다음과 같이 정의될 수 있습니다. | CustomerName | ProductName | Quantity | |--------------|-------------|----------| | Alice | Laptop | 1 | | Bob | Mouse | 2 | 외부 스키마는 사용자가 데이터를 어떻게 보기를 원하는지에 따라 정의됩니다. 데이터베이스의 실제 구조는 보이지 않고, 필요에 맞춘 데이터만을 보여줍니다. ### 2. 개념 스키마 (Conceptual Schema) **개념 스키마**는 데이터베이스 전체를 논리적으로 정의한 것입니다. 데이터베이스의 모든 엔터티, 관계, 속성 등을 포함하며, 데이터의 논리적 구조를 나타냅니다. 개념 스키마는 데이터베이스의 설계 단계에서 매우 중요한 역할을 합니다. #### 예시: - **개념 스키마**에서는 고객(Customer)과 주문(Order)이라는 엔터티, 그리고 이들 간의 관계가 정의됩니다. ```plaintext Customer (CustomerID, CustomerName, Address) Order (OrderID, CustomerID, ProductName, Quantity) ``` 이 스키마는 모든 데이터가 어떻게 연결되고 구조화되어 있는지를 보여줍니다. 고객과 주문 간의 관계도 개념 스키마에서 명확하게 정의됩니다. ### 3. 내부 스키마 (Internal Schema) **내부 스키마**는 데이터베이스의 물리적 저장 구조를 나타냅니다. 여기에는 데이터가 실제로 어떻게 저장되는지, 인덱스가 어떻게 생성되는지, 그리고 파일 시스템에서 데이터를 어떻게 관리할 것인지 등의 세부 사항이 포함됩니다. 내부 스키마는 데이터베이스의 성능 최적화와 밀접한 관련이 있습니다. #### 예시: - **내부 스키마**에서는 실제 데이터가 디스크에 어떻게 저장되는지, 예를 들어 B-tree 인덱스를 사용하여 빠르게 고객 ID로 데이터를 검색할 수 있도록 설정할 수 있습니다. ```plaintext File Structure: - Customers: Stored as a B-tree index on CustomerID - Orders: Stored as a clustered index on OrderID ``` 내부 스키마는 사용자가 직접 볼 수 없는 데이터베이스의 가장 하위 단계로, 데이터가 저장 장치에 어떻게 배치되고 관리되는지를 정의합니다. ### 요약 - **외부 스키마**: 사용자나 애플리케이션이 필요로 하는 데이터만을 보여주는 뷰. - **개념 스키마**: 데이터베이스 전체의 논리적 구조와 관계를 정의. - **내부 스키마**: 데이터의 물리적 저장 구조와 접근 방법을 정의. 각 스키마는 데이터베이스를 바라보는 관점이 다르며, 서로 다른 역할을 수행합니다. 이를 통해 데이터베이스의 효율성과 보안성을 높이고, 다양한 사용자 요구를 충족시킬 수 있습니다.