작성
·
545
0
안녕하세요, 강의 완강하고 복습하고 있는 중에 궁금한 점이 있어 질문 남깁니다!
ga_sess 테이블에 sess_id가 pk라고 강사님에 설명을 듣고 알았습니다.
모든 테이블을 강사님 설명을 듣고 pk 가 무엇인지 알게 되었는데,
제가 새로운 테이블을 봤을 때 어떤 컬럼이 pk인지 볼 수 있는 방법이 궁금합니다!
벤다이어그램만 보고 pk가 다중컬럼인지 단일컬럼인지 이해할 수 없어 질문남깁니다!
답변 1
0
안녕하십니까,
특정 테이블의 어떤 컬럼이 PK 인지는 DBMS 내부에 문의를 던져야 합니다.
만약 dbeaver를 사용하고 계시다면
Databases->postgres->Schemas->nw->Tables에서 원하시는 테이블을 선택하신 뒤에(가령 customers) 여기에 Constraint 나 indexes를 선택하시면 PK가 보이게 됩니다.
만약 postgresql의 psql을 사용하신다면 nw schema로 접속 하여 \d customers 를 수행하시면 테이블 속성 및 pk 정보가 나타나게 됩니다.
근데 ga 스키마의 ga_sess 테이블은 pk index가 없습니다. 그래서 위의 방법으로 하면 PK가 안보일 겁니다.
제가 강의에서 PK를 말씀 드린건 논리적인 의미로 테이블의 주인이 되는 Unique한 키값을 의미한 것입니다.
가령 Customer테이블이라면 customer_id, orders 테이블이라면 order_id 컬럼들이 pk가 될 수 있을 것입니다. PK가 어떤 컬럼이 되는지는 DB 모델 설계시 다양한 업무적인 상황을 고려해서 설정합니다. 보통은 모델링 툴을 통해서 해당 테이블을 보았을 때 모델러가 PK 컬럼을 반드시 표시합니다.
PK는 Unique하므로 아래와 같이 해당 컬럼명으로 group by count를 했을 때 1건 이상이 튀어나오면 안됩니다.
select 컬럼명, count(*) cnt from 테이블명 group by 컬럼명 having count(*) > 1;
물론 Unique하다고 PK가 되는건 아니지만, 위에서 언급 드린 사항들을 종합해서 pk를 판단하실 수 있을 것입니다.
감사합니다.
궁금한 점이 속시원하게 해결되었습니다!! 감사합니다!