복붙노트

[SQL] 제약 조건 이름의 목적은 무엇인가

SQL

제약 조건 이름의 목적은 무엇인가

제약 조건 (독특한, 기본 키, 외래 키)를 이름의 목적은 무엇인가?

내가 기본 키로 자연 키를 사용하는 테이블이 말 :

CREATE TABLE Order
(
    LoginName        VARCHAR(50)    NOT NULL,
    ProductName      VARCHAR(50)    NOT NULL,
    NumberOrdered    INT            NOT NULL,
    OrderDateTime    DATETIME       NOT NULL,
    PRIMARY KEY(LoginName, OrderDateTime)
);

어떤 혜택 (있는 경우) 내 PK 가져 명명 하는가?

예. 바꾸다:

    PRIMARY KEY(LoginName, OrderDateTime)

와:

    CONSTRAINT Order_PK PRIMARY KEY(LoginName, OrderDateTime)

내 데이터 모델이 가장없는 경우 죄송합니다,이 새로운 해요!

해결법

  1. ==============================

    1.다음은 몇 가지 아주 기본적인 이유입니다.

    다음은 몇 가지 아주 기본적인 이유입니다.

    쿼리 (삽입, 업데이트, 삭제는) 제약 조건을 위반하는 경우 (1), SQL은 제한 조건 이름이 포함됩니다 오류 메시지를 생성합니다. 제한 조건 이름이 명확하고 설명하는 경우, 오류 메시지가 이해하기 쉬울 것입니다; 제한 조건 이름이 임의의 GUID 기반 이름 인 경우, 그것은 훨씬 덜 분명하다. 것입니다 (OK, 힘) 전화 당신을하고 무엇을 "FK__B__B_COL1__75435199"라는 뜻을 물어 최종 사용자를위한 Particulary.

    (2) 제약의 요구는 미래 (예, 그런 일이)에 수정 될 경우이 이름을 무엇을 모르는 경우, 그것은 할 매우 어렵다. (ALTER TABLE을 MyTable는 ... 음 제약 조건을 삭제) 그리고 당신은 사용의 시스템에서 생성 된 기본 이름 "처음부터"데이터베이스 인스턴스를 두 개 이상 만들 경우, 두 개의 이름은 이제까지 일치하지 않습니다.

    (DBA가 일명) 코드를 지원하기 위해 얻는 사람이 일요일 새벽 3시의 경우 (1) 또는 케이스 (2)와 무의미한 시간 거래를 많이 낭비하는 경우 (3), 그들이 할 수있는 위치에 아주 아마있어 코드의 출처를 식별하고 그에 따라 반응 할 수 있습니다.

  2. ==============================

    2.미래의 제한 조건을 식별하기 위해서는 고유 한 이름이 있어야합니다 (예를 들어, 당신은 미래에 드롭 할). 당신이 그것을 이름을 지정하지 않으면, 데이터베이스 엔진은 아마 당신을 위해 (예를 들어 고유성을 보장하기 위해 임의의 물건을 포함) 이상한 이름을 지정합니다.

    미래의 제한 조건을 식별하기 위해서는 고유 한 이름이 있어야합니다 (예를 들어, 당신은 미래에 드롭 할). 당신이 그것을 이름을 지정하지 않으면, 데이터베이스 엔진은 아마 당신을 위해 (예를 들어 고유성을 보장하기 위해 임의의 물건을 포함) 이상한 이름을 지정합니다.

  3. ==============================

    3.그들이 프로덕션 데이터베이스에 스키마 정의를 할 수 있도록은 DBA가의 행복을 유지합니다.

    그들이 프로덕션 데이터베이스에 스키마 정의를 할 수 있도록은 DBA가의 행복을 유지합니다.

  4. ==============================

    4.코드가 무작위로 일부 외래 키 제약 조건을 위반하는 경우, 그것은 확실히 지옥으로 그것이 어느 알아 내기 위해 디버깅 시간을 절약 할 수 있습니다. 크게들을 명명하는 것은 삽입 및 업데이트를 디버깅을 간소화합니다.

    코드가 무작위로 일부 외래 키 제약 조건을 위반하는 경우, 그것은 확실히 지옥으로 그것이 어느 알아 내기 위해 디버깅 시간을 절약 할 수 있습니다. 크게들을 명명하는 것은 삽입 및 업데이트를 디버깅을 간소화합니다.

  5. ==============================

    5.그것은 누군가가 제약 조건 이름이 당신에게 당신이 필요로하는 모든 정보를 제공으로, 실제 제약 조건을보고하지 않고 일을 빨리 알고하는 데 도움이됩니다.

    그것은 누군가가 제약 조건 이름이 당신에게 당신이 필요로하는 모든 정보를 제공으로, 실제 제약 조건을보고하지 않고 일을 빨리 알고하는 데 도움이됩니다.

    가 포함 된 기본 키, 고유 키 또는 기본 키뿐만 아니라 테이블과 가능성 컬럼 인 경우 그래서, 나는 알고있다.

  6. ==============================

    6.정확하게 모든 제약 조건의 이름을 지정함으로써, 당신은 신속하게 데이터 모델 특정 제약 조건을 연결할 수 있습니다. 이것은 우리에게 두 개의 실제 이점을 제공합니다 :

    정확하게 모든 제약 조건의 이름을 지정함으로써, 당신은 신속하게 데이터 모델 특정 제약 조건을 연결할 수 있습니다. 이것은 우리에게 두 개의 실제 이점을 제공합니다 :

  7. ==============================

    7.제약 조건 이름을 지정함으로써 당신은 그 위반을 구별 할 수 있습니다. 이뿐만 아니라 관리자와 개발자를위한 유용하지만, 프로그램은 또한 제약 조건 이름을 사용할 수 있습니다. 이 훨씬 더 강력한 오류 메시지를 구문 분석하는 것보다입니다. 제약 조건 이름을 사용하여 프로그램이 위반 된 제약 조건에 따라 다르게 반응 할 수 있습니다.

    제약 조건 이름을 지정함으로써 당신은 그 위반을 구별 할 수 있습니다. 이뿐만 아니라 관리자와 개발자를위한 유용하지만, 프로그램은 또한 제약 조건 이름을 사용할 수 있습니다. 이 훨씬 더 강력한 오류 메시지를 구문 분석하는 것보다입니다. 제약 조건 이름을 사용하여 프로그램이 위반 된 제약 조건에 따라 다르게 반응 할 수 있습니다.

    제약 조건 이름도 대신 사용자에게 데이터베이스 서버에서 암호 같은 오류 메시지가 전달의 제약 조건 위반을 야기 필드 사용자의 언어 대한 언급에서 해당 오류 메시지를 표시하는 것은 매우 유용합니다.

    PostgreSQL을 자바로이 작업을 수행하는 방법에 대한 내 대답을 참조하십시오.

  8. from https://stackoverflow.com/questions/1397440/what-is-the-purpose-of-constraint-naming by cc-by-sa and MIT license