database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Tutorials 137 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 137
DB 테이블 디자인에 도전하기 (2)
작성자
정재익(advance)
작성일
2001-12-07 13:21
조회수
6,375

각 테이블마다 시스템이 생성하는 순차 값을 갖는 하나의 식별자 열을 만들어 테이블의 각 행을 구분할 수 있다.

테이블에 행이 삽입될 때 식별자 열을 사용하여 고유한 고객 영수증 번호를 자동으로 생성할 수 있다. 식별자 열에는 대개 ID가 정의된 테이블의 고유한 값이 들어가게 된다. 이것은 식별자 열을 갖는 한 테이블에 다른 테이블에서 사용하는 ID 값이 들어갈 수 없다는 뜻이다. 그러나 대개는 식별자 값이 한 테이블의 컨텍스트 내에서만 사용되기 때문에 문제가 되지 않는다. 식별자 열은 다른 테이블의 다른 식별자 열과 관련이 없다.

 

IDENTITY 속성을 사용하여 식별자 열을 정의하려면

    . 테이블의 한 열에서만 IDENTITY 속성을 정의할 수 있다. 이 열은 [b]decimal, 
      int, numeric, smallint, bigint[/b] 또는 [b]tinyint[/b] 데이터 형식으로 
      정의해야 한다.
    . 절대로 문자열 데이터 형식으로 지정할 수 없다. 
    . 시드와 증가분을 정의할 수 있다. 기본값은 모두 1이다.
    . 식별자 열에 Null 값을 허용하면 안되고 DEFAULT 정의나 개체를 포함할 
      수 없다.
    . 삭제된 ID 값은 다시 사용되지 않으므로 자주 삭제되는 테이블에 식별자 
      열이 있으면 ID 값 사이에 간격이 생길 수 있다. 

테이블에 자동 증가값을 부여해 식별자 열을 만들려면

    . 자동 증가값 식별자 열을 추가하고 싶은 테이블을 선택한다. 
    . 오른쪽 버튼을 누르고 테이블 디자인을 클릭한다. 
    . 식별자 열을 추가하고 원하는 데이터 속성을 선택한다. 기본으로 int 데이터 
       형을 선택한다. 
    . 하단의 열 속성탭에서 ID란을 클릭하여 Identity 속성을 "예"로 설정한다. 
    . ID 증가값을 원하는 값으로 설정한다. 기본으로 1 증가값으로 설정되어 있다. 

[그림] 테이블에 자동증가 식별자 열을 만든 예

 

 

열에서 PRIMARY KEY 제약 조건 설정하기

 

테이블을 계획할 때는 각 열에서 유효한 값을 확인하고 열에 있는 데이터의 무결성을 강제 적용하는 방법을 결정해야 한다. SQL Server 은 다음과 같은 여러 제약 조건을 제공하여 열에 대한 데이터의 무결성을 지원 하고 있다.

 

    . PRIMARY KEY 제약 조건
    . FOREIGN KEY 제약 조건
    . UNIQUE 제약 조건
    . CHECK 제약 조건
    . DEFAULT 정의
    . Null 허용 여부 

 

PRIMARY KEY 제약 조건은 다음과 같은 기능을 수행한다.

 

테이블은 대개 각 행을 고유하게 식별하는 값을 가진 열로 구성된다. 이 열은 테이블의 기본 키라고 하며 테이블의 무결성을 강제 적용한다. 테이블을 만들거나 변경할 때 PRIMARY KEY 제약 조건을 정의하여 기본 키를 만들 수 있다.

 

테이블은 하나의 PRIMARY KEY 제약 조건만 가지며 PRIMARY KEY 제약 조건의 열은 null 값을 허용하지 않는다. PRIMARY KEY 제약 조건이 데이터가 고유하도록 하기 때문에 종종 식별자 열로 정의된다.

 

테이블에 PRIMARY KEY 제약 조건을 지정하면 SQL Server은 기본 키 열에 고유 인덱스를 만들어 데이터가 고유하도록 한다. 이 인덱스를 사용하면 쿼리에서 기본 키가 사용될 때 빠르게 데이터에 액세스할 수 있도록 도와준다.

 

PRIMARY KEY가 두 개 이상의 열에 정의될 때 한 열에 중복된 값이 있을 수 있지만 PRIMARY KEY 제약 조건 정의에 있는 모든 열을 조합한 각 값은 고유해야 한다.

 

다음 표와 같은 테이블이 존재한다면 여기에 USER_ID 열에 PRIMARY KEY 제약 조건을 지정하면 이곳에는 중복된 값이 들어 올 수 없다. 다음과 같은 값이 현재 입력된 상황에서 똑같은 "BAEWOORI"라는 값이 입력되지 못하고 에러를 발생하게 되어 무결성을 적용받게 된다.

 

USER_ID                                     USER_NAME
BAEWOORI                                 배우리
WOORI                                       포근이
KOREAINTERNET                       코리아인터넷

 

