본문 바로가기
Work/개발 노트

[DataBase] OID란... By 용호

by ★용호★ 2011. 3. 23.

2011년 3월 23일 수요일

 DB 테이블 생성하는 부분에서 CREATE TABLE ..... ( ... ) WITH (OIDS = FALSE)  와 같은 구문을 발견했다. 여기서 OIDS가 뭔지 몰라서 검색을 해보았는데 OIDS는 기본키를 설정 하지 않을때 pgSQL에서 자동적으로 고유번호를 붙여주는 컬럼이라고 한다.  여기서 OIDS를 FALSE로 한다는 것은 이 컬럼을 사용하지 않는다는 의미인 것 같다.
 다음의 내용은 인터넷에서 참조한 내용이다.

 기본 키 Primary Key

테이블을 디자인 할 때, 그 테이블에 저장되는 자료를 어떻게 접근 할 것인지를 항상 염두어야 합니다. 이 자료를 접근 하는 가장 보편적인 방법은 각각의 로우에 고유한 주소를 지정하는 지정하는 것입니다. 이 고유한 주소를 사용하기 위해서, 기본 키 Primary Key를 만들어 둡니다. 기본 키의 대상으로 꼭 하나의 칼럼을 사용해야할 필요는 없습니다. 각 로우의 고유한 변별성을 갖는 한 개 이상의 칼럼들로 기본 키를 만들 수도 있습니다. 어떤 테이블의 칼럼이 여러개(대략 3개 이상)가 있을 경우, 기본키를 지정하는 좋은 방법 가운데 하나가, 적당한 자료형의 칼럼을 하나 더 만들고, 그것을 기본키로 지정하는 방법입니다.

물론, 아주 드물게, 기본 키를 필요로 하지 않는 테이블이 있을 수 있습니다. 하지만, 보다 튼튼한 자료구조를 원한다면, 기본 키를 지정하는 것이 낫습니다. 이런 이유에 구루 힌트는 기본 키가 없는 테이블을 접근 하려고 할 때, 이 안내 페이지를 보여줍니다.

PostgreSQL 시스템 테이블들을 살펴보면, 가끔 기본 키가 없는 테이블들을 발견 할 수도 있습니다. 이때는 OID라는 시스템 고유 식별번호를 사용합니다. 즉, 이런 테이블은 내부적으로 OID 칼럼이 따로 있습니다. OID 칼럼을 사용하는 데는 장단점이 있지만, 시스템 테이블에서 사용하는 이유는 단지, 역사적인 이유 때문입니다. PostgreSQL 초기 시스템 테이블 설계 당시 OID를 사용하게 되었고, 그것의 호환성을 고려하면서, 지금까지 사용되고 있습니다. 즉, OID 칼럼으로 기본 키를 대신 하겠다는 생각이 가장 바람직한 방법은 아니라는 것을 알려드립니다. 아마도 언젠가는 이 OID로 대신 되었던 것을 기본 키로 바꾸는 날이 오겠죠.

시스템 테이블을 살펴 볼 경우에, 기본 키를 사용하는 테이블 보다 빠르게 움직이는 것을 느낄 수는 있겠지만, 보다 깔끔한 자료구조를 설계하려면, 반드시 기본 키를 사용하십시오. 이것을 강력하게 권해드립니다!


댓글