3. 인문정보 데이터베이스 [요약]
데이터베이스(Database)란?
다수의 응용 시스템들이 사용하기 위해 체계적으로 편
성, 저장된 데이터의 집합
An organized collection of information records that
can be accessed electronically.
A collection of data organized so that various
programs can access and update the information.
1. 데이터베이스
4. 인문정보 데이터베이스 [요약]
데이터베이스 구축의 목적
데이터 관리의 편리성
데이터 무결성 유지
데이터의 물리적 & 논리적 독립성 유지
데이터 중복의 최소화
데이터의 공유
다양한 접근 방법 제공
데이터 보안
1. 데이터베이스
5. 인문정보 데이터베이스 [요약]
스키마(Schema)
스키마: 데이터베이스의 논리적 정의
1. 데이터베이스
릴레이션(relation)
행(Row)과 열(Column)로 이루어진 2차원 테이블(Table)
튜플들의 집합
번호 이름 생년 몰년 본관
102 원균 1540 1597 원주원씨
103 이순신 1545 1598 덕수이씨
104 허균 1569 1618 양천허씨
105 임성주 1711 1788 풍천임씨
애트리뷰트(attribute)
릴레이션의 열(column)
엔티티(entity)가 보유하는 특성 표현
field
튜플(tuple)
릴레이션의 행(row)
record, entity
6. 인문정보 데이터베이스 [요약]
데이터베이스 관리 시스템(DBMS)
DBMS: Database Management System
이용자(응용 프로그램)과 데이터의 중재자로서 모든 응용
프로그램들이 데이터베이스에 접근하여 공동으로 활용할
수 있게끔 관리해 주는 소프트웨어
데이터베이스의 편리하고 효율적인 검색, 저장을 위한 환
경 제공
1. 데이터베이스
8. 인문정보 데이터베이스 [요약]
SQL(Structured Query Language)
데이터베이스의 검색과 조작을 쉽고 빠르게 하기 위해 개발된 데이터베이스
언어
1970년대 초반 IBM사의 관계형 데이터베이스 질의어로 개발
1973 SQARE: Structured Queries as Relational Expressions
1974 SEQUEL: Structured English as Query Language
1976 SQL: Structured Query Language
DBMS마다 상이한 형태의 질의어를 제공하는 데서 오는 사용자의 불편 해소
필요성 대두 ⇒ 데이터베이스 질의어 표준화 요구 발생
1986년 ANSI 와 ISO가 공동으로 SQL의 표준화 작업을 진행(SQL-86)
관계형 DB를 위한 SQL2(1992년), 객체지향형 DB를 위한 SQL3(1999), XML
데이터를 처리하기 위한 SQL4(2003), 멀티미디어 정보를 위한 SQL/MM 등
표준화 작업이 계속 진행
2. SQL
9. 인문정보 데이터베이스 [요약]
데이터 조작어
(DML : Data Manipulation Language)
데이터 정의어
(DDL : Data Definition Language)
SQL의 구성
•테이블에 데이터를 삽입하거나,
삭제하고, 수정할 수 있는 기능
•저장 데이터 중 조건에 맞는 것
들을 검색하는 기능.
•데이터가 저장되는 테이블(릴레
이션)을 생성, 변경, 삭제하는 기
능
•테이블에 저장된 데이터에 빨리
접근하도록 인덱스(index)를 정의
하는 기능
•가상 테이블: 뷰(view)를 정의할
수 있는 기능
2. SQL
10. 인문정보 데이터베이스 [요약]
데이터 조작의 기본 4 동작2. SQL
동작 SQL
Create
(생성, 삽입) INSERT
Read or Retrieve
(읽기, 검색) SELECT
Update
(수정, 갱신) UPDATE
Delete or Destroy
(삭제) DELETE
11. 인문정보 데이터베이스 [요약]
SQL 문의 기본 구조
select 이름, 생년, 몰년 from 인물정보 where 생년 >1700 and 몰
년 < 1900 order by 생년
☞ ‘인물정보’ 테이블에서 1700년 이후에 태어나고 1900년 전에 죽
은 사람을 찾아 그들의 ‘이름’, ‘생년’, ‘몰년’을 ‘생년’ 순서대로 보
여라
select 표시 열 from 테이블 where 행 제약 조건 order by 기준 열
2. SQL
13. 인문정보 데이터베이스 [요약]
일반적인 데이터베이스는 그것을 구성하는 정보의 조각(데이터베이
스의 행과 열)에 문자나 숫자만을 담을 수 있는 데 반해, XML 지원 데
이터베이스는 XML 언어로 쓰여진 데이터를 담을 수 있는 기능을 지
원
일반적인 DBMS 기능 + XML 데이터 타입 + XML 데이터 조작 메쏘드
지원
기사번호 국문기사
10001976
<항목 ID="10001976">
<항목명>
<대표항목명><지명>장서각</지명></대표항목명>
<한글항목명>장서각</한글항목명>
<한자항목명>藏書閣</한자항목명>
</항목명>
<메타데이터>
<이칭별칭 />
<키워드>장서각</키워드>
<분야>문화·교육/교육</대표분야>
<유형>지명/시설</대표유형>
<지역>경기도 성남시 분당구 운중동</지역>
<시대>근대/일제강점기|현대/현대</시대>
<분야>문화·교육/교육</분야>
<유형>지명/시설</유형>
<위치 연관="1"><공간 식별자="성남:한국학중앙연구원 장서각" /></위치>
<집필자>문옥표</집필자>
</메타데이터>
<본문>
<소표제>[정의]</소표제>
<문단><기관>한국학중앙연구원</기관>내에 있는 옛 이왕직도서관((李王職圖書館).</문단>
……
<삽도><시청각 ID="P0148">장서각 - 전경 정면</시청각></삽도>
</본문>
</항목>
XML 데이터베이스란?3. XML 데이터베이스의 기능
14. 인문정보 데이터베이스 [요약]
데이터 타입(Data Type)
문자형: 문자열을 정의하기 위한 데이터 타입
CHAR: 8000바이트 이하의 고정형 문자.
VARCHAR: 8000바이트 이하의 가변형 문자
TEXT: 8000바이트 이상의 문자열 데이터. (0 ~ 2 GB)
NCHAR, NVARCHAR, NTEXT : 유니코드 형식의 문자 데이터
정수형: 소수점이 없는 숫자형 데이터 타입
BIGINT, INT, SMALLINT, TINYINT, BIT
실수형: 소수점을 가진 숫자형 데이터 타입
NUMERIC, DECIMAL, FLOAT, REAL
XML: XML 문서를 위한 데이터 타입
XML (MS SQL 2005 이상)
계층형: 엔티티의 계층적 지위를 표현하기 위한 데이터 타입
HIERARCHYID (MS SQL 2008)
/, /1/, /2/, /3/1/, /3/2/1/, /3/2/1.5/, /3/2/3/
공간형: 지리 공간 데이터를 처리하기 위한 데이터 타입
GEOMETRY, GEOGRAPHY (MS SQL 2008)
3. XML 데이터베이스의 기능
15. 인문정보 데이터베이스 [요약]
메쏘드란?
특정 유형의 개체에 대해 동작하는 서브 프로그램
a piece of code that is exclusively associated either with a class or
with an object
XML 데이터 조작 메쏘드
국문기사.query(‘/항목/항목명/한글항목명’)
3. XML 데이터베이스의 기능
컬럼 이름 메쏘드 XPath
16. 인문정보 데이터베이스 [요약]
MS SQL의 XML 데이터 조작 메쏘드
XML 데이터 조작 메쏘드
메쏘드 기능 반환값
query() XML 인스턴스에 대해 쿼리 검색된 XML 인스턴스
value() XML 인스턴스에서 값을 검색하여
정해진 형식으로 반환
검색된 XML 인스턴스의
값
exist() NULL이 아닌 결과를 반환하는지 여
부를 확인
TRUE/FALSE
modify() XML 데이터의 업데이트를 수행하
도록 DML 문을 지정
반환값 없음
nodes() 여러 개의 XML 인스턴스를 여러 개
의 행으로 반환
노드별로 추출된 XML
인스턴스를 담은 행 집
합(테이블)
3. XML 데이터베이스의 기능
18. 인문정보 데이터베이스 [요약]
XML 기반 관계형 데이터베이스 설계의 3 원칙
1. 단위 노드의 XML 문서는 더 이상 분해하지 않고, 하나의
XML 컬럼에 적재한다.
2. 주요 메타데이터 요소는 별도 테이블의 독립 컬럼 데이터
로 관리한다.
3. XML 본문 컬럼과 메타데이터 컬럼의 데이터는 항상 일치
되도록 한다.
4. XML DB 설계
19. 인문정보 데이터베이스 [요약]
3원칙(1): XML 문서의 원형 유지
‘단위 노드’로 취급되는 원시 XML 문서는 하나의 ‘XML
컬럼’에 담기도록 한다.
기사번호 국문기사
10001976
<항목 ID=“10001976”>
<항목명>
<대표항목명>장서각</대표항목명>
……
<삽도><시청각 ID=“P0148”>장서각 – 전경</시청각></삽도>
</항목>
10000312
<항목 ID=“10000312”>
<항목명>
<대표항목명>백헌집</대표항목명>
……
<삽도><시청각 ID=“P0149”>백헌집 표지</시청각></삽도>
</항목>
10002014
<항목 ID=“10002014”>
<항목명>
<대표항목명>정일당 강씨 사당</대표항목명>
……
<삽도><시청각 ID=“P0336”>정일당 강씨 사당 - 전경</시청각></삽도>
</항목>
4. XML DB 설계
20. 인문정보 데이터베이스 [요약]
3원칙(2): 주요 메타데이터의 관리
주요 메타데이터 요소는 별도의 정형 데이터로 관리한다.
기사번호 한글제
목
한자제
목
분야 유형 지역 시대 위치
10001965 입학도설 入學圖說 문화유산/기록유산 문헌/단행본
경기도 성남시 분
당구 운중동
조선/조선 전기
성남:한국학
중앙연구원
장서각
기사번호 국문기사
10001965
<항목 ID=“10001965”>
<항목명>
<대표항목명>『입학도설』</대표항목명>
<한글항목명>입학도설</한글항목명>
<한자항목명>入學圖說</한자항목명>
</항목명>
<메타데이터>
<분야>문화유산/기록유산</분야>
<유형>문헌/단행본</유형>
<지역>경기도 성남시 분당구 운중동</지역>
<시대>조선/조선 전기</시대>
<위치 연관="2"><공간 식별자="성남:한국학중앙연구원 장서각" /></위치>
</메타데이터>
……
<삽도><시청각 ID=“P1219”>입학도설</시청각></삽도>
</항목>
4. XML DB 설계
21. 인문정보 데이터베이스 [요약]
3원칙(3): 텍스트(XML)와 메타데이터의 동기화
XML 본문과 여기에서 추출된 정형 데이터는 항상 일치되도록 한다
XML 본문과 추출된 정형 데이터의 동기화: ‘가상 뷰’ 또는 ‘트리거’ 사용
트리거(trigger):
• 데이터의 변경시 자동적으로 동작하도록 예정된 프로
그램
• a SQL procedure that initiates an action when an
event (INSERT, DELETE or UPDATE) occurs.
4. XML DB 설계
23. 인문정보 데이터베이스 [요약]
데이터베이스 생성
Microsoft SQL Server Management Studio
데이터베이스 > 새 데이터베이스
5. XML DB 구현
24. 인문정보 데이터베이스 [요약]
스키마 구현(1)
원시 XML 문서의 저장 공간: [텍스트]
열 이름 데이터 타입 데이터 소스 특성
기사번호 nvarchar(20)
‘/항목’ 요소의 ‘ID’
속성
Not null, primary
key
국문기사 xml 입력 데이터 Not null
영문기사 xml 입력 데이터 Null
USE 성남문화지도
CREATE TABLE 텍스트(
기사번호 nvarchar(20) NOT NULL,
국문기사 xml NOT NULL,
영문기사 xml NULL,
CONSTRAINT [PK_텍스트] PRIMARY KEY CLUSTERED(기사번호 ASC)
)
5. XML DB 구현
25. 인문정보 데이터베이스 [요약]
스키마 구현(2)
자료번호 자동 추출을 위한 트리거 설정: [텍스트].[기사번호]
CREATE TRIGGER 번호처리 ON 텍스트 INSTEAD OF INSERT
AS
INSERT INTO 텍스트(기사번호, 국문기사)
SELECT
t.국문기사.value('(/항목/@ID)[1]', 'nvarchar(20)')
AS 기사번호,
t.국문기사 AS 국문기사
FROM inserted t
5. XML DB 구현
26. 인문정보 데이터베이스 [요약]
스키마 구현(3)
메타데이터 관리를 위한 가상 뷰: [안내]
열이름 데이터 형식 컬럼 데이터 경로
기사번호 nvarchar(20) 기사번호
한글제목 nvarchar(max) 국문기사 /항목/항목명/대표항목명
한자제목 nvarchar(max) 영문기사 /항목/항목명/한자항목명
영문제목 nvarchar(max) 영문기사 /항목/항목명/대표항목명
국문정의 nvarchar(max) 국문기사 /항목/본문/문단[1]
영문정의 nvarchar(max) 영문기사 /항목/본문/문단[1]
분야 nvarchar(40) 국문기사 /항목/메타데이터/분야
유형 nvarchar(40) 국문기사 /항목/메타데이터/유형
지역 nvarchar(40) 국문기사 /항목/메타데이터/지역
시대 nvarchar(40) 국문기사 /항목/메타데이터/시대
위치 nvarchar(40) 국문기사 /항목/메타데이터/위치/공간/@식별자
위치연관 int 국문기사 /항목/메타데이터/위치/@연관
5. XML DB 구현
27. 인문정보 데이터베이스 [요약]
스키마 구현(3)
가상 뷰 생성을 위한 SQL 문
CREATE VIEW 안내 AS
SELECT
기사번호,
국문기사.value(‘(/항목/항목명/대표항목명)[1]’, ‘nvarchar(max)’) AS 한글제목,
국문기사.value(‘(/항목/항목명/한자항목명)[1]’, ‘nvarchar(max)’) AS 한자제목,
영문기사.value(‘(/항목/항목명/대표항목명)[1]’, ‘nvarchar(max)’) AS 영문제목,
국문기사.value(‘(/항목/본문/문단)[1]’, ‘nvarchar(max)’) AS 한글정의,
영문기사.value(‘(/항목/본문/문단)[1]’, ‘nvarchar(max)’) AS 영문정의,
국문기사.value('(/항목/메타데이터/분야)[1]', 'nvarchar(40)') AS 분야,
국문기사.value('(/항목/메타데이터/유형)[1]', 'nvarchar(40)') AS 유형,
국문기사.value('(/항목/메타데이터/지역)[1]', 'nvarchar(40)') AS 지역,
국문기사.value('(/항목/메타데이터/시대)[1]', 'nvarchar(40)') AS 시대,
국문기사.value(‘(/항목/메타데이터/위치/공간/@식별자)[1]’, ‘nvachar(40)’) AS 위치,
국문기사.value(‘(/항목/메타데이터/위치/@연관)[1]’, ‘int’) AS 위치연관
FROM 텍스트
5. XML DB 구현
28. 인문정보 데이터베이스 [요약]
소스 데이터 입력
XML 문서를 [국문기사] 컬럼에 적재
INSERT INTO 텍스트(국문기사) VALUES(
CONVERT(xml,
N‘<항목 ID="10001642">
<항목명>
<대표항목명><인명>이경석</인명> 선생 묘</대표항목명>
<한글항목명>이경석 선생 묘</한글항목명>
<한자항목명>李景奭 先生 墓</한자항목명>
</항목명>
<메타데이터>
<이칭별칭></이칭별칭>
<키워드>묘소|무덤|신도비</키워드>
<분야>역사/전통시대|문화유산/유형유산</분야>
<유형>유적/능묘</유형>
<지역>경기도 성남시 분당구 석운동</지역>
<시대>조선/조선 후기</시대>
……
</항목>’, 1)
)
5. XML DB 구현
29. 인문정보 데이터베이스 [요약]
소스 데이터 입력
XML 문서를 [영문기사] 컬럼에 적재
UPDATE 텍스트
SET 영문기사 = CONVERT(xml,
N‘<항목 ID="10001642">
<항목명>
<대표항목명>Tomb of <인명>Yi Gyeongseok</인명></대표항목명>
</항목명>
<메타데이터>
<분야>History / Traditional Period | Cultural Heritage / Tangible Cultural Heritage</분야>
<유형>Archaeological Sites / Tombs</유형>
<지역>San 16-18 Seogun-dong, Bundang-gu, Seongnam-si, Gyeonggi-do</지역>
<시대>Joseon</시대>
……
</항목>’, 1)
WHERE 기사번호 = ‘10001642’
5. XML DB 구현
30. 인문정보 데이터베이스 [요약]
입력 데이터 조회
메터데이터 및 전자문서 연계 조회
기사번호 한글제목 한자제목
…
…
…
…
분야 유형 지역 시대 위치 전자문서
10001642
이경석 선
생 묘
李景奭 先
生 墓
문화유산
/유형유
산
유적/능묘
경기도 성
남시 분당
구 석운동
조선/조선
후기
성남:이경석
묘 및 신도비
<항목 ID=“10001642”>
<항목명> …… </항목명>
……
</항목>
10001657 이곤 사당 李坤 祠堂
종교/유
교
유적/건물
경기도 성
남시 분당
구 판교동
현대/현대
성남:이곤사
당
<항목 ID=“10001657”>
<항목명> …… </항목명>
……
</항목>
10001976 장서각 藏書閣 문화·교
육/교육
지명/시설 성남시 분
당구 운중
동
근대/일제
강점기|현
대/현대
성남:한국학
중앙연구원
장서각
<항목 ID=“10001976”>
<항목명> …… </항목명>
……
</항목>
SELECT 안내.*, 텍스트.국문기사 FROM 안내, 텍스트 WHERE 안내.기사번호=텍스트.기사번호
XML 전자문서의 갱신에 따라 메타데이터 뷰 자동 갱신
5. XML DB 구현
31. 인문정보 데이터베이스 [요약]
적재 데이터 수정/삭제
XML 데이터의 갱신
update 텍스트 set 국문기사=N‘………’ where 기사번호=‘………’
Delete 텍스트 where 기사번호=‘………’
데이터 삭제
5. XML DB 구현