"스키마"의 두 판 사이의 차이
잔글 (→같이 보기) |
|||
(사용자 4명의 중간 판 15개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''스키마'''( | + | '''스키마'''(schema)는 데이터베이스에서 자료의 구조, 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조이다. 자세히 말하면 개체의 특성을 나타내는 속성과 속성들의 집합으로 이루어진 개체, 개체 사이에 존재하는 관계에 대한 정의와 이들이 유지 해야할 제약조건들을 기술한 것이다. 즉, DB내에 어떤 구조로 데이터에 저장되는가를 나타내는 데이터베이스 구조를 스키마라고 한다. |
==개요== | ==개요== | ||
스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세(Specification)를 기술(Description)한 메타데이터(Meta-Data)의 집합이다. 스키마는 | 스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세(Specification)를 기술(Description)한 메타데이터(Meta-Data)의 집합이다. 스키마는 | ||
− | + | 데이터베이스를 구성하는 데이터 개체(Entity)*, 속성(Attribute)*, 관계(Relationship)* 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다. 그리고 사용자의 관점에 다라 외부 스키마, 개념 스키마, 내부 스키마로 나누어진다. | |
− | 사용자 <--> 외부스키마 <-[응용 인터페이스]->개념 스키마 <-[저장 인터페이스]-> 내부 스키마 <-[장치 인터페이스]-> 저장 데이터베이스 | + | 사용자 <--> 외부스키마 <-[응용 인터페이스]->개념 스키마 <-[저장 인터페이스]-> 내부 스키마 <-[장치 인터페이스]-> 저장 데이터베이스 <ref> Subsay, 〈[https://subsay.tistory.com/19 데이터베이스의 개념 - 스키마]〉, 《티스토리》, 2017-09-20 </ref> |
− | |||
− | |||
+ | ==3단계 스키마 구조== | ||
+ | 외부 스키마 (각 사용자의 관점) --> 개념적 스키마(모든 사용자의 관점) --> 내부 스키마 --> 물리적 DB | ||
+ | 스키마를 분리함으로써 얻는 장점은 독립성 과 중복의배제다. | ||
==3계층== | ==3계층== | ||
17번째 줄: | 18번째 줄: | ||
#일반 사용자는 질의어(SQL)을 이용하여 DB를 쉽게 사용할 수 있다. | #일반 사용자는 질의어(SQL)을 이용하여 DB를 쉽게 사용할 수 있다. | ||
#응용 프로그래머는 C, JAVA등의 언어를 사용하여 DB에 접근한다. <ref name="스키"> 코딩팩토리, 〈[https://coding-factory.tistory.com/216 [DB기초] 스키마란 무엇인가?]〉, 《티스토리》, 2018-08-10 </ref> | #응용 프로그래머는 C, JAVA등의 언어를 사용하여 DB에 접근한다. <ref name="스키"> 코딩팩토리, 〈[https://coding-factory.tistory.com/216 [DB기초] 스키마란 무엇인가?]〉, 《티스토리》, 2018-08-10 </ref> | ||
− | |||
*개념 스키마 = 전체적인 뷰(View) | *개념 스키마 = 전체적인 뷰(View) | ||
34번째 줄: | 34번째 줄: | ||
#내부 스카마는 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서등을 나타낸다. | #내부 스카마는 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서등을 나타낸다. | ||
#시스템 프로그래머나 시스템 설게자가 보는 관점의 스키마이다. <ref name="스키"></ref> | #시스템 프로그래머나 시스템 설게자가 보는 관점의 스키마이다. <ref name="스키"></ref> | ||
+ | |||
+ | ==특징== | ||
+ | ===일반적인 특징=== | ||
+ | *데이터베이스에서 자료의 구조, 자료의 표현방법, 자료 간의 관계를 형식 언어로 정의한 구조 | ||
+ | |||
+ | *데이터베이스의 정보 구조를 설계 | ||
+ | |||
+ | *데이터베이스의 구조와 제약조건에 대한 전반적인 명세를 기술한 것 | ||
+ | |||
+ | *데이터베이스를 구성하는 개체, 속성, 관계 및 데이터 조작시 값들이 갖는 전반적인 조건을 정의 | ||
+ | |||
+ | *법칙에 따라 데이터를 입력함으로서 정보의 구조를 설계 <ref> 컴알못IT, 〈[https://samdo0812.tistory.com/70 스키마와 데이터베이스 사용자]〉, 《티스토리》, 2018-06-18 </ref> | ||
+ | |||
+ | ===논리적/물리적 독립성=== | ||
+ | 물리적 독립성은 내부 스키마가 변경되어도 다른 스키마와 독립적인 것을 말한다. 즉, 물리적으로 변경이 있었어도 개념스키마와 외부스키마에 영향을 끼치지 않음을 의미한다. 여러분의 컴퓨터의 OS를 생각해보라. RAM을 512MB*2에서 1GB*1로 바꾸었다고해서 무슨 문제가 발생하는가? 또한 데이터베이스를 백업하여 다른 물리적인 서버에 복원 할 수도 있다. 이게 물리적 독립성이다. | ||
+ | |||
+ | 논리적 독립성은 개념스키마가 논리적으로 변경이 되어도 각 사용자의 전체의 관점을 포함하고 있다면 외부스키마에 영향을 끼치지 않음을 의미한다. 예를 들어 개념스키마 ABCDEFXYZ가 XYZABCDEF로 변경[8]되었다고 해도 모든 외부 관점을 포함하고 있기 때문에 외부 관점에서 볼 때는 아무런 변화를 느끼지 못할 것이다. 만약 이렇게 변경되었을 때에 개발된 프로그램 소스의 유지보수가 필요하다면 데이터베이스를 잘 사용하지 못하고 있는 것이다. 또 다른 예로 조직의 업무가 확장되어 ABCDEFXYZ이외에 MNG라는 외부 관점이 더 생겼다. 그래서 개념스키마에 MNG가 추가되어 ABCDEFXYZMNG가 되었지만 다른 사용자의 관점에 어떤 문제가 발생하지는 않는다. | ||
+ | |||
+ | 독립성은 업무 변화에 따른 정보시스템의 변경을 유연하게 해준다. 즉, '유지보수가 쉬워진다'로 압축할 수 있다. 유지보수가 쉽다는 것은 개발의 편의성도 제공해준다는 의미와 같다. 물론 데이터베이스 시스템을 파일 시스템의 방식으로 사용하면 독립성이 가지는 진정한 의미를 찾을 수 없다. 설계자체를 데이터베이스 시스템에 맞게 하는 것이 중요하다. <ref> DataBaser.Net -〈[http://www.databaser.net/moniwiki/wiki.php/3%EB%8B%A8%EA%B3%84%EC%8A%A4%ED%82%A4%EB%A7%88%EA%B5%AC%EC%A1%B0 3단계 스키마 구조]〉 | ||
+ | </ref> | ||
+ | ===데이터 사전(Data Dictionary)=== | ||
+ | |||
+ | *데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정보를 유지, 관리하는 시스템으로 시스템 카탈로그라고도 한다. | ||
+ | *데이터 사전에는 '데이터에 관한 데이터(Data About Data)'가 저장되어 있다고 하여 데이터 사전을 메타데이터라고도 한다. | ||
+ | |||
+ | ===메타 데이터(Meta Data)=== | ||
+ | |||
+ | *데이터에 관한 데이터 | ||
+ | *실제 저장되는 데이터는 아니지만, 저장되는 데이터와 직접 혹은 간접적으로 관계가 있는 정보를 제공하는 데이터 | ||
+ | *한마디로 다른 데이터를 설명하는 데이터 | ||
+ | |||
+ | ===대표적인 메타 데이터 포맷=== | ||
+ | |||
+ | *MARC(Machine Readable Cataloging) 목록 레코드를 식별하여 축적, 유통할 수 있도록 코드화한 메타데이터 | ||
+ | |||
+ | *DC(Dublin Core) 네트워크 환경에서 각종 전자 정보를 기술하는 메타 데이터 | ||
+ | |||
+ | *ONIX(ONline Information eXcahnge) 유통에 관한 통계와 체계적인 정보를 취급함으로써 정상적인 유통 및 관리를 위한 메타 데이터 | ||
+ | |||
+ | *MODS(Metadata Object Description Schema) 디지털 도서관의 범용 서지 정보 표준 메타 데이터로서 MARC, DC, ONIX 등을 절충하여 상호운용성과 정밀성을 모두 만족시킨다. <ref> Dondons, 〈[https://dondons.tistory.com/33 [데이터베이스] 스키마의 개념과 특징]〉, 《티스토리》, 2018-06-18 </ref> | ||
+ | |||
+ | {{각주}} | ||
==참고자료== | ==참고자료== | ||
− | * 코딩팩토리, 〈[https://coding-factory.tistory.com/216 | + | * 코딩팩토리, 〈[https://coding-factory.tistory.com/216 (DB기초) 스키마란 무엇인가?]〉, 《티스토리》, 2018-08-10 |
− | * 책방 창고, 〈[https://121202.tistory.com/19 | + | * 책방 창고, 〈[https://121202.tistory.com/19 (DB용어) 스키마(Schema) 의 개념 & 특징]〉, 《티스토리》, 2013-02-26 |
+ | * Subsay, 〈[https://subsay.tistory.com/19 데이터베이스의 개념 - 스키마]〉, 《티스토리》, 2017-09-20 | ||
+ | * DataBaser.Net,〈[http://www.databaser.net/moniwiki/wiki.php/3%EB%8B%A8%EA%B3%84%EC%8A%A4%ED%82%A4%EB%A7%88%EA%B5%AC%EC%A1%B0 3단계 스키마 구조]〉 | ||
+ | * Dondons, 〈[https://dondons.tistory.com/33 (데이터베이스) 스키마의 개념과 특징]〉, 《티스토리》, 2018-06-18 | ||
+ | * 컴알못IT, 〈[https://samdo0812.tistory.com/70 스키마와 데이터베이스 사용자]〉, 《티스토리》, 2018-06-18 | ||
+ | * 시뮝, 〈[https://simuing.tistory.com/23 스키마의 정의(Schema Definition)]〉, 《티스토리》, 2018-01-03 | ||
+ | |||
+ | ==같이 보기== | ||
+ | * [[데이터베이스]] | ||
+ | |||
+ | {{데이터|검토 필요}} |
2021년 8월 7일 (토) 03:14 기준 최신판
스키마(schema)는 데이터베이스에서 자료의 구조, 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조이다. 자세히 말하면 개체의 특성을 나타내는 속성과 속성들의 집합으로 이루어진 개체, 개체 사이에 존재하는 관계에 대한 정의와 이들이 유지 해야할 제약조건들을 기술한 것이다. 즉, DB내에 어떤 구조로 데이터에 저장되는가를 나타내는 데이터베이스 구조를 스키마라고 한다.
목차
개요[편집]
스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세(Specification)를 기술(Description)한 메타데이터(Meta-Data)의 집합이다. 스키마는 데이터베이스를 구성하는 데이터 개체(Entity)*, 속성(Attribute)*, 관계(Relationship)* 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다. 그리고 사용자의 관점에 다라 외부 스키마, 개념 스키마, 내부 스키마로 나누어진다.
사용자 <--> 외부스키마 <-[응용 인터페이스]->개념 스키마 <-[저장 인터페이스]-> 내부 스키마 <-[장치 인터페이스]-> 저장 데이터베이스 [1]
3단계 스키마 구조[편집]
외부 스키마 (각 사용자의 관점) --> 개념적 스키마(모든 사용자의 관점) --> 내부 스키마 --> 물리적 DB
스키마를 분리함으로써 얻는 장점은 독립성 과 중복의배제다.
3계층[편집]
- 외부 스키마 = 사용자 뷰(View)
- 외부스키마는 사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다.
- 외부스키마는 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마(Sub Schema)라고도 한다.
- 하나의 데이터베이스 시스템에는 여러개의 외부 스키마가 존재할 수 있으며 하나의 외부 스키마를 여러개의 응용 프로그램이나 사용자가 공용할 수도 있다.
- 같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용한다.
- 일반 사용자는 질의어(SQL)을 이용하여 DB를 쉽게 사용할 수 있다.
- 응용 프로그래머는 C, JAVA등의 언어를 사용하여 DB에 접근한다. [2]
- 개념 스키마 = 전체적인 뷰(View)
- 조직체 전체를 관장하는 입장에서 DB를 정의
- 조직체의 모든 응용시스템에서 필요로 하는 개체 관계 그리고 제약조건들을 포함
- DB를 효율적으로 관리하는데 필요한 접근권한, 보안정책, 무결성 규칙등에 관한 사항들도 추가적으로 포함
- 개념스캐마는 그냥 스캐마 라고 칭하고 DB전체를 기술한 것이라서 한개밖에 존재할수가 없다.
- 데이버 테비으스이 전체적인 논리적 구조
- 개체간의 관계와 제약조건 명시
- 데이터 베이스의 접근 권한 보안 및 무결성 규칙에 관한 명세를 정의
- 기관이나 조직체의 관점에서 데이터베이스를 정의
- 데이터베이스 관리자 (DBA)에 의해 구성 [3]
- 내부 스카마 = 저장 스카마
- 내부 스카마는 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 물리적인 저장장치와 밀접한 계층이다.
- 내부 스카마는 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서등을 나타낸다.
- 시스템 프로그래머나 시스템 설게자가 보는 관점의 스키마이다. [2]
특징[편집]
일반적인 특징[편집]
- 데이터베이스에서 자료의 구조, 자료의 표현방법, 자료 간의 관계를 형식 언어로 정의한 구조
- 데이터베이스의 정보 구조를 설계
- 데이터베이스의 구조와 제약조건에 대한 전반적인 명세를 기술한 것
- 데이터베이스를 구성하는 개체, 속성, 관계 및 데이터 조작시 값들이 갖는 전반적인 조건을 정의
- 법칙에 따라 데이터를 입력함으로서 정보의 구조를 설계 [4]
논리적/물리적 독립성[편집]
물리적 독립성은 내부 스키마가 변경되어도 다른 스키마와 독립적인 것을 말한다. 즉, 물리적으로 변경이 있었어도 개념스키마와 외부스키마에 영향을 끼치지 않음을 의미한다. 여러분의 컴퓨터의 OS를 생각해보라. RAM을 512MB*2에서 1GB*1로 바꾸었다고해서 무슨 문제가 발생하는가? 또한 데이터베이스를 백업하여 다른 물리적인 서버에 복원 할 수도 있다. 이게 물리적 독립성이다.
논리적 독립성은 개념스키마가 논리적으로 변경이 되어도 각 사용자의 전체의 관점을 포함하고 있다면 외부스키마에 영향을 끼치지 않음을 의미한다. 예를 들어 개념스키마 ABCDEFXYZ가 XYZABCDEF로 변경[8]되었다고 해도 모든 외부 관점을 포함하고 있기 때문에 외부 관점에서 볼 때는 아무런 변화를 느끼지 못할 것이다. 만약 이렇게 변경되었을 때에 개발된 프로그램 소스의 유지보수가 필요하다면 데이터베이스를 잘 사용하지 못하고 있는 것이다. 또 다른 예로 조직의 업무가 확장되어 ABCDEFXYZ이외에 MNG라는 외부 관점이 더 생겼다. 그래서 개념스키마에 MNG가 추가되어 ABCDEFXYZMNG가 되었지만 다른 사용자의 관점에 어떤 문제가 발생하지는 않는다.
독립성은 업무 변화에 따른 정보시스템의 변경을 유연하게 해준다. 즉, '유지보수가 쉬워진다'로 압축할 수 있다. 유지보수가 쉽다는 것은 개발의 편의성도 제공해준다는 의미와 같다. 물론 데이터베이스 시스템을 파일 시스템의 방식으로 사용하면 독립성이 가지는 진정한 의미를 찾을 수 없다. 설계자체를 데이터베이스 시스템에 맞게 하는 것이 중요하다. [5]
데이터 사전(Data Dictionary)[편집]
- 데이터베이스에 저장되어 있는 모든 데이터 개체들에 대한 정보를 유지, 관리하는 시스템으로 시스템 카탈로그라고도 한다.
- 데이터 사전에는 '데이터에 관한 데이터(Data About Data)'가 저장되어 있다고 하여 데이터 사전을 메타데이터라고도 한다.
메타 데이터(Meta Data)[편집]
- 데이터에 관한 데이터
- 실제 저장되는 데이터는 아니지만, 저장되는 데이터와 직접 혹은 간접적으로 관계가 있는 정보를 제공하는 데이터
- 한마디로 다른 데이터를 설명하는 데이터
대표적인 메타 데이터 포맷[편집]
- MARC(Machine Readable Cataloging) 목록 레코드를 식별하여 축적, 유통할 수 있도록 코드화한 메타데이터
- DC(Dublin Core) 네트워크 환경에서 각종 전자 정보를 기술하는 메타 데이터
- ONIX(ONline Information eXcahnge) 유통에 관한 통계와 체계적인 정보를 취급함으로써 정상적인 유통 및 관리를 위한 메타 데이터
- MODS(Metadata Object Description Schema) 디지털 도서관의 범용 서지 정보 표준 메타 데이터로서 MARC, DC, ONIX 등을 절충하여 상호운용성과 정밀성을 모두 만족시킨다. [6]
각주[편집]
- ↑ Subsay, 〈데이터베이스의 개념 - 스키마〉, 《티스토리》, 2017-09-20
- ↑ 2.0 2.1 코딩팩토리, 〈[DB기초 스키마란 무엇인가?]〉, 《티스토리》, 2018-08-10
- ↑ 책방 창고, 〈[DB용어 스키마(Schema) 의 개념 & 특징]〉, 《티스토리》, 2013-02-26
- ↑ 컴알못IT, 〈스키마와 데이터베이스 사용자〉, 《티스토리》, 2018-06-18
- ↑ DataBaser.Net -〈3단계 스키마 구조〉
- ↑ Dondons, 〈[데이터베이스 스키마의 개념과 특징]〉, 《티스토리》, 2018-06-18
참고자료[편집]
- 코딩팩토리, 〈(DB기초) 스키마란 무엇인가?〉, 《티스토리》, 2018-08-10
- 책방 창고, 〈(DB용어) 스키마(Schema) 의 개념 & 특징〉, 《티스토리》, 2013-02-26
- Subsay, 〈데이터베이스의 개념 - 스키마〉, 《티스토리》, 2017-09-20
- DataBaser.Net,〈3단계 스키마 구조〉
- Dondons, 〈(데이터베이스) 스키마의 개념과 특징〉, 《티스토리》, 2018-06-18
- 컴알못IT, 〈스키마와 데이터베이스 사용자〉, 《티스토리》, 2018-06-18
- 시뮝, 〈스키마의 정의(Schema Definition)〉, 《티스토리》, 2018-01-03
같이 보기[편집]