XML과 데이터베이스 ㅎㅎ XML과 데이터베이스 XML과 데이터베이스 매핑 관계
학습목표 11장. XML과 데이터베이스 XML과 데이터베이스 개념 비교 XML 질의어 학습
데이터베이스란? 데이터베이스의 필요성 Section 01 XML과 데이터베이스 어느 조직에서 다수의 응용 시스템이 공유해서 사용할 수 있도록 통합, 저장된 운영 데이터의 집합 데이터베이스의 필요성 데이터 검색의 효율성 데이터 빠른 갱신성 데이터 일관성 데이터 중복성 방지
데이터베이스 관리 시스템(DBMS) 데이터베이스 스키마 Section 01 XML과 데이터베이스 데이터베이스를 생성/관리하며, 관리 대상인 데이터베이스로부터 사용자의 요구에 대한 정보를 제공할 수 있는 프로그램 집합 데이터베이스 스키마 스키마는 데이터베이스 구조와의 제약 조건에 대한 명세이며 데이터베이스 및 데이터 값의 제약 조건에 대한 정의의 총칭 스키마 3단계 외부 스키마 개념 스키마 내부 스키마
외부 스키마(external schema) Section 01 XML과 데이터베이스 외부 스키마(external schema) 전체 데이터베이스의 논리적 부분 사용자나 응용 프로그래머가 직접 필요로 하는 DB 구조 서브 스키마(sub schema), 뷰(view) 포함 여러 개의 외부 스키마가 존재할 수 있음 개념 스키마(conceptual schema) 모든 애플리케이션에 대해 하나의 전체 통합된 데이터베이스 각 응용에서 필요로 하는 데이터를 종합한 조직 전체의 DB 구조 전체 사용자를 위한 데이터베이스의 구조 및 접근 권한, 보안 정책, 무결성 규칙의 명세를 포함 내부 스키마(internal schema) 물리적 저장 장치 면에서 본 전체 DB 구조 개념 스키마의 물리적 저장 구조를 정의 데이터 저장 구조의 세부 사항과 데이터베이스에 대한 접근 경로, 데이터 항목 표현 방법, 레코드의 물리적 순서, 인덱스 사용 등을 기술
관계형 데이터베이스의 기본 구조 Section 01 XML과 데이터베이스 속성= 데이터 항목, 데이터 필드 개체 성질이나 상태 기술, 데이터의 가장 작은 논리적 단위 개체 데이터베이스가 표현하려고 하는 유/무형 정보 개체 개념적 정보 세계에서의 정보 단위 투플 = 레코드 데이터 저장의 기본 단위, 관련있는 데이터를 묶어서 저장한 것 관계: 여러 개체의 연관성을 의미 속성 학생(student) 이름 학번 전화번호 주소 차임표 20020001 02-99-3874 서울 한남동 손지창 20020002 02-48-4847 서울 강남동 차태현 20020003 02-32-4546 서울 신사동 관계스킴 튜플 [그림 11-1] 관계형 데이터베이스의 기본 구조
개체 관계도 매핑 원소 수에 다른 개체 분류 Section 01 XML과 데이터베이스 고객 상품 구입 X Y 일대일(1:1) 다대다(n:n)
SQL(Structured Query Language) Section 01 XML과 데이터베이스 SQL(Structured Query Language) 데이터베이스 질의언어 DML(Data Manipulation Language)과 DDL(Data Definition Language)로 구분 SQL 문 DDL DML Create Table Alter Table Drop Table Select Insert Delete Update 테이블 생성 테이블 구조 변경 테이블 삭제 데이터 조회 데이터 삽입 데이터 삭제 데이터 수정
기본 테이블 제거와 변경:DROP TABLE Section 01 XML과 데이터베이스 기본 테이블 생성:CREATE TABLE 기본 테이블 제거와 변경:DROP TABLE CREATE TABLE 테이블이름 ( 속성이름 데이터타입 [NOT NULL] ) 테이블 생성문 형식 CREATE TABLE Student ( sno int primary key not null, name varchar(10) not null, address varchar(50) ) 학생 테이블 생성 예 DROP TABLE 테이블이름 테이블 제거문 형식 DROP TABLE Student 학생 테이블 삭제 예
데이터 검색문: SELECT 데이터 갱신문: UPDATE Section 01 XML과 데이터베이스 SELECT 열_목록 FROM 테이블_목록 WHERE 조건 데이터 검색문 형식 SELECT sno, name FROM Student WHERE sno = 's100' S100인 학생 검색 예 UPDATE 테이블이름 SET 열_이름 = 바꿀_데이터 WHERE 조건 데이터 갱신문 형식 UPDATE Student SET name = '홍길동‘ WHERE sno = 's100' S100인 학생 이름을 홍길동으로 바꾸는 예
데이터 삽입문: INSERT 데이터 삭제문: DELETE Section 01 XML과 데이터베이스 INSERT INTO 테이블이름[(열_이름 목록)] VALUES (열_값 목록) 데이터 삽입문 형식 INSERT INTO Student (sno, name, address) VALUES (100, '홍길동‘, ’서울 신사동 11번지‘) 데이터 삽입 예 DELETE FROM 테이블이름 [WHERE 조건] 데이터 삭제문 형식 DELETE FROM Student WHERE sno = 's100' S100인 학생 삭제 예
데이터베이스 관리 언어의 역할 Section 01 XML과 데이터베이스 데이터베이스에 저장될 데이터의 구조 정의 정의된 구조에 따라 데이터를 저장/삭제하는 역할 사용자나 데이터베이스 관리자의 질문을 처리
XML 질의 언어 Section 01 XML과 데이터베이스 XML-QL XQL(XML Query Language) QUILT 반구조적 데이터를 위한 질의 언어 사용자 정의 가능한 태그와 입력 요소를 다루는 것이 가능 XQL(XML Query Language) XSL에서의 패턴 매치 구문과 유사한 질의 형태 QUILT XML-QL 장점인 질의 결과 재구성과 XQL 장점인 간편성을 고려해서 만든 언어 XQuery XML 구조를 이용해서 전체가 구조화되거나 부분적으로 구조된 XML 문서에 대한 복잡한 질의 수행 Quilt에서 유래 후, 다른 언어들이 가지고 있는 유용한 기능 추가 XQuery에서 질의는 하나의 표현으로 나타남 다양한 구조와 외형을 가진 몇 개의 표현이 지원 Xpath에 근거하고 있으며, 요소 생성자, For Let When Return, 함수와 산술연산 표현, 한정 [*] 표현, 조건 표현, 테이터 타입의 수정과 검증에 사용되는 표현 등의 방식이 지원
Section 02 XML과 데이터베이스 매핑 관계 플랫폼, 운영체제, 프로그래밍 언어 등에 완전히 독립적 W3C가 규정한 표준 개체 표현 방식
Section 02 XML과 데이터베이스 매핑 관계
Section 02 XML과 데이터베이스 매핑 관계 속성 중심 매핑 속성 중심의 데이터 확장 [그림 11-6] 속성 중심의 매핑 표현 [그림 11-7] 속성 중심의 데이터 확장
Section 02 XML과 데이터베이스 매핑 관계 요소 중심 매핑 요소 중심 데이터 확장 [그림 11-8] 요소 중심 매핑 표현 [그림 11-9] 요소 중심의 데이터 확장
Section 02 XML과 데이터베이스 매핑 관계 DTD나 XML 스키마가 정의된 경우 매핑 [그림 11-10] DTD에 따른 XML 문서 매핑 관계
Section 02 XML과 데이터베이스 매핑 관계 다중 테이블 기반 관계 매핑 [그림 11-11] 관계의 매핑 표현
Section 02 XML과 데이터베이스 매핑 관계 1단계: XML 스키마(DTD)가 객체 스키마로 매핑 2단계: 클래스가 테이블로, 기본형이 컬럼으로 매핑 포인터와 참조 관계는 기본키와 외래키 관계로 매핑
Section 02 XML과 데이터베이스 매핑 관계 DTD에 의한 XML 문서와 테이블간의 매핑 [그림 11-12] DTD에 의한 XML 문서와 테이블 간의 매핑
Section 02 XML과 데이터베이스 매핑 관계 순차 매핑 설계: DTD를 고려한 테이블 매핑의 설계 방식 DTD에서 순차적으로 표현된 요소는 클래스 속성으로 매핑 테이블은 각 속성에 따른 컬럼으로 매핑 기본키와 참조키를 고려해서 테이블 컬럼을 표현하고, 정규화를 거쳐 문제가 없는지 점검 DTD, 클래스, 테이블 스키마간의 순차 매핑 관계 XML` DTD 클래스 테이블 <S> <X> </X> <Y> </Y> <Z> </Z> </S> <!ELEMENT S(X,Y,Z)> <!ELEMENT X (#PCDATA)> <!ELEMENT Y (#PCDATA)> <!ELEMENT Z (#PCDATA)> class S { String X; String Y; String Z; } cretae table S ( X varchar(10), Y varchar(10), Z varchar(10))
Section 02 XML과 데이터베이스 매핑 관계 순차 매핑 설계: DTD를 고려한 테이블 매핑의 설계 방식 순차 매핑 관계 XML DTD 클래스 테이블 <A F="data"> <B> </B> <C> <D> </D> <E> </E> </C> </A> <!ELEMENT A(B,C)> <!ELEMENT B (#PCDATA)> <!ATTLIST A F CDATA #REQUIRED> <!ELEMENT C (D,E)> <!ELEMENT D (#PCDATA)> <!ELEMENT E (#PCDATA)> class A { String b; String f; C c ; } class C { String d; String e; } cretae table A ( B varchar(10), F varchar(10), C_fk varchar(10)) cretae table C ( C_pk varchar(10), D varchar(10), E varchar(10) )
Section 02 XML과 데이터베이스 매핑 관계 선택 매핑 설계 클래스 속성으로 매핑되고, 클래스 속성은 다시 테이블 컬럼으로 매핑 선택인 요소는 클래스 속성과 테이블 컬럼으로 매핑될 때 null 값을 가질 수 있다 XML DTD 클래스 테이블 <A F="data"> <C> <D/> </C> </A> ---------- <B> </B> <!ELEMENT A(B | C)> <!ELEMENT B (#PCDATA)> <!ATTLIST A F CDATA #IMPLIED> <!ELEMENT C (D | E)> <!ELEMENT D (#PCDATA)> <!ELEMENT E (#PCDATA)> class A { String b=null; String f=null; C c=null ; } class C { String d=null; String e=null; } cretae table A ( B varchar(10) null, F varchar(10) null, C_fk varchar(10) null) cretae table C ( C_pk varchar(10) null, D varchar(10) null, E varchar(10) null) [그림 11-15] 선택 매핑 관계
Section 02 XML과 데이터베이스 매핑 관계 반복되는 자식 요소 매핑 설계 부모 요소에서 여러 번 나타나는 자식 요소는 클래스에서 여러 값을 가질 수 있는 속성으로 매핑 이것은 다시 테이블의 여러 컬럼으로 매핑되거나, 다른 외부 테이블로 매핑=프로퍼티 테이블 반복 횟수를 미리 알 수 있다면 테이블에서 여러 개의 컬럼으로 표현할 수 있다.
Section 02 XML과 데이터베이스 매핑 관계 반복되는 자식 요소 매핑 설계 한정되어 반복되는 자식 요소 매핑 관계 무한정 반복되는 자식 요소 매핑 관계 XML DTD 클래스 테이블 <A> <B> </B> <C> </C> </A> <!ELEMENT A (B,B,B,C)> <!ELEMENT B (#PCDATA)> <!ELEMENT C (#PCDATA)> class A { String[] b ; String c ; } cretae table A ( B1 varchar(10), B2 varchar(10), B3 varchar(10), C varchar(10) ) XML DTD 클래스 테이블 <A> <B> </B> <C> </C> </A> <!ELEMENT A (B+, C)> <!ELEMENT B (#PCDATA)> <!ELEMENT C (#PCDATA)> class A { String[] b ; String c ; } cretae table A ( A_pk varchar(10), C varchar(10) ) cretae table B ( A_fk varchar(10), B varchar(10) )
Section 02 XML과 데이터베이스 매핑 관계 선택 요소 매핑 설계 부모 요소에서 선택 자식 요소를 갖는 경우에 클래스에서 자식 요소는 null 값을 가질 수 있는 속성으로 매핑 테이블은 null 값을 가질 수 있는 컬럼으로 매핑 XML DTD 클래스 테이블 <A> <B> </B> <C> </C> </A> <!ELEMENT A (B?, C*)> <!ELEMENT B (#PCDATA)> <!ELEMENT C (#PCDATA)> class A { String b=null ; String[] c=null ; } cretae table A ( A_pk varchar(10), B varchar(10) null ) cretae table C A_fk varchar(10), C varchar(10) null ) [그림 11-18] 선택 요소 매핑 관계
Section 02 XML과 데이터베이스 매핑 관계 혼합 내용 매핑 설계 혼합된 내용은 크기를 알 수 없고, null 값을 가질 수 있는 클래스로 매핑 테이블에서는 프로퍼티 테이블을 생성하여 매핑 XML DTD 클래스 테이블 <A> data <B> </B> <C> </C> </A> <!ELEMENT A (#PCDAT,B,C)*> <!ELEMENT B (#PCDATA)> <!ELEMENT C (#PCDATA)> class A { String[] pd=null ; String[] b=null ; String[] c=null ; } cretae table A ( A_pk varchar(10) ) cretae table B A_fk varchar(10), B varchar(10) null ) cretae table C C varchar(10) null ) cretae table pd pd varchar(10) null ) [그림 11-19] 혼합 내용 요소 매핑 관계
Section 02 XML과 데이터베이스 매핑 관계 속성 매핑 설계 XML 문서의 속성은 기본 타입으로 매핑 단일 값을 갖는 속성은 기본 타입으로 매핑 다수 값을 갖는 속성도 다수값을 갖는 기본 타입으로 매핑 ID는 기본키로 매핑 IDREF와 IDREFS는 외래키로 매핑 XML DTD 클래스 테이블 <A D="data"> <B> </B> <C> </C> </A> <!ELEMENT A (B, C)> <!ATTLIST A D IDREFS #IMPLIED> <!ELEMENT B (#PCDATA)> <!ELEMENT C (#PCDATA)> class A { String b ; String c ; String[] d ; } cretae table A ( A_pk varchar(10), B varchar(10), C varchar(10) ) cretae table D A_fk varchar(10), D varchar(10) ) [그림 11-20] 속성 매핑 관계