2013-07-23 4 views
0

예 : 두 ID를 사용하는 것이 좋습니다. 테이블

------------------------------------ 
| Id | ItemId | Description | Price | 
------------------------------------ 

두 이드의 ( IdItemId) 고유 자동 생성 둘 다. 그것들의 차이점은 테이블 내 식별을위한 클래식 ID로 사용되는 첫 번째 ID ( Id)와 항목 ID 필드로 사용되는 두 번째 ID ( ItemId)이며 테이블 정리 (클래식 ID 재설정 수행) 및 마이 그 레이션에 강합니다.

좋습니다. 그리고 왜? 설명 해주십시오. AKA 도메인 키 또는 - 일반적으로 (귀하의 예제에서 Id) 참조 무결성 목적으로 사용되는 대용 키자연 키 :

+2

Whats * classic Id 's reset *? –

+0

행을 다시 배열 할 때 다시 ID를 다시 기록하십시오. 또한 테이블/목록간에 데이터를 전송할 때 원래의 식별 코드를 잃지 않으려 고 할 때 유용합니다. –

+1

일반적으로 나쁜 생각입니다. 수백만 행의 테이블과 관련 FK에 그렇게 할 예정입니까? 나는 그렇게 생각하지 않는다. –

답변

2

그것은 매우 일반적인 관행 (적어도) 테이블 당 두 개의 키 구현입니다 비즈니스 키 - 비즈니스 도메인의 식별자로 사용됩니다 (예 : ItemId).

대체로 사로 게이트를 사용하는 것은 좋지 않습니다. 구현하려는 각 키의 의도 된 목적과 이점을 사례별로 결정해야합니다. 하나의 디자인 패턴이 모두 적합하다고 가정하지 마십시오. 매우 일반적인 규칙으로 키 선택 및 설계에 대한 좋은 기준은 키 속성의 친숙성, 단순성 및 안정성입니다. 그 외에도 비즈니스 규칙에 따라 필요한 키가 결정됩니다. 비즈니스 도메인을 정확하게 모델링하고 데이터 무결성을 유지하는 데 필요한만큼의 키를 확보하십시오.

용어의 의미에서 을 실제로 의미하는 경우 Id을 사용하지 마십시오. ID는 너무 모호하고 과부하 상태입니다. 관계형/SQL 데이터베이스에서 행은 키로 식별됩니다. Id는 열 이름에는 적합하지만 테이블 디자인을 설명하거나이 질문을하는 올바른 방법은 아닙니다.

1

사실 전적으로 귀하의 요구 사항에 따라 다릅니다. 요구 사항에 따라 ID가 필요하다면 ID 열을 사용하는 것이 바람직하지 않으며 데이터 수준에서 의미가 없으며 ID 열을 외래 키로 사용하기가 어렵습니다. 하나는 데이터에 자연스러운 기본 키가없는 경우에만 ID 열을 사용하는 것이 좋습니다.