[[TableOfContents]] ==== 스키마[* Schema]란? ==== 스키마란, 데이터베이스의 기술[* Description]이다. 네이버 용어사전에는 다음과 같이 정의되어 있다. ||데이터 시스템 언어 회의(CODASYL) 데이터베이스를 기술하기 위해 사용하기 시작한 개념. 데이터베이스의 구조에 관해서 이용자가 보았을 때의 논리 구조와 컴퓨터가 보았을 때의 물리 구조에 대해 기술하고 있다. 데이터 전체의 구조를 정의하는 개념 스키마, 실제로 이용자가 취급하는 데이터 구조를 정의하는 외부 스키마 및 데이터 구조의 형식을 구체적으로 정의하는 내부 스키마가 있다.|| 데이터베이스는 현재 다음과 같은 논리적인 모델이 있다. * 계층형 모델 * 네트워크형 모델 * [http://www.databaser.net/moniwiki/wiki.php/%EA%B4%80%EA%B3%84%ED%98%95%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%AA%A8%EB%8D%B8 관계형 모델] * 객체형 모델 * 객체-관계형 모델 '논리적'이라는 말은 위의 논리적인 모델에서 정의된 논리에 맞게 기술하는 것을 말한다. 즉, 계층형 모델의 논리에 맞게 기술하거나 관계형 모델에 맞게 기술한 정의쯤으로 생각하면 된다. 현재는 관계형 모델[* MS-SQL Server등이 이 모델이다] 또는 객체-관계형 모델[* Oracle, PostgreSQL 이 이 모델이다]중에 하나로 기술된다. 요즘은 XML[* eXtensible Markup Language]에 대한 내용도 포함되어 반구조적인 내용도 포함되어 기술될 수 있다. 요즘의 DBMS[* DataBase Management System]는 관계형과 객체-관계형의 경계가 모호하지만 스키마라고 말한다면 관계형 모델의 스키마를 이야기 한단고 생각하면 된다. 그래도 뭔가 석연치 않다면 그냥 '데이터베이스에 대한 설명 또는 명세' 라고 생각하면 될 것이다. ==== 삼단계 스키마 구조 ==== 아래 그림은 3단계 스키마 구조를 나타내고 있다. 3단계 스키마 구조는 데이터베이스를 바라보는 관점으로 각각을 분리한 것이다. 분리함으로써 얻는 이점은 '독립성'과 '중복의 배제'다. attachment:3단계스키마구조/3단계스키마구조.JPG 다 필요없이 데이터를 가지고 설명을 하면 다음과 같이 설명된다. * 외부스키마: 각 사용자의 관점 * 사용자1은 ABC가 필요. 스키마 ABC * 사용자2은 DEF가 필요. 스키마 DEF * 사용자3은 AEX가 필요. 스키마 AEX * 사용자n은 XYZ가 필요. 스키마 XYZ * 개념스키마: 전체 관점 필요. 스키마 ABCDEFXYZ * 내부스키마: 내부 관점 필요. * ABCDEFXYZ를 물리적으로 ABCDEF와 XYZ로 나누고 각각을 다른 디스크 배열에 저장. ==== 논리적/물리적 독립성 ==== 물리적 독립성은 내부 스키마가 변경되어도 다른 스키마와 독립적인 것을 말한다. 즉, 물리적으로 변경이 있었어도 개념스키마와 외부스키마에 영향을 끼치지 않음을 의미한다. 여러분의 컴퓨터의 OS를 생각해보라. RAM을 512MB*2에서 1GB*1로 바꾸었다고해서 무슨 문제가 발생하는가? (하드웨어 호환성과 같은 딴지 걸지 말자.) 또한 데이터베이스를 백업하여 다른 물리적인 서버에 복원 할 수도 있다. 이게 물리적 독립성이다. 논리적 독립성은 개념스키마가 논리적으로 변경이 되어도 각 사용자의 전체의 관점을 포함하고 있다면 외부스키마에 영향을 끼치지 않음을 의미한다. 예를 들어 개념스키마 ABCDEFXYZ가 XYZABCDEF로 변경[* 관계형 데이터베이스에서 컬럼의 순서는 무의미하다.]되었다고 해도 모든 외부 관점을 포함하고 있기 때문에 외부 관점에서 볼 때는 아무런 변화를 느끼지 못할 것이다. 만약 이렇게 변경되었을 때에 개발된 프로그램 소스의 유지보수가 필요하다면 데이터베이스를 잘 사용하지 못하고 있는 것이다. 또 다른 예로 조직의 업무가 확장되어 ABCDEFXYZ이외에 MNG라는 외부 관점이 더 생겼다. 그래서 개념스키마에 MNG가 추가되어 ABCDEFXYZMNG가 되었지만 다른 사용자의 관점에 어떤 문제가 발생하지는 않는다. 독립성은 업무 변화에 따른 정보시스템의 변경을 유연하게 해준다. 즉, '유지보수가 쉬워진다'로 압축할 수 있다. 유지보수가 쉽다는 것은 개발의 편의성도 제공해준다는 의미와 같다. 물론 데이터베이스 시스템을 파일 시스템의 방식으로 사용하면 독립성이 가지는 진정한 의미를 찾을 수 없다. 설계자체를 데이터베이스 시스템에 맞게 하는 것이 중요하다. ==== 이렇게 실현될 것이다 ==== attachment:3단계스키마구조/schema2.png ---- 자료가 좋네요~ 자세한 설명과 그림 좋은 자료 고맙습니다. ^^ 수고하세요 -- 백영민 2012-01-13 09:01:20 ---- 자료 감사 드려요. Good!! -- 환타스틱 2019-04-23 09:44:55