22장, 고급 SQL 기능의 이해
Introduction
1장부터 22장까지 설명하지 못한 고급 기능에 대해서 설명하는 장이다.
Content
1. 무엇을 제약 조건 이라고 하는가?
DB를 사용하다 보면, 정확한 정보만 들어가야 할 때가 있다. 임시 테이블에 값을 넣어 보아 잘 되나 안되나 체크 할 수 있으나, 너무 비효율적이기 때문에, 애초에 "이 값 아니면 안받을 꺼다." 라고 으름장(위협하는 것)을 놓는 것이다.
이 제약조건을 넣게 되면 다음과 같은 이점이 있다.
- 클라이언트가 제약 조건을 계산하지 않아도 된다.
- 무결성이 보장 된다.
실제로 가장 흔히 쓰는 제약 조건은 NOT NULL 일것이다.
2. 무엇을 기본 키 라고 하는가?
제약 조건 중 한가지로, 테이블에 있는 특정 열이 가진 값이 고유하게 유지시키는 제약 조건이다. 기본키는 다른 테이블과 엮기게 될 때, 자주 사용하며, 단일 레코드 선택을 위해서도 사용 된다.
몇가지 주의 사항이 있는데, 다음과 같다.
- NULL 일 수 없다.
- 기본키는 UPDATE 로 변경 되지 않는다.
- 기본키 값은 재사용 되지 않는다.
이 정도면 된다.
참조 링크
3. 무엇을 외래 키 라고 하는가?
기본 키 값으로 이루어진 열을 말한다. 기본키가 다른 레코드에서 외래 키로 쓰인다고 생각하면 된다. 외래키를 설정하면, 그 키가 가리키고 있는 테이블의 레코드가 실제로 있을 때만 작업할 수 있는 효과를 얻을 수 있다.
참조 링크
4. 무엇을 고유 제약 조건 이라고 하는가?
고유 제약 조건은 중복값을 갖지 않는 제약 조건이다. 기본 키와 비슷한 특징이지만, 다음과 같은 다른 점이 있다.
- 테이블 내 여러 열에 이 제약 조건을 추가 할 수 있다.
- NULL 값을 갖을 수 있다.
- UPDATE 로 수정이 가능하다.
- 고유값이라면 언제든지 재사용 가능하다.
- 외래 키로 설정할 수 없다.
참조 링크
5. 무엇을 CHECK 제약 조건 이라고 하는가?
열에 있는 데이터가 지정한 특정한 조건에 맞는지 검사하는 제약 조건이다. 이 제약 조건은 보통 최소/대값, 범위 지정, 특정한 값만 허용 등을 위해서 사용 된다. CHECK 제약 조건을 거는 방법은 참조 링크로 대체 한다.
참조 링크
- http://www.iwiz.pe.kr/bbs/view/dbms/article_14.html
- http://www.postgresplus.co.kr/man/ddl-constraints.html
6. 무엇을 인덱스라고 하며, 왜 사용 하는가?
인덱스는 쉽게 색인/차례 라고 보면 된다. 책을 보다가 특정 정보를 찾기 위해서 색인이나 차례를 봐서, 관련 페이지를 찾고, 관련 페이지로 한번에 쉽게 넘어 갈수 있듯이, 인덱스는 테이블의 색인/차례 이다.
그러므로 인덱스를 사용 하면, 원하는 것을 더 빠르게 찾을 수 있다. 그렇다고 이점만 있는것이 아니다. 인덱스인 열이 있을 경우, 그 열에 쓰기작업은 읽기 작업보다 많이 느려진다.
참조 링크
- http://www.devpia.com/DevStudy/Lecture/OffLineDetail.aspx?nSemiID=1429&lectype=evt
- http://silentvoyage.tistory.com/116
위의 링크는 꼭 보면 좋겠다. 이것으로 공부할 때 옵티마이저 같은 것들도 함께 봐야 한다는 것을 알았다.
7. 무엇을 트리거 라고 하는가?
한 테이블이 변화 될 때, 호출되는 저장 프로시저를 트리거 라고 말한다. 어떻게 사용 하는지는 참조 링크를 보길 바란다. 주의 해야 할 점음 제약조건인 기능은 트리거로 만들면 성능 저하가 생긴다.
참조 링크
- http://www.sqlworld.pe.kr/mboard/mboard/mboard.asp?board_id=sql01&group_name=board&idx_num=13
- http://ask.nate.com/qna/view.html?n=9111616
8. 무엇을 데이터베이스 보안 이라고 하는가?
대문은 자물쇠로 걸어 둔다.. 자물쇠는 열쇠로 풀수 있다. 자물쇠가 풀리면 대문이 열린다. 대문을 열면 들어 갈 수 있다. 여기서 자물쇠를 걸어 두는 것은 열쇠를 갖은 자만이 들어 오도록 제한을 두는 것이다. 이 제한을 보안이라고 한다.
데이터 베이스 보안은 다음등을 말한다.
- 데이터 베이스 접근, 생성, 삭제 제한
- 테이블 접근 제한
- 테이블 생성, 변경, 삭제 제한
- 저장 프로시저 사용 제한
- 다른 사용자 제한을 설정하는 제한
참조 링크
Digression
이것으로 이 책을 다 훎터 보았다. 이제 조금 더 깊게 SQL 에 들어간 책을 봐야 할 차례가 왔다.