디지털 인문학 데이터베이스 개론
DESCRIPTION
디지털 인문학에서 필수적으로 익혀야 되는 데이터베이스 관련 내용을 요약해 놓은 자료.TRANSCRIPT
인문정보 데이터베이스 [ 요약 ]
디지털 인문학 데이터베이스 [ 요약 ]
2013. 2. 27.
김 현한국학중앙연구원
인문정보 데이터베이스 [ 요약 ]
1. 데이터베이스
1. 데이터베이스
인문정보 데이터베이스 [ 요약 ]
데이터베이스 (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 informa-tion.
1. 데이터베이스
인문정보 데이터베이스 [ 요약 ]
데이터베이스 구축의 목적
데이터 관리의 편리성 데이터 무결성 유지
데이터의 물리적 & 논리적 독립성 유지 데이터 중복의 최소화
데이터의 공유 다양한 접근 방법 제공 데이터 보안
1. 데이터베이스
인문정보 데이터베이스 [ 요약 ]
스키마 (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
인문정보 데이터베이스 [ 요약 ]
데이터베이스 관리 시스템 (DBMS)
DBMS: Database Management System
이용자 ( 응용 프로그램 ) 과 데이터의 중재자로서 모든
응용 프로그램들이 데이터베이스에 접근하여 공동으로
활용할 수 있게끔 관리해 주는 소프트웨어
데이터베이스의 편리하고 효율적인 검색 , 저장을 위한
환경 제공
1. 데이터베이스
인문정보 데이터베이스 [ 요약 ]
2. SQL
2. SQL
인문정보 데이터베이스 [ 요약 ]
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
인문정보 데이터베이스 [ 요약 ]
데이터 조작어(DML : Data Manipulation Language)
데이터 정의어(DDL : Data Definition Language)
SQL 의 구성
•테이블에 데이터를 삽입하거나 ,
삭제하고 , 수정할 수 있는 기능•저장 데이터 중 조건에 맞는
것들을 검색하는 기능 .
•데이터가 저장되는 테이블 (릴레이션 ) 을 생성 , 변경 , 삭제하는 기능
•테이블에 저장된 데이터에 빨리 접근하도록 인덱스 (index) 를 정의하는 기능
•가상 테이블 : 뷰 (view) 를 정의할 수 있는 기능
2. SQL
인문정보 데이터베이스 [ 요약 ]
데이터 조작의 기본 4 동작2. SQL
동작 SQL
Create( 생성 , 삽입 ) INSERT
Read or Retrieve( 읽기 , 검색 ) SELECT
Update( 수정 , 갱신 ) UPDATE
Delete or Destroy( 삭제 ) DELETE
인문정보 데이터베이스 [ 요약 ]
SQL 문의 기본 구조
select 이름 , 생년 , 몰년 from 인물정보 where 생년 >1700 and 몰년 < 1900 order by 생년
☞ ‘ 인물정보’ 테이블에서 1700 년 이후에 태어나고 1900 년 전에 죽은 사람을 찾아 그들의 ‘이름’ , ‘ 생년’ , ‘ 몰년’을 ‘생년’ 순서대로 보여라
select 표시 열 from 테이블 where 행 제약 조건 order by 기준 열
2. SQL
인문정보 데이터베이스 [ 요약 ]
3. XML 데이터베이스의 기능
3. XML 데이터베이스의 기능
인문정보 데이터베이스 [ 요약 ]
일반적인 데이터베이스는 그것을 구성하는 정보의 조각 (데이터베이스의 행과 열 ) 에 문자나 숫자만을 담을 수 있는 데 반해 , XML 지원 데이터베이스는 XML 언어로 쓰여진 데이터를 담을 수 있는 기능을 지원
일반적인 DBMS 기능 + XML 데이터 타입 + XML 데이터 조작 메쏘드 지원
기사번호 국문기사
10001976
< 항목 ID="10001976">< 항목명 >
< 대표항목명 >< 지명 > 장서각 </ 지명 ></ 대표항목명 >< 한글항목명 > 장서각 </ 한글항목명 >< 한자항목명 > 藏書閣 </ 한자항목명 >
</ 항목명 >< 메타데이터 >
< 이칭별칭 />< 키워드 > 장서각 </ 키워드 >< 분야 > 문화 · 교육 / 교육 </ 대표분야 >< 유형 > 지명 / 시설 </ 대표유형 >< 지역 > 경기도 성남시 분당구 운중동 </ 지역 >< 시대 > 근대 / 일제강점기 | 현대 / 현대 </ 시대 >< 분야 > 문화 · 교육 / 교육 </ 분야 >< 유형 > 지명 / 시설 </ 유형 >< 위치 연관 ="1">< 공간 식별자 =" 성남 : 한국학중앙연구원 장서각 " /></ 위치 >< 집필자 > 문옥표 </ 집필자 >
</ 메타데이터 >< 본문 >
< 소표제 >[ 정의 ]</ 소표제 >< 문단 >< 기관 > 한국학중앙연구원 </ 기관 > 내에 있는 옛 이왕직도서관 (( 李王職圖書館 ).</
문단 >……< 삽도 >< 시청각 ID="P0148"> 장서각 - 전경 정면 </ 시청각 ></ 삽도 >
</ 본문 ></ 항목 >
XML 데이터베이스란 ?3. XML 데이터베이스의 기능
인문정보 데이터베이스 [ 요약 ]
데이터 타입 (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 데이터베이스의 기능
인문정보 데이터베이스 [ 요약 ]
메쏘드란 ? 특정 유형의 개체에 대해 동작하는 서브 프로그램
a piece of code that is exclusively associated either with a
class or with an object
XML 데이터 조작 메쏘드
국문기사 .query(‘/ 항목 / 항목명 / 한글항목명’ )
3. XML 데이터베이스의 기능
컬럼 이름 메쏘드 XPath
인문정보 데이터베이스 [ 요약 ]
MS SQL 의 XML 데이터 조작 메쏘드
XML 데이터 조작 메쏘드
메쏘드 기능 반환값
query() XML 인스턴스에 대해 쿼리 검색된 XML 인스턴스
value() XML 인스턴스에서 값을 검색하여 정해진 형식으로 반환
검색된 XML 인스턴스의 값
exist() NULL 이 아닌 결과를 반환하는지 여부를 확인
TRUE/FALSE
modify() XML 데이터의 업데이트를 수행하도록 DML 문을 지정
반환값 없음
nodes() 여러 개의 XML 인스턴스를 여러 개의 행으로 반환
노드별로 추출된 XML 인스턴스를 담은 행 집합 ( 테이블 )
3. XML 데이터베이스의 기능
인문정보 데이터베이스 [ 요약 ]
4. XML 설계
4. XML DB 설계
인문정보 데이터베이스 [ 요약 ]
XML 기반 관계형 데이터베이스 설계의 3 원칙
1. 단위 노드의 XML 문서는 더 이상 분해하지 않고 , 하나의 XML 컬럼에 적재한다 .
2. 주요 메타데이터 요소는 별도 테이블의 독립 컬럼
데이터로 관리한다 . 3. XML 본문 컬럼과 메타데이터 컬럼의 데이터는 항상
일치되도록 한다 .
4. XML DB 설계
인문정보 데이터베이스 [ 요약 ]
3 원칙 (1): XML 문서의 원형 유지
‘ 단위 노드’로 취급되는 원시 XML 문서는 하나의 ‘ XML 컬럼’에 담기도록 한다 .
기사번호 국문기사
10001976
< 항목 ID=“10001976”> < 항목명 > < 대표항목명 > 장서각 </ 대표항목명 >
…… < 삽도 >< 시청각 ID=“P0148”> 장서각 – 전경 </ 시청각 ></ 삽도 ></ 항목 >
10000312
< 항목 ID=“10000312”> < 항목명 > < 대표항목명 >백헌집 </ 대표항목명 >
…… < 삽도 >< 시청각 ID=“P0149”>백헌집 표지 </ 시청각 ></ 삽도 ></ 항목 >
10002014
< 항목 ID=“10002014”> < 항목명 > < 대표항목명 > 정일당 강씨 사당 </ 대표항목명 >
…… < 삽도 >< 시청각 ID=“P0336”> 정일당 강씨 사당 - 전경 </ 시청각 ></ 삽도 ></ 항목 >
4. XML DB 설계
인문정보 데이터베이스 [ 요약 ]
3 원칙 (2): 주요 메타데이터의 관리
주요 메타데이터 요소는 별도의 정형 데이터로 관리한다 .
기사번호 한글제목
한자제목
분야 유형 지역 시대 위치
10001965
입학도설 入學圖說 문화유산 /기록유산
문헌 / 단행본 경기도 성남시 분당구 운중동
조선 / 조선 전기
성남 :한국학중앙연구원 장서각
기사번호 국문기사
10001965
< 항목 ID=“10001965”> < 항목명 > < 대표항목명 >『입학도설』</ 대표항목명 > < 한글항목명 > 입학도설 </ 한글항목명 > < 한자항목명 >入學圖說</ 한자항목명 > </ 항목명 > < 메타데이터 > < 분야 > 문화유산 / 기록유산</ 분야 > < 유형 > 문헌 / 단행본 </ 유형 > < 지역 > 경기도 성남시 분당구 운중동 </ 지역 > < 시대 > 조선 / 조선 전기 </ 시대 > < 위치 연관 ="2">< 공간 식별자 =" 성남 : 한국학중앙연구원 장서각 " /></ 위치 > </ 메타데이터 >
…… < 삽도 >< 시청각 ID=“P1219”> 입학도설 </ 시청각 ></ 삽도 ></ 항목 >
4. XML DB 설계
인문정보 데이터베이스 [ 요약 ]
3 원칙 (3): 텍스트 (XML) 와 메타데이터의 동기화
XML 본문과 여기에서 추출된 정형 데이터는 항상 일치되도록 한다
XML 본문과 추출된 정형 데이터의 동기화 : ‘ 가상 뷰’ 또는 ‘트리거’ 사용
트리거 (trigger):• 데이터의 변경시 자동적으로 동작하도록 예정된
프로그램 • a SQL procedure that initiates an action when
an event (INSERT, DELETE or UPDATE) occurs.
4. XML DB 설계
인문정보 데이터베이스 [ 요약 ]
5. XML DB 구현
5. 멀티미디어 지식 콘텐츠 적재를 위한 XML DB 구현
인문정보 데이터베이스 [ 요약 ]
데이터베이스 생성
Microsoft SQL Server Management Studio 데이터베이스 > 새 데이터베이스
5. XML DB 구현
인문정보 데이터베이스 [ 요약 ]
스키마 구현 (1)
원시 XML 문서의 저장 공간 : [텍스트 ]
열 이름 데이터 타입 데이터 소스 특성
기사번호 nvarchar(20)‘/ 항 목 ’ 요 소 의 ‘ ID’ 속성
Not null, pri-mary 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 구현
인문정보 데이터베이스 [ 요약 ]
스키마 구현 (2)
자료번호 자동 추출을 위한 트리거 설정 : [텍스트 ].[ 기사번호 ]
CREATE TRIGGER 번호처리 ON 텍스트 INSTEAD OF INSERTAS
INSERT INTO 텍스트 ( 기사번호 , 국문기사 )SELECT
t. 국문기사 .value('(/ 항목 /@ID)[1]', 'nvarchar(20)') AS 기사번호 ,
t. 국문기사 AS 국문기사FROM inserted t
5. XML DB 구현
인문정보 데이터베이스 [ 요약 ]
스키마 구현 (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 구현
인문정보 데이터베이스 [ 요약 ]
스키마 구현 (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 구현
인문정보 데이터베이스 [ 요약 ]
소스 데이터 입력
XML 문서를 [ 국문기사 ] 컬럼에 적재
INSERT INTO 텍스트 ( 국문기사 ) VALUES(CONVERT(xml, N‘< 항목 ID="10001642">
< 항목명 >< 대표항목명 >< 인명 > 이경석</ 인명 > 선생 묘</ 대표항목명 >< 한글항목명 > 이경석 선생 묘</ 한글항목명 >< 한자항목명 > 李景奭 先生 墓 </ 한자항목명 >
</ 항목명 >< 메타데이터 >
< 이칭별칭 ></ 이칭별칭 >< 키워드 >묘소 | 무덤 | 신도비</ 키워드 >< 분야 > 역사 / 전통시대 | 문화유산 / 유형유산</ 분야 >< 유형 > 유적 / 능묘</ 유형 >< 지역 > 경기도 성남시 분당구 석운동 </ 지역 >< 시대 > 조선 / 조선 후기 </ 시대 >
……
</ 항목 >’, 1))
5. XML DB 구현
인문정보 데이터베이스 [ 요약 ]
소스 데이터 입력
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 구현
인문정보 데이터베이스 [ 요약 ]
입력 데이터 조회
메터데이터 및 전자문서 연계 조회
기사번호 한글제목 한자제목
…
…
…
…
분야 유형 지역 시대 위치 전자문서
10001642
이경석 선생 묘
李景奭 先生 墓
문화유산/유형유산
유적 / 능묘
경기도 성남시 분당구 석운동
조선 /조선 후기
성남 : 이경석 묘 및 신도비
< 항목 ID=“10001642”> < 항목명 > …… </항목명 > ……</ 항목 >
10001657
이곤 사당 李坤 祠堂 종교 /유교 유적 / 건물
경기도 성남시 분당구 판교동
현대 /현대
성남 :이곤사당
< 항목 ID=“10001657”> < 항목명 > …… </항목명 > ……</ 항목 >
10001976
장서각 藏書閣 문화 ·교육 /교육
지명 / 시설 성남시 분당구 운중동
근대 /일제강점기 | 현대 / 현대
성남 :한국학중앙연구원 장서각
< 항목 ID=“10001976”> < 항목명 > …… </항목명 > ……</ 항목 >
SELECT 안내 .*, 텍스트 . 국문기사 FROM 안내 , 텍스트 WHERE 안내 . 기사번호 =텍스트 . 기사번호
XML 전자문서의 갱신에 따라 메타데이터 뷰 자동 갱신
5. XML DB 구현
인문정보 데이터베이스 [ 요약 ]
적재 데이터 수정 / 삭제
XML 데이터의 갱신
update 텍스트 set 국문기사 =N‘………’ where 기사번호 =‘………’
Delete 텍스트 where 기사번호 =‘………’
데이터 삭제
5. XML DB 구현