15. DB Schema
데이터베이스에는 수많은 데이터 정보들이 저장된다. 내 DB에는 작고 귀여운 정보들 밖에 없지만 추후에 실 서비스를 운영하거나 그러한 회사에서 일을 하게 되면 이를 더 효율적으로 관리할 필요성을 느끼게 될 것이다. 데이터베이스 스키마는 이러한 데이터들이 어떻게 보일지에 대한 대략적인 모습을 의미한다. 스키마라는 이름에서 느낌오듯 데이터간의 관계와 모습을 스키마를 통해 대략적으로 알 수 있다.
오늘은 데이터베이스 스키마에 대해서 공부한 내용을 정리해 보자
데이터베이스 스키마란?
데이터베이스 스키마를 일종의 데이터 구조로 생각하면 이를 이해하기 좀 수월한데 데이터가 어떤식으로 서로 관계를 맺고 있는지 등의 정보가 이 스키마에 포함되어있다. 데이터 베이스 스키마에는 중요하거나 관련된 모든 데이터들과 모든 데이터 항목에 대한 일관된 형식을 지정해주며 각각의 이름과 속성이 적혀있다. 한마디로 데이터베이스의 스키마만 봐도 '아 이 db에는 이러이러한 데이터가 이러이러한 관계로 얽혀있구나!' 하고 알 수 있어야 한다. 따라서 이 스키마는 관계형 데이터베이스 관리 시스템을 설계 하는데 중요한 요소이다.
스키마는 개체의 특성을 나타내는 속성(Attribute), 속성들의 집합체인 개체(Entitiy) 그리고 각각의 객체 또는 데이터간의 관계(Relation) 요소를 갖고 있으며 이들 자료값들이 갖는 제약조건에 관한 정의를 아울러서 스키마라고 한다. 가장 기본적인 수준에서 데이터베이스 스키마는 데이터베이스를 구성하는 테이블 또는 관계와 각 테이블에 포함된 필드를 나타낸다. 이 스키마 다이어그램을 엔티티 관계 다이어그램(ERD)와 종종 바꾸어 사용되곤 한다.
Schema의 3계층
스키마는 사용자의 관점에 따라 3계층으로 나뉘어지고 이를 각각 외부스키마, 개념스키마, 내부스키마라고 부른다. 각각의 계층을 좀더 자시히 나눠보자
- 외부스키마 ( 사용자 View)
외부 스키마는 '서브 스키마' 혹은 '사용자 뷰'라고 이야기 하며 데이터베이스를 접근하는 외형적인 개념을 뜻한다. 데이터베이스를 바라보는 사용자의 관점이 여러개듯 외부 스키마 역시 여러개가 존재하게 된다. 예를들어 하나의 정보를 검색하고자 할때 누구는 A라고 검색하고 누구는 A+라고 검색하고 또 어떤사람은 a 라고 검색할 것이지만 검색 결과가 모두 같을 수 있다. 이것이 외부 스키마가 여러개 존재 할 수 있다는 의미이다.
- 개념스키마
위의 그림에서 가운데에 위치하고 있는 개념스키마는 역시 사용자 관점으로 조직 전체의 데이터베이스 구조를 논리적으로 정의한 것으로 데이터베이스를 일반적으로 1. 사람이 이해하는 논리구조 2. 컴퓨터가 이해하는 물리구조 로 나뉘는데 그중 첫번째에 해당하는 논리구조가 개념스키마이다. 두번째의 경우는 데이터가 파일 및 인덱스 측면에서 데이터베이스 시스템에 저장되는 방식을 의미한다. 또한 일반적으로 '스키마'라고 하면 이는 개념스키마를 뜻하는 경우라고 생각하면 된다.
- 내부스키마
마지막으로 외부스키마와 개념스키마가 사용자 관점에서의 스키마였다면 내부스키마는 컴퓨터 즉 데이터베이스 관점에서의 정의를 뜻한다. 이는 디스크 또는 물리적인 저장 장치에 데이터의 물리적인 저장 방식을 나타낸다. 한마디로 데이터베이스에 데이터가 어떻게 나뉘어지고 저장되어야 하는지 이를 어떻게 기계적으로 처리를 하는지에 대한 과정을 의미한다.
스키마 통합 시 유의할 점
- 중복되는 데이터는 보존
통합하는 스키마에서 겹치는 모든 요소는 데이터베이스 스키마 테이블에 있어야 한다.
- 확장되어 겹치는 중복 데이터 역시 보존
하나의 소스에만 나타나지만 겹치는 요소와 연결된 요소는 역시 데이터베이스 스키마에 보존시켜놓는다.
- 표준화
독립적인 관계와 엔티티는 데이터베이스 스키마의 동일한 테이블에 함께 묶이지 않아야 한다.
- 최소화
모든 요소의데이터가 손실되지 않도록 하는 한 최대한 간략하게 테이블을 구성한다.
Reference
- https://www.hedleyonline.com/ko/blog/%EC%8A%A4%ED%82%A4%EB%A7%88%EC%97%90-%EB%8C%80%ED%95%9C-%EB%AA%A8%EB%93%A0%EA%B2%83-2022/