Page 12 -
P. 12

이 예제에서 텍스트 기반 기본키인 CustomerID는 회사 이름(CompanyName)과
                      연관된다는 것이 비즈니스 규칙이라고 가정한다. 어느 한 회사 이름을 변경
                      하려면 키 값을 결정하는 비즈니스 규칙을 반영해 CustomerID도 갱신해야 한

                      다. 기본키 값이 변경되므로 관련된 테이블에도 변경이 전파되어야 한다. 의

                      미 없는 값을 키로 사용한다면 CustomerID 값을 변경하거나 갱신할 필요가
                      없지만, 비즈니스 규칙을 준수하는 값을 표시하려면 텍스트 기반 컬럼을 유
                      지해야 한다.


                      텍스트 기반 컬럼을 기본키로 사용하는 이유는 중복 값 입력을 막을 수 있기
                      때문이라는 의견이 일반적이다. 예를 들어 CompanyName을 기본키로 만든다면

                      회사 이름은 중복되지 않아야 한다. 하지만 Customers 테이블의 CompanyName
                      에 유일 인덱스를 추가해 이름이 중복되지 않게 하는 것이 더 쉽다. 이렇게

                      하면 무결성을 확보하면서 여전히 자동 생성된 숫자 값을 기본키로 사용할
                      수 있다. 여기에 ‘BETTER WAY 2. 중복으로 저장된 데이터 항목을 제거하

                      자’와 ‘BETTER WAY 4. 컬럼당 하나의 특성만 저장하자’에서 권고하는 내
                      용을 적용한다면 더욱 잘 작동할 것이고, 그림 1-1에서 지적한 문제점을 피

                      하는 데도 도움이 된다. 반면에 텍스트 기반 기본키를 사용하면 숫자키로 연
                      결된 값(그림 1-2에서 CompanyName)을 가져오려고 참조 테이블과 조인할 필

                      요가 없으므로 SQL 문이 좀 더 간략하다.

                      기본키로 숫자가 나은지 텍스트 기반이 나은지는 데이터베이스 전문가 사이
                      에서도 큰 이견이 있다. 책에서는 이런 논쟁에서 어느 한쪽만 편을 들지는 않

                      을 것이다. 핵심은 기본키로 사용하는 컬럼은 반드시 유일한 값을 가져야 한
                      다는 점이기 때문이다.


                      또 복합 기본키(Compound Primary Key)는 다음 두 가지 이유에서 효율성이 떨
                      어지므로 사용하지 않는 것이 좋다.






                                                                       1장  데이터 모델 설계  035




         SQL 코딩의 기술(본문)최종.indd   35                                            2017-11-15   오후 11:27:49
   7   8   9   10   11   12   13   14   15   16   17