CUBRID 2008 R4.1 기초강좌
데이터 정의 및 타입 - 집합형 0 0 37,689

by 큐브리드 SET LIST SEQUENCE MULTISET [2009.03.23]


데이터 정의 및 타입 - 집합형
1. 집합형 데이터 타입의 정의와 특성
1) 정의
여러 개의 데이터 값을 하나의 속성에 저장할 수 있도록 하는 것은 관계형 데이터베이스의 확장 기능이다. 컬렉션의 각 요소는 서로 다른 데이터 타입이 될 수도 있고, 심지어 서로 다른 클래스(단, 가상 클래스 제외) 도메인으로 가질 수도 있다.

CUBRID는 컬렉션 종류로서 다음과 같은 데이터 타입을 제공한다.
SET domain
SET (domain_list)
LIST or SEQUENCE domain
LIST or SEQUENCE (domain_list)
MULTISET domain
MULTISET (domain_list)
위의 구문에서 컬렉션 타입을 나타내는 키워드 뒤에 OF를 붙일 수도 있다. 예를 들면, SET domain 대신 SET OF domain으로 쓸 수도 있다. domain이 하나일 때에는 괄호가 필요하지 않으나, 여러 개(즉, domain_list)일 때에는 반드시 괄호로 묶어야 한다.

집합(SET), 다중집합(MULTISET), 그리고 리스트(LIST), 혹은 순차집합(SEQUENCE)의 값은 중괄호('{', '}') 안에 각 값들을 쉼표(,)로 분리하여 나열한다(예: {value_1, value_2, value_n}). 특별하게 컬렉션의 종류가 지정되지 않고, {value_list}가 주어지면 이는 다중집합으로 간주된다. 경우에 따라서는 타입 규칙이 적용될 수도 있다. 예를 들어, 순차집합의 속성에 상수 요소를 추가해도 그 속성은 그대로 순차집합 타입이다.

domain_list는 시스템 기본 데이터 타입, 사용자 정의 클래스 등의 리스트가 될 수 있다. 예를 들어, SET (INTEGER, resort)는 정수 혹은 사용자가 정의한 클래스 resort의 행 값의 집합이 도메인으로 지정되는 경우이다. 만약, SET ( )와 같이 domain_list가 없으면 집합의 요소로서 모든 데이터 타입, 클래스가 허용된다는 뜻이다. 도메인 리스트가 두 개 이상인 경우 요소를 조회할 수 있는 환경은 csql 유틸리티와 C-API를 사용하는 것이다. CUBRID 매니저 및 CUBRID 브로커를 통한 인터페이스(JDBC, ODBC, OLEDB, PHP, CCI)에서는 이러한 컬렉션의 요소를 조회할 수 없다.
2) 특성
변환(Coercions)
SET는 자동적으로 MULTISET로 변환될 수 있다. 명시적인 변환은 CAST 연산자를 이용해야 하는데, 다음과 같은 제약점이 따른다.
- LIST 또는 SEQUENCE는 LIST, SEQUENCE, SET 또는 MULTISET로 CAST될 수 있다.
- SET는 SET 또는 MULTISET로 CAST될 수 있다.
- MULTISET는 MULTISET 또는 SET로 CAST될 수 있다.
2. SET
SET는 각 요소가 서로 다른 값을 갖는 집합이다. SET의 요소는 여러 종류의 데이터 타입을 가질 수 있고, 다른 클래스의 인스턴스를 가질 수도 있다.
1) 예제
정 의 컬렉션 값의 예
SET(VARCHAR(20), INTEGER) {'golf', 'handicap', 10}
SET CHAR(5) {'aaa', 'bbbb', 'ccccc'}
아래는 SET에서 중복을 없애는 예를 보이고 있다.
정 의 입력 데이터 저장 데이터
SET VARCHAR(10) {'golf', 'scuba', 'golf'} {'golf', 'scuba'}
2) 주의 사항
만약, 중복된 값이 포함되어 있으면 자동으로 중복을 제거한다.
3. MULTISET
MULTISET는 중복이 허용되는 집합이다. MULTISET의 요소는 여러 종류의 데이터 타입을 가질 수 있고, 다른 클래스의 인스턴스를 가질 수도 있다.
1) 예제
정 의 컬렉션 값의 예
MULTISET INTEGER {10, 20, 10, 80}
MULTISET CHAR(5) {'aaa', 'bbbb', 'ccccc'}
4. LIST 또는 SEQUENCE
LIST(=SEQUENCE)는 요소의 입력된 순서가 유지되는 컬렉션 타입으로 중복이 허용된다. LIST의 요소는 여러 종류의 데이터 타입을 가질 수 있고, 다른 클래스의 인스턴스를 가질 수도 있다.
1) 예제
정 의 컬렉션 값의 예
SEQUENCE INTEGER {20, 40, 60, 80}
LIST CHAR(5) {'aaa', 'bbbb', 'ccccc'}

- 강좌 URL : http://www.gurubee.net/lecture/2026

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입