고유 제약 조건에 대한 명명 규칙


129

명명 규칙이 중요하며 기본 키와 외래 키는 일반적으로 사용되는 명백한 규칙 ( PK_TableFK_Table_ReferencedTable각각)을 사용합니다. 그만큼IX_Table_Column인덱스의 이름은 상당히 표준입니다.

UNIQUE 제약은 어떻습니까? 이 제약 조건에 대해 일반적으로 허용되는 명명 규칙이 있습니까? 나는 본 적이UK_TableName_ColumnUQ_TableName_Column, 및 추천하는 사람을 .AX_TableName_Column - 그 어디에서 오는지 모르겠어요.

나는 일반적으로 UQ 했지만 특별히 좋아하지 않으며, 나는 그것을 사용하는 것을 방어하는 것을 좋아하지 않습니다.UK 옹호자 .

가장 널리 사용되는 이름에 대한 합의가 있는지 또는 왜 다른 이름보다 더 의미가 있는지에 대한 좋은 추론이 있는지 확인하고 싶습니다.


1
@Mitch 이유는 무엇입니까? 나도 그렇게하지만 왜 아무도 그냥 사용하지 않는지 스스로에게 묻습니다 U. 무엇 Q을위한 스탠드?
Kirk Broadhurst 2011 년

1
IndeX 용 IX에 대해 동일한 질문을 할 수 있습니다.
Chris J

3
"UQ"는 "UNIQUE"의 약어입니다. 두 글자의 이유는 기본적으로 "PK"가 선행하는 집합이기 때문입니다.
Mark Cidade 2011 년

2
개인적으로 나는 "IndeX"의 기본값 인 IX에 대한 경의로 "Unique indeX"에 UX_ *를 사용했습니다. 나는 영국에서 왔기 때문에 특히 UK_를 싫어합니다. 인터넷이 좋아한다면 AK에 대해 설득 할 수 있습니다.
Tim Abell

@KirkBroadhurst 나는 그런 컨벤션을 본 적이 없지만 upvotes 때문에 그것은 일반적이고 목적을 잘 수행해야합니다. 그러나 FK_03이라는 외래 키를 갖는 것은별로 도움이되지 않습니다. 이름을 지정하는 것이 더 낫지 FK_TargetTable_SourceTable않습니까? 자세히 설명해 주시겠습니까?
CodingYoshi

답변:


56

내 생각은 이것이 핵심이 아니라 제약이라는 것입니다.

그것은 물론 키로서 사용, 고유은 행을 식별하지만 그것은 할 수 없는 키.

예를 들어 키는 ThingName 자연 키 대신 사용되는 대리 키인 "ThingID" 입니다. 여전히 제한 해야합니다. ThingName . 그래도 키로 사용되지는 않습니다.

또한 UQ와 UQC (클러스터 된 경우)를 사용합니다.

대신 고유 색인을 사용하고 "IXU"로 이동할 수 있습니다. 사용 된 논리에 따라 인덱스도 키이지만 고유 한 경우에만 해당됩니다. 그렇지 않으면 인덱스입니다. 그래서 우리 IK_columnname는 고유 인덱스에 대해 시작 하고IX_columnname 비 합니다. 기이.

고유 제약 조건과 고유 인덱스의 유일한 차이점은 INCLUDE 열입니다.

편집 : 2013 년 2 월. SQL Server 2008 이후 인덱스에도 필터가있을 수 있습니다. 제약은 할 수 없습니다

그래서, 그것은

  • 나머지 SQL 사용 행성에 따라 UQ를 고수하십시오.
  • 일관성을 유지하려면 고유 인덱스에 IK (클러스터 된 경우에도 IKC)를 사용하십시오.

1
"UIX"보다 "IXU"를 강력하게 선호하십니까?
Hamish Grubijan 2013


133

인덱스 및 제약 조건에 대한 내 명명 규칙 :

  • 기본 키. _PK
  • 고유 인덱스 / 제약 조건. _AK {xx}
  • 고유하지 않은 색인. _IX {xx}
  • 제약 조건을 확인하십시오. _CK {xx}
  • 기본 제약. _DF {xx}
  • 외래 키 제약. _FK {xx}

여기서 {xx}는 테이블 당 각 제한 유형에 대해 01에서 시작하는 2 자리 시퀀스 번호입니다. 기본 키는 하나만있을 수 있으므로 시퀀스 번호를 얻지 못합니다. 2 자로 된 알파 접미사 의미는 다음과 같습니다.

  • PK : 기본 키
  • AK : 대체 키
  • FK : 외래 키
  • IX : IndeX
  • CK : ChecK
  • DF : 결함 제거

일반적으로 개체 유형이 아닌 제어 개체별로 메타 데이터 / 시스템 카탈로그 데이터를 그룹화하고 싶습니다.


10
AK : 대체 키는 SQL Server 데이터 도구 2012의 디자인 화면에서도 이러한 기능을 호출합니다.
Alex KeySmith 2013-08-22

15
@AlexKeySmith : Microsoft가 AK를 사용하는 이유를 설명해 주셔서 감사합니다 !!
TJ Crowder

어떤 문제 @TJCrowder 없습니다 :-)
알렉스 KeySmith

@TJCrowder는 엔티티 관계 / 데이터베이스 모델링 세계에서 대체 키입니다. 기본 키와 마찬가지로 대체 키를 구성하는 열 집합은 고유해야하므로 행 / 튜플에 [대체] ID를 제공해야합니다.
Nicholas Carey

@NicholasCarey : 아니요, 알았습니다. Alex의 댓글을 보자 마자 불이 들어 왔습니다. :-)
TJ Crowder

5

나는 UQ를 사용합니다. 영국의 K는 PK와 FK에서 사용되는 K를 생각하게합니다. 어쨌든 영국을 생각하면 아이러니하게도 영국이 다른 많은 협회를 가져올 때 UNIQUE의 접두사가되어야한다는 것입니다. =)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.