1. SQL 시작하기 > 1-5. KEY
KEY
데이터베이스에서 사용하는 KEY는 기본적으로 TABLE의 열 (COLUMN)에 해당하며, 여러 종류가 있습니다. 이 KEY를 전부 아실 필요는 없지만, PRIMARY, FOREIGN KEY의 관계 는 꼭 알아가시길 바랍니다.
candidate = 후보, 후보자. 따라서 CANDIDATE KEY는 PRIMARY KEY(기본키)가 될 수 있는 컬럼들을 의미합니다. 모든 UNIQUE, NOT NULL 특징을 갖는 COLUMN이라고 PRIMARY KEY가 될 수는 없습니다. CANDIDATE KEY 중 하나만이 PRIMARY KEY가 될 수 있습니다. 그 테이블을 대표하는 KEY이기 때문에 하나만 가능합니다.
PRIMARY KEY (PK)와 FOREIGN KEY (FK)에 대해서 조금 더 자세히 알아보도록 하겠습니다. 예컨대 이러한 상품과 관련된 'PRODUCT' TABLE이 있다고 합시다.
CATEGORY, TYPE, BRAND, PRODUCT_NAME, PRICE는 유일하지 않기 때문에 PK가 되기에 부적절합니다. 따라서 각 ROW가 완벽히 유일한 COLUMN인 'PRODUCT_CODE'를 PK로 설정해 줄 수 있습니다.
이번엔 판매와 관련된 'SALES' TABLE이 있다고 합시다.
고객정보를 뜻하는 MEM_NO, 주문한 제품을 의미하는 PRODUCT_CODE는 여러 주문을 할 수 있으니 PK로 적절하지 않습니다. ORDER_DATE, SALES_QTY도 PK로는 부적절 합니다. 이때, 'PRODUCT' TABLE의 PK였던 PRODUCT_CODE COLUMN이 'SALES' TABLE에도 사용되고 있습니다. 하지만 PK역할을 하지는 않죠? 이렇게 다른 테이블의 PK를 가져다가 참조하는 경우를 FOREIGN KEY라고 합니다. FK인 경우에는 꼭 유일UNIQUE하지 않아도 괜찮습니다. 즉, 한 테이블에 FK는 여러개일 수 있습니다.
복잡해 보이는 PK, FK를 사용하는 이유는 무엇일까요? 바로 모든 데이터를 한 TABLE에 저장하지 않기 위해서입니다. 만약 제품, 고객, 판매와 관련된 모든 데이터를 한 TABLE에 저장한다면 어떻게 될까요? 고객 입장에서 어떤 제품을, 몇 개, 몇 시에 주문했는지, 전화번호, 주소는 어떻게 되는지 등등 중복되는 값이 너무 많을겁니다. 그러면 데이터베이스의 NULL값이 커지고 데이터베이스의 용량이 커집니다. 가독성은 떨어지고, 비용은 늘어나죠. 결론적으로 PK와 FK를 사용하는 이유는
정도로 정리할 수 있습니다.