2010-05-01 4 views
4

내 첫 번째 질문은 여기에. 나는 그 사이트를 너무 좋아한다. :)SQL의 열에 "ID"를 쓰는 올바른 방법

나는 제품이라는 SQL 테이블을 가지고있다. 이 테이블에서 제품 ID에 대한 열을 만들고 싶습니다. ID를 작성하는 올바른 방법을 알고 싶습니다. 장기적으로 많은 ID 열을 만들기 때문입니다.

이렇게 : "ID" 또는 "Id"?

또한 다른 테이블의 외래 키는 ProductID 또는 ProductId라고하는 것입니까?

Thx 얘들 아.

답변

3

는 개인적으로, 나는 제품 테이블에서 제품 ID, 제품 이름 등을 거라고하고 FKS 너무 그냥 일관성이 ID와 이름 사방에 열

을 피하기 위해

5

는 "올바른"방법이 없다 그것을하는 것. 일관성있게하십시오. 개인적으로는 두 테이블 모두에서 ProductId를 사용하는 것이 좋습니다. 모든 테이블에 대해 "ID"를 사용하고 다른 테이블에 조인하면 두 ID 필드를 구분하기 위해 별칭을 지정할 가능성이 높습니다.

+0

"id"를 기본 키 이름으로 사용하지 못하도록 투표했습니다. 그것은 항상 저에게 코드를 더 명확하게 만드는 낭비처럼 보입니다. –

+0

@Larry - 응용 프로그램의 컨텍스트에서 사용법은 단순히'id'를 사용하면 거의 항상 읽을 수 있습니다. in,'product.id'와'product.product_id' (Rails 스타일). 엔티티의 이름과 속성 이름에서 제품을 반복 할 때 가치가 없습니다. – tvanfosson

+0

@tvanfosson ID 필드 (예 : PostId, ThreadId, UserId)가 둘 이상인 결과를 반환하는 쿼리가있을 때마다이 값은 확실합니다. –

7

SQL의 대문자 사용은 주로 코딩 스타일의 문제입니다. 일관성이 가장 중요한 측면입니다. 즉, "ProductId"는 "Productld"("d"앞에 소문자 L)와 비슷해 보이므로 "ProductID"(또는 "productID"또는 "product_id")를 선호합니다.

테이블 이름 앞에 접두어를 붙이는 것에 관해서는 내 책에 너무 많이 있습니다. Products.id이면 충분합니다. Products.productID은 중복됩니다.

0

"Id"는 "Identification"의 약자이므로 "Id"여야합니다.

반면에 "id"보다는 "I-D"로 발음되므로 "ID"도 허용됩니다.

외래 키 관계의 양측이 일치하도록 테이블의 기본 키가 "Id"가 아닌 "ProductId"를 선호합니다.

+2

자아와 초자아와 함께 이드는 프로이드의 모델에서 정신의 세 부분 중 하나입니다. – tvanfosson

2

원하는대로.

프레임 워크는 최소한 기본 명명 규칙에 대해 기본 키는 소문자 "id"를, 외래 키는 "primarykeytablename_id"를 사용하는 것처럼 보입니다. 나는 관계의 양면에 같은 이름을 갖는 열쇠를 좋아하기 때문에이 대회 자체가 마음에 들지 않습니다.

내 기본 설정은 두 위치 모두에서 EntityNameID입니다 (예 : ProductID, OrderID, OrderDtlID 등).

1

나는 심리학 수업을 한 번도 해보지 않았지만 "id"라는 단어가 있기 때문에 항상 식별자의 약어를 대문자로 사용하므로 "ID"를 사용합니다. 기본 키 이름에 대해 ID와 ProductID를 모두 사용하여 실험했습니다. LINQ를 사용하고 디자이너에서 클래스를 매핑하기 때문에 필자는 코드에서 원하는대로 열의 이름을 지정했습니다. product.IDproduct.ProductID보다 선호하기 때문에 짧은 이름을 사용합니다. 외래 키의 경우 테이블/열 형식 (구분 기호 없음)을 사용하므로 외래 키가 ProductID가됩니다. 하지만 코드 자체에서는 문제가되지 않습니다. 키가 아닌 cart.Product과 같이 매핑 된 항목을 거의 항상 사용하기 때문에 cart.ProductID입니다.

EDIT : 참고 .NET 프레임 워크의 대상을 가정하므로 .NET의 명명 규칙을 (주로) 사용합니다. Rails 개발을 수행했다면, 아마도 소문자가 될 것이고 밑줄을 구분 기호로 사용할 것입니다.

+0

INNER JOINS의 경우 참조하는 테이블에서 더 긴 이름을 사용할 수 있지만 ID라는 열이있는 두 개의 테이블이있는 경우 OUTER JOINS를 복잡하게 만드는 것으로 추정 할 수 있습니다. 아니면 결코 LINQ가 나오지 않을까요? –

+0

@Martin - 나는 실제 SQL에 덜 관심이 있으며 코드 변환 (내 수업)에 더 관심이 있다는 것을 충분히 인정할 것이다. YMMV. LINQ에서 보통 ID 열을 모호하게하기 위해 적절히 명명 된 변수에 매핑합니다. ID를 선택하는 경우, 익명 형식으로 들어가고 모호하지 않은 이름으로 해당 형식의 "속성"을 만듭니다. 이것은 비교적 드문 일이며 일반적인 경우의 단순성 때문에 기꺼이 처리하려고합니다. – tvanfosson

0

나는 'id'또는 'ID'가 없기 때문에 이동하는 경향이 있습니다.

난 항상 테이블 이동 - 제품 이름

pkProductName 제품 이름 fkProductCode

및 테이블 - 제품 코드 pkProductCode

그래서 당신은 관계를 SQL을 사용하거나 코드에서하는 경우에도 제품 코드를 명백하고 의미있다.

관련 문제