하나의 PRIMARY KEY 제약 조건은 다음이 가능하다.

    . 테이블을 만들 때 테이블 정의의 일부로 만들어진다.
    . 다른 PRIMARY KEY 제약 조건이 없을 때 기존 테이블에 추가된다. 테이블
      에서는 하나의 PRIMARY KEY 제약 조건만 허용한다.
    . 수정되거나 삭제된다. 예를 들어, 테이블의 PRIMARY KEY 제약 조건이 
      다른 열을 참조하도록 하거나 PRIMARY KEY 제약 조건의 열 순서, 인덱스 
      이름, 클러스터된 옵션 또는 채우기 비율을 변경할 수 있습니다. PRIMARY 
      KEY 제약 조건이 정의된 열의 길이는 변경할 수 없다. 
    . Transact-SQL 또는 SQL-DMO를 사용하여 PRIMARY KEY 제약 조건을 
      수정하려면 먼저 기존 PRIMARY KEY 제약 조건을 삭제하고 새로운 정의를 
      사용하여 다시 만들어야 한다. 

 

테이블의 기존 열에 PRIMARY KEY 제약 조건이 추가되려면 다음과 같은 조건이 만족되어야 한다.

    . 기존 데이터에 Null 값이 존재하지 않아야 한다. 
    . 데이터 속성이 decimal, int, numeric, smallint, bigint 형태인지 확인한다. 
    . null 허용이 체크 되지 않아야 한다. 
    . 중복되는 값이 들어 있지 않아야 한다. 
    . 중복된 값이나 Null 값을 가진 열에 PRIMARY KEY 제약 조건을 추가하면 
      SQL Server가 오류를 반환하고 제약 조건을 추가하지 않는다. 위 규칙에 
      어긋나는 PRIMARY KEY 제약 조건을 추가할 수 없다. 
    . SQL Server는 자동으로 고유 인덱스를 만들어 PRIMARY KEY 제약 조건의 
      고유성 요구 사항을 강제 적용한다. 테이블에 클러스터된 인덱스가 없거나 
      클러스터되지 않은 인덱스를 지정하지 않으면 클러스터된 인덱스가 만들어져 
      PRIMARY KEY 제약 조건을 강제 적용한다. 
    . PRIMARY KEY 제약 조건이 다른 테이블의 FOREIGN KEY 제약 조건에 
      의해 참조되면 삭제할 수 없다. 이 때는 FOREIGN KEY 제약 조건을 먼저 
      삭제해야 한다. FOREIGN KEY에 대한 정보는 다음 기사를 기대하자. 

 

기본키를 정의하려면 다음과 같은 순서로 진행한다.

    . 데이터베이스 테이블 디자인에서 기본 키로 정의하려는 데이터베이스 열에 
      대한 행 선택자를 클릭한다. 여러 열을 선택하려면 Ctrl 키를 누른 채로 다른 
      열에 대한 행 선택자를 클릭한다.
    . 열의 행 선택자를 마우스 오른쪽 단추로 클릭하고 기본 키 설정을 선택한다. 
      기본 키 인덱스는 테이블 이름 앞에 "PK_"로 시작하는 이름이 부여되며 속성 
      페이지의 인덱스/키 탭에서 자동으로 만들어진다. 
    . 기본 키를 다시 정의하려면 새로운 기본 키를 만들기 전에 먼저 기존의 기본 
      키에 대한 모든 관계를 삭제해야 한다. 이 과정의 일부로서 기존의 관계들이 
      자동으로 삭제될 것이라는 경고 메시지가 표시된다. 
    . 기본 키 열은 행 선택기의 기본 키 기호로 식별됩니다. 키의 모습은 열쇠의 
      모습을 하고 테이블 열 왼쪽에 나타난다. 
    . 기본 키가 둘 이상의 열로 구성된 경우 한 열에는 중복된 값을 사용할 수 
      있지만 기본 키의 모든 열에 있는 값들의 각 조합은 고유해야 한다. 

[그림] 열에서 기본키 설정을 통해 PRIMARY KEY 제약 조건 설정하기 예

열이름에서 우측 마우스버튼을 누르고 '기본키 설정 (Y)' 라는 메뉴를 선택한다.
	
[Top]
No.
제목
작성자
작성일
조회
140DB 테이블 디자인에 도전하기 (5)
정재익
2001-12-07
5673
139DB 테이블 디자인에 도전하기 (4)
정재익
2001-12-07
5165
138DB 테이블 디자인에 도전하기 (3)
정재익
2001-12-07
9085
137DB 테이블 디자인에 도전하기 (2)
정재익
2001-12-07
6375
136DB 테이블 디자인에 도전하기 (1)
정재익
2001-12-07
11248
132연관 규칙과 의사결정트리를 이용한 패턴 탐사
정재익
2001-12-06
5647
108SQL 함수의 모든 것 - aggregate function
정재익
2001-12-03
11389
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.053초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다