이 내용은 2011년 6월 현재 SQL2011(코드명 Denali) Beta를 기준으로 작성 되었으며 SQL2011(코드명 Denali)
공식버전(RTM) 발표까지 꾸준히 업데이트 예정입니다.
아울러, 현재 Beta버전이지만 강좌를 따라해 보시는데 아무 문제 없으실거에요.
도움 되시길
바랍니다.
==================================================================================================
안녕하세요. 이스트럭(강동운) 입니다.
이번 강좌에는.. 정보처리 산업기사에 아주 많이 출몰하는.. 개체 무결성에 대해 알아볼까 합니다.
물론 그 중심에는.. Primary Key(기본키) 그리고 유니크 제약조건이 있습니다.
개체 무결성의 정의: 기본키를 구성하는 속성은 널(NULL)값이나 중복값을 가질수 없음
[출처] 개체 무결성, 참조 무결성|작성자 Ian
Primary Key의 조건은 아래와 같습니다.
1. 유니크 해야함.
2. NULL을 허용할 수 없음.
개체 무결성과도 같죠?? ^^;;
그렇다면.. Primary Key의 대상은 어떤 녀석이 될까요??
회원 테이블을 살펴보면.. 아래 두가지 경우가 대상이 될 수 있습니다.
1. 순차적으로 증가하는 회원번호(INT 4 bytes)
2. 회원 아이디(VARCHAR 10~15 bytes)
3. 주민등록번호(CHAR 형 13 bytes)
하지만.. 순차적으로 증가하는 회원번호의 사이즈가 작기 때문에.. Primary Key에 적당합니다.
또한 주민 등록번호 혹은 아이디는.. 약관에 따라 탈퇴를 하는 경우에는 지워질 수 있기 때문에.. 대상에서 살짝 밀리게 됩니다.
이 처럼 Primary Key외에 아이디 혹은 주민등록번호 처럼 대체가 될 수 있는 키를.. 대체키라고 합니다.
물론 대체키로도 행을 구분할 수 있겠죠~!
영어로는 Alternate Key라고 합니다.
그럼 한번 SSMS를 통해서 Primary Key 를 생성해보도록 하겠습니다.
SSMS 접속 => Database => Test Databse => Member Tables 우클릭 => Desgin
디자인을 클릭하면 아래와 같은 화면이 나옵니다.
여기서 전에 만들었던 MemberIDX에 Primary Key를 걸어보도록 하겠습니다.
MemberIDX 에 마우스 우클릭 => Set Primary Key => 그리고 저장!
(혹시 위 설정에서 저장이 안되시는 분들은.. Tools => Option => Designers => Table and Database Designers => Prevent saving changes that require table re-creation 을 체크하시기 바랍니다.)
이 옵션은.. Design 에서 테이블을 수정시에 테이블이 다시 만들어질 수 있습니다. 이 부분을 사전에 방지하고자 기본 값으로
체크가 되어있는데.. 체크를 뺴주시면 될 것 같습니다 ^^
주의: 데이터가 아주 많은 경우 테이블이 다시 만들어지면............ 끔찍하겠죠!
저희가 INSERT문을 배운건 아니지만.... 한번 NULL값이 들어가는지.. 중복된 값이 들어가는지 테스트를 해보도록 하겠습니다.
우선 10번으로 강감찬을 넣어보도록 하겠습니다.
INSERT INTO Member(MemberIDX, MemberID, MemberName, CreateDate)
VALUES(10,'kang','강감찬', '2011-05-05')
GO
select * from member
GO
이제 10번을 다시 한번 넣어보도록 하겠습니다.
에러죠! 아쉽게...... 이 에러는 한국어가 지원이 안되네요 ㅜ.ㅜ..
중복된 키 값을 넣을 수 없다는 에러 입니다.
이제 NULL 값을 넣어보도록 하겠습니다.
NULL 값 역시.. 허용하지 않았기 때문에.. 데이터가 입력되지 않습니다.
그럼 중복되지 않지만.. NULL을 넣을 순 없을까?? 바로 UNIQUE 제약조건이 있습니다.
MemberID에 유니크 제약조건을 걸어보겠습니다.
ALTER TABLE Member
ADD CONSTRAINT UNIQUE_MEmberID UNIQUE(MemberID)
GO
--// ALTER TABLE 테이블명
--// ADD CONSTRAINT 제약조건명칭 UNIQUE(컬럼명)
역시 NULL은 한개 입력되지만.. 중복이 허락되진 않네요~!
이 처럼 Primary Key 와 Unique 의 차이점은 바로 NULL이 한개 들어갈 수 없냐의 문제 였습니다.
제가 듣기로는 초보 DBA 면접 문제로도 가끔 나온다고 하니.. 모르시는 분들은 챙겨두면 좋을 것 같습니다. ^^
강좌를 마치도록 하겠습니다.
감사합니다. ^^
작성일: 2011.05.21
[출처] SQLER.COM http://www.sqler.com/382152
SQL2011(코드명 Denali) 시리즈 강좌 리스트
[SQL2011강좌] 1. 코드명 Denali 설치
방법
[SQL2011강좌] 2. SSMS 접속 및
간단한 쿼리 실행
[SQL2011강좌] 3. SQL
Server 의 MDF, LDF 그리고 데이터베이스 생성하기
[SQL2011강좌] 4. DDL 1탄: 테이블 생성
[SQL2011강좌] 5. DDL 2탄: 쿼리를 이용한 테이블 컬럼 추가 및 삭제
[SQL2011강좌] 6. Primary key와 Unique
제약조건
[SQL2011강좌] 7. DML 1탄
INSERT
[SQL2011강좌] 8. DML 1탄
INSERT(identity 속성)
[SQL2011강좌] 9. Sequence
[SQL2011강좌] 10. pubs, northwind Database 예제 설치
[SQL2011강좌] 11. SELECT(단일 테이블)
[SQL2011강좌] 12. SELECT(JOIN)
[SQL2011강좌] 13. UPDATE, DELETE
절
[SQL2011강좌] 14. DISTINCT,
UNION, UNION ALL 키워드
[SQL2011강좌] 15. ORDER BY, GROUP BY, HAVING
[SQL2011강좌] 16. SubQuery(서브쿼리)
[SQL2011강좌] 17. 뷰에 대한 이해 및 생성, 수정,
삭제
[SQL2011강좌] 18. 저장 프로시저에 대한
이해, 생성, 수정, 삭제
[SQL2011강좌] 19.
인덱스에 대한 이해
[SQL2011강좌] 20.
클러스터드 인덱스와 넌 클러스터드 인덱스
[SQL2011강좌] 21. 트랜잭션에 대한이해
[SQL2011강좌] 22. 트랜잭션의 격리수준 4가지
[SQL2011강좌] 23. 잠금에 대한 이해
[SQL2011강좌] 24. 백업과 복구에 대한 이해(풀백업, 차등백업, 트랜잭션 로그 백업)
[SQL2011강좌] 25. 백업과 복구 전략
[SQL2011강좌] 26. 커서란?
SQL2011(코드명 Denali) 시리즈
동영상 강좌 리스트
[SQL2011 동영상 강좌] 1. 코드명 Denali 설치 방법
[SQL2011 동영상 강좌] 2.
SSMS 접속 및 간단한 쿼리 실행
[SQL2011 동영상 강좌] 3. SQL Server 의 MDF, LDF 그리고 데이터베이스
생성하기
[SQL2011 동영상 강좌] 4. DDL 1탄: 테이블 생성
[SQL2011 동영상 강좌] 5.
DDL 2탄: 쿼리를 이용한 테이블 컬럼 추가 및 삭제
[SQL2011 동영상 강좌] 6. Primary key와 Unique
제약조건
[SQL2011 동영상 강좌] 7. DML 1탄 INSERT
[SQL2011 동영상 강좌] 8.
DML 1탄 INSERT(identity 속성)
[SQL2011 동영상 강좌] 9. Sequence
[SQL2011 동영상 강좌] 10.
pubs, northwind Database 예제 설치
[SQL2011 동영상 강좌] 11. SELECT(단일 테이블)
[SQL2011 동영상 강좌] 12.
SELECT(JOIN)
[SQL2011 동영상 강좌] 13. UPDATE, DELETE 절
[SQL2011 동영상 강좌] 14.
DISTINCT, UNION, UNION ALL 키워드
[SQL2011 동영상 강좌] 15. ORDER BY, GROUP BY,
HAVING
[SQL2011 동영상 강좌] 16. SubQuery(서브쿼리)
[SQL2011 동영상 강좌] 17.
뷰에 대한 이해 및 생성, 수정, 삭제
[SQL2011 동영상 강좌] 18. 저장 프로시저에 대한 이해, 생성, 수정, 삭제
[SQL2011 동영상 강좌] 19.
인덱스에 대한 이해
[SQL2011 동영상 강좌] 20. 클러스터드 인덱스와 넌 클러스터드 인덱스
[SQL2011 동영상 강좌] 21.
트랜잭션에 대한이해
[SQL2011 동영상 강좌] 22. 트랜잭션의 격리수준 4가지
[SQL2011 동영상 강좌] 23.
잠금에 대한 이해
[SQL2011 동영상 강좌] 24. 백업과 복구에 대한 이해(풀백업, 차등백업, 트랜잭션 로그
백업)
[SQL2011
동영상 강좌] 25. 백업과 복구 전략
[SQL2011 동영상 강좌] 26. 커서란?
'프로그램&DB > MS-SQL' 카테고리의 다른 글
[MS-SQL2011강좌] 8. DML 1탄 INSERT(identity 속성) by 강동운님 (0) | 2011.08.23 |
---|---|
[MS-SQL2011강좌] 7. DML 1탄 INSERT by 강동운님 (0) | 2011.08.23 |
[MS-SQL2011강좌] 5. DDL 2탄: 쿼리를 이용한 테이블 컬럼 추가 및 삭제 by 강동운님 (0) | 2011.08.23 |
[MS-SQL2011강좌] 4. DDL 1탄: 테이블 생성 by 강동운님 (0) | 2011.08.23 |
[MS-SQL2011강좌] 3. SQL Server 의 MDF, LDF 그리고 데이터베이스 생성하기 by 강동운님 (0) | 2011.08.23 |