문제

때마다 나는 디자인 데이터베이스,나는 항상 있는지 궁금하는 가장 좋은 방법의 이름을 지정하는 항목에서 내 데이터베이스입니다.자주 나는 나 자신에게 다음과 같은 질문:

  1. 한 테이블에 이름 복수?
  2. 해 열 이름 단?
  3. 어야 나는 접두어 테이블 또는 열?
  4. 를 사용해야 하는 모든 경우에서 이름 지정 항목?

어떤 가이드라인을 밖의 이름을 지정 항목에서 데이터베이스?

도움이 되었습니까?

해결책

I recommend checking out Microsoft SQL Server 샘플 데이터베이스:https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks

이 예제 사용 매우 명확하고 일관성 있는 이름 지정 규칙을 사용하는 스키마 이름의 조직에 대한 데이터베이스 객체입니다.

  1. 수 테이블 이름
  2. 수 이름에 대한 열
  3. 스키마 이름 테이블에 대한 접두사(E.g.:SchemeName.테이블)
  4. 케이스 파스칼(a.k.니다.상 낙타 케이스)

다른 팁

늦은 여기에 대답하지만,짧은:

  1. 환경 복수
  2. 테이블:*일반*없음 접두사에 가장 좋습니다. :No.
  3. 모두 테이블과 열:PascalCase.

퇴:

(1) 당신이 무엇을 행해야 합니다. 몇 가지는 당신 지 특정 방법으로,모든 시간,하지만 몇 가지가 있습니다.

  • 이름 기본 키가 를 사용하여"[singularOfTableName]ID"형식입니다.는지 여부를 테이블 이름 고객고객, 은,기본 키가 있어야 CustomerID.
  • 또한, 외국 열쇠 라는 이름을 지속적으로 다른 테이블이 있습니다.그것이 있어야 합법적 이길 사람이 이 작업을 수행하지 않습니다.제출할 것 그 동안 정의 foreign key 중요한 일관된 외국인 핵심 이름 중요한
  • 당신은 데이터베이스에 있어야합 내부 규칙.도 이후 섹션에서 당신은 저를 보고,매우 유연 데이터베이스 이름 지정해야 합니다.여부를 당신의 테이블에 대한 고객 불 고객고객 보다 중요는 당신이 그것을 전반에 걸쳐 동일한 방식으로 동일한 데이터베이스입니다.있는 동전 던지기로 결정하는 방법을 밑줄을 사용하여,그러나 당신은 당신 유지해야 한 그들을 사용하여 동일한 방식.하지 않으면 이것은,당신은 나쁜 사람이 낮은 자부심을 가지고 있다.

(2) 당신이 무엇을 아는 않습니다.

  • 필드가 나타내는 같은 종류의 데이터에 다양한 테이블 이름 같습니다.이 있지 않는 한 테이블에 지퍼와 우편 번호에서 다른입니다.
  • 는 단어를 분리에서 당신의 테이블이나 열 이름을 사용하 PascalCasing.사용 camelCasing 되지 않을 것은 본질적으로 문제가 있지만,그 협약과 그것은 보이는 것이 재미 있습니다.내가 주소 밑줄습니다.(사용할 수 없습니다 ALLCAPS 라에서는 옛날 일입니다.OBNOXIOUSTABLE.ANNOYING_COLUMN 아 DB2 에서 20 년 전,하지만 지금은.)
  • 지 않 artifically 단축하거나 단어를 생략 합니다.그것은 더 나은 이름을 오래되고 명확한보다 짧고 혼란스럽습니다.매우 짧은 이름에서 이월이 더 어둡게,더 잔인한다.Cus_AddRef.지구에 무엇입니까?금 수취인을 참조하나요?고객 추가적인 환?사용자 지정 주소를 추천?

(3) 무엇을 고려해야 합니다.

  • 나는 진짜로 생각해야 합 복수 이름을 위한 테이블일부 생각에 가장 적합하다.인수를 읽습니다.열 이름을 가져야 합 단수 그러나입니다.당신이 사용하는 경우에도 복수 테이블 이름,테이블을 나타내는 조합의 기타 테이블에 있을 수도 있습 특별하다.예를 들어 있는 경우 프로모션항목 테이블,테이블의 대표하는 항목되는 부분의 추진될 수 있었습 Promotions_Items 지만,그것은 또한 수를 합법적으로 수 Promotion_Items 나는 생각한다(반영하는 하나의 관계).
  • 밑줄을 사용하여 지속적으로 및 특정 목적입니다.그냥 일반 테이블에 이름이 명확해야 충분히 PascalCasing;당신이 필요하지 않 강조하는 별도의 단어입니다.저장 밑줄 중 하나는(a)을 나타내는 연관 테이블 또는(b)붙이는 내가 주소에서 다음니다.
  • 붙이지 아니다.그 일반적으로 은 최고입니다.에서 당신의 첫 번째 db 또는 두 가지,나는 것을 사용하여 접두사에 대한 일반적인 주제를 그룹화의 테이블이 있습니다.테이블의 끝나지 않는 피팅 카테고리가 쉽게,그리고 실제로 만들 수 있습니다 그것은 열심히 을 찾아 테이블이 있습니다.으로 경험할 수 있는 계획을 적용하는 접두어로 구성표는보다 더 좋은 해입니다.에서 일했는데 db 한 번 데이터를 테이블과 함께 시작 tbl, 설 테이블 ctbl,전망 ,proc 의 sp, 고 udf 의 fn,그리고 몇 가지 다른;그것을 꼼꼼하게,일관되게 적용되도록 그것은 괜찮습니다.만 시간이 필요하신 접두사가 있을 때는 정말 분리하는 솔루션을 위한 어떤 이유에 있는 동일한 db;로 접두사에서 아주 도움이 될 수 있습 그룹 테이블이 있습니다.로 붙여도 괜찮을 위한 특별한 상황에 대한 임시하려는 테이블 스탠드니다.
  • 아주 드물게(경)할 하는 접두사 개의 열이 있습니다.

확인을,이후 우리는 무게와 의견:

내가 믿는 테이블의 이름은 복수형으로 되어 있다.테이블은 컬렉션(테이블)의 entities.각각의 행에 하나의 엔티티와 테이블을 나타냅니다.그래서 내가 부를 것 테이블의 사람은 엔터티를 사람들(또는 사람,어떤 당신의 멋진).

좋아하는 사람들을 위해 보수"entity 이름",쿼리에서는 내가 무엇을 사용하는 것 테이블에 대한 별칭:

SELECT person.Name
FROM People person

과 같은 비트 LINQ 의에서"사람이 사람에서 사람을 선택합니다.이름".

로 2,3,4,동의함으로@Lars.

내 일 데이터베이스에서 지원한 팀 세 Dba 와 우리의 고려 옵션:

  1. 이름 표준을 나보다 더 표준입니다.
  2. 은 없습니다"true"표준,우리 모두가 우리의 환경 설정
  3. 이 있는 경우는 표준 이미 장소에서,그것을 사용할 수 있습니다.을 만들지 않은 다른 표준 또는 진흙 투성이의 기존 표준입니다.

우리가 사용하는 단수에 대한 이름 테이블이 있습니다.테이블의하는 경향이 앞으로의 이름 시스템(또는 그것의 약어).이 기능을 사용하면 시스템이 복잡할 수 있습 접두사를 변경하는 그룹 테이블 함께 논리적으로(즉,.reg_customer,reg_booking 및 regadmin_limits).

분야를 위해 우리가 기대하는 필드에 이름을 접두사를 포함/acryonm 의 테이블(i.ecust_address1)그리고 우리는 또한 선호 사용의 기준 설정의 접미사(용할 수 있게 될 것이한 PK,_cd 에 대한"code",_nm"name",_nb 에 대한"number",_dt 에 대한"Date").

의 이름을 외부 키 분야와 동일합니다.

SELECT cust_nm, cust_add1, booking_dt
FROM reg_customer
INNER JOIN reg_booking
ON reg_customer.cust_id = reg_booking.cust_id

을 개발할 때 새로운 프로젝트,내가 권하고 싶은 당신이 쓰는 모든 기본 법인 이름,접두사와 약어와 제공하기 위해 이 문서의 개발자입니다.그런 다음,그들이 결정할 때 새로운 테이블을 생성,그들이 할 수 있 문서를 참조하기보다는 추측""어떤 테이블과 필드를 호출되어야 합니다.

  1. No.테이블의 명명된 후 엔터티를 나타냅니다.사람이 아니라 사람은 어떻게 당신을 참조하여 누구든지 하나의 레코드를 나타냅니다.
  2. 다시 같은 것입니다.열 이름은 정말 하이라고 부르지 않 FirstNames.그것은 모두에 따라 당신이 원하는 무엇을 나타내는 열.
  3. NO.
  4. 그렇습니다.케이스는 그것입니다.필요하신 경우에는 열처럼"이름",케이싱이 그것을 쉽게 읽을 수 있습니다.

확인.그게 내$0.02

나도 찬성하는 ISO/IEC11179 스타일 이름 지정 규칙을 지적,그들은 지침보다는 규정.

데이터 요소에 Wikipedia:

"테이블은 컬렉션의 실체,그리 컬렉션을 따라 이름 지침이 있습니다.이상적으로 집단의 이름을 사용:예를 들어, 인원이 있습니다.복수도 정확:직원입니다.잘못된 이름을 포함한다:직원 tblEmployee 및 employeetable*을."

으로 항상,예외가 규정 예:테이블이있는 항상 정확히 하나의 행할 수 있으로 더 나은 단수의 이름 예:구성이다.와 일관성이 매우 중요:는지 여부를 확인 샵에는 컨벤션,그렇다면,그것을 따르십시오;만약 당신이 그것을 좋아하지 않음 비즈니스 사례를 변화 보다는 오히려 고독한 레인저입니다.

우리의 기본 설정:

  1. 한 테이블에 이름 복수?
    지 않습니다.인수되 컬렉션을 감지만,당신은 어떤 테이블 포함(0,1 나 많은 항목).복수의 규칙으로 이름을 불필요하게 복잡합니다.1 집,2 주택,마우스 쥐,사람을 대는 사람들,그리고 우리는 심지어 보았을 다른 어떤 언어입니다.

    Update person set property = 'value' 행위에서 각 사람 테이블에 있습니다.
    Select * from person where person.name = 'Greg' 컬렉션을 반환합/행 사람의 행이 있습니다.

  2. 해 열 이름 단?
    일반적으로,예를 제외하고,당신을 깨고 정규화 규칙이 있습니다.

  3. 어야 나는 접두어 테이블 또는 열?
    주로 플랫폼을 기본 설정.우리가 선호하는 접두사를 열 테이블과 이름입니다.우리는하지 않는 접두어 테이블,하지만 우리가 하는 접두 보기(v_)및 stored_procedures(sp_ 또는 f_ 부드러 다(function)).는 사람들을 도려고 시도하 upday v_person.나이 실제로 계산 분야에서 보기(입 업데이트할 수 없습니다 어쨌든).

    그것은 또한 좋은 방법을 피하는 키워드 충돌(배달합니다.에서 휴식하지만,delivery_from 하지 않습니다).

    그것은 코드를 더욱 자세한 정보,하지만 종종 보조에서의 가독성을 높입니다.

    bob = new person()
    bob.person_name = 'Bob'
    bob.person_dob = '1958-12-21'
    ...은 아주 읽을 수 있고 분명하게 명시되어 있습니다.이에서 얻을 수 있지만 손:

    customer.customer_customer_type_id

    음을 나타냅 사이의 관계를 고객과 customer_type 테이블을 나타내는 기본 키에 customer_type 테이블(customer_type_id)그리고 당신이 이제까지 보'customer_customer_type_id'면 디버깅을 쿼리,당신은 즉시 그것이 어디서(고객 테이블).

    또는 당신이 어디에 있 M-M 사이의 관계를 customer_type 및 customer_category(특정 유형을 사용할 수 있는 특정 카테고리)

    customer_category_customer_type_id

    ...조금(!) 에서 긴쪽.

  4. 를 사용해야 하는 모든 경우에서 이름 지정 항목?그렇다 낮은 경우:),밑줄.이들은 아주 읽을 수 있는 크로스 플랫폼입니다.와 함께 3 위에 그 의미가 있습니다.

    이러한 대부분의 기본 설정이지만.-으로 일관성,그것이 있어야 예측 가능한 사람은 그것을 읽는다.

나 인수한 모든 시간는지 여부를 테이블이 복수화의 문제입니다 개인적인 맛과가 없습니다.나는 그것을 믿지 않는 사실로,특히 프로그래머와 반대로 DBA.마찬가지로 지금까지 내가 알고 있는 합법적인 이유를 복수 테이블 이외의 다른 이름을"그것은 단지 의미를 내기 때문에 그 개체의 컬렉션,"이 있는 동안에는 합법적인 이익 코드에서는 단수 테이블 이름입니다.예를 들어:

  1. 그것은 버그를 피과 실수에 의해 발생하는 복수의 모호성.프로그래머지는 정확히는 알려진 대한 철자는 전문 지식,그리고 pluralizing 일부 단어는 복잡하다.예를 들어,복수의 단어를 끝에서'es'또는's'?그것은 사람이나 사람들은?에서 작업하는 경우에는 프로젝트와 대규모 팀,이 문제가 될 수 있다.예를 들어,인스턴스는 팀 구성원이 사용하여 잘못된 방법을를 복수 테이블은 그가 만듭니다.여 시간과 상호 작용이 테이블에 사용되는 모든 코드에서 액세스할 수 없는 것을 해결할 수 있습니다.결과 내가 기억하는 맞춤법 표 잘못된 모든 시간을 사용하고 있습니다.무언가가 매우 유사하게 무슨 일이 있었다.쉽게 만들 수 있는 그 모든 구성원에 대한 팀의 일관되고 쉽게 사용하여 정확한 올바른 표하지 않고 이름 또는 오류를 찾아 테이블의 이름은 모든 시간,더 나은입니다.단일 버전으로 쉽게 처리에서 팀은 환경입니다.

  2. 사용하는 경우에는 단일 버전 테이블의 이름과 접두사에 주 키 테이블과 이름을,지금 당신은 당신의 장점을 쉽게 결정하는 테이블에서 이름을 기본 키로 또는 그 반대로 코드를 통해 혼자입니다.당신은 주어질 수 있는 변수 테이블과 함께 이름에 그것을 연결"Id"끝까지,그리고 당신은 지금 당신의 기본 키 테이블을 통해 코드를 할 필요없이 추가 쿼리가 있습니다.할 수 있습니다 또는 차단"Id"끝에서의 기본 키를 결정하는 테이블의 이름을 통해 코드입니다.당신이 사용하는 경우"id"없이 테이블의 이름을 기본 키가할 수 없습을 통해 코드를 확인하는 테이블에서 이름을 기본 핵심이다.또한,대부분의 사람들은 누가 복수로 테이블의 이름과 접두사 PK 열 테이블과 이름을 사용하의 단일의 버전 테이블에 이름을 PK(예를 들어 상태 및 statusId)하는 것이 불가능하고,이를 모두.

  3. 만약 당신이블 이름의 단일,당신은 그들을 가질 수 있습과 일치 클래스 이름이 표시됩니다.다시 한번 이 수 있는 코드를 간소화하고 일을 할 수 있도록 정말 깔끔한 것 같은 클래스를 인스턴스화함으로써 아무것도 하지만 테이블의 이름입니다.그것은 또한 단지 당신의 코드보다 일관성,지도하는...

  4. 만약 당신이블 이름의 단일,그것은 당신의 이름 구성을 일관성,조직,그리고 쉽게 유지하기 위해 모든 위치에 있습니다.당신이 알고있는 모든 인스턴스에서 코드의 여부를,그것은에서 열 이름으로 클래스 이름 또는 테이블 이름으로,그것은 동일한 정확한 이름입니다.것을 할 수 있습니다 세계 검색을 모든 곳에서 참조하는 데 사용됩니다.할 때 복수로 테이블 이름이 될 것입니다 경우에는 당신이 사용하는 단일 버전에는 테이블 이름(클래스로,기본 키에).그것은 단지 의미가 있지 않는 경우는 데이터로 불리는 복수하고 일부 경우 특별하다.

다음과 같이 요약할 수 있습니다,당신이 복수로 당신의 테이블에 이름을 잃는 모든 종류의 장점에서 당신의 코드를 스마트하고 쉽게 처리합니다.수도 있는 경우를 테이블 조회/배열로 변환하는 테이블의 이름을 개체를 또는 지역 코드에 이름을 피할 수 있습니다.수 테이블 이름이지만,아마도 조금 느낌이 이상한,처음에는 상당한 장점을 제공합을 통해 복수형 이름이라고 믿고 있습니다.

을 살펴 ISO11179-5:이름 지정 및 원리를 식별 당신은 여기를 얻을 수 있습니다: http://metadata-standards.org/11179/#11179-5

나는 그것에 대해 블로그는 하는 동안 여기: ISO11179Naming Conventions

내가 이것을 알고는 늦은 게임과는 질문에 대답하고있다 아주 잘 이미지만,저는 제안하고 싶은 나에 대한 의견#3 에 대한 접두어로의 열 이름이 있습니다.

모든 열 이름을 지정해야와 접두사에서 고유한 테이블이 정의된다.

E.g.어 테이블은"고객"및"주",let's go 와 접두사의"cust"및"addr",각각합니다."고객"것"cust_id","cust_name",등등.습니다."주"것"addr_id","addr_cust_id"(FK 다시 고객),"addr_street",등등.습니다.

었을 때 첫 번째로로 이러한 표준,내가 죽었다-그것;내가 싫어하는 아이디어.저는 참을 수 없는 아이디어 모두의 추가 입력 및 중복성을 제공합니다.지금 나는 충분한 경험 그것으로 나가지 않습니다.

의 결과는 이 일을 하는 것은 모두 열의 데이터베이스에서 스키마는 독특한입니다.가 주요 이점 중 하나,이는 보다 소중한 모든 인수에 대하여 그것(제 생각에는,의 코스):

검색할 수 있습니다 당신의 전체 코드 기반을 안정적으로 모든 코드의 라인을 만지는가 특정 열입니다.

로부터 혜택#1 이 매우 크다.나는 사용하지 않도록 열고 알고 정확하게 어떤 파일 업데이트할 필요가하기 전에 열이 안전하게 제거할 수 있는 스키마에서.을 변경할 수 있습의 의미를 열 정확히 알고 코드를 필요 refactor.또는 나는 단순히 말하면 데이터를 열도에서 사용되는 특정 부분의 시스템입니다.할 수 없는 횟수의 이름은 잠재적으로 거대한 프로젝트로는 간단한 하나 또는 양의 시간을 우리는 저장 개발에서 작동합니다.

또,비교적 작은 혜택을 그것은 당신을 사용하여 테이블 별칭을 수행할 때 자기 가입하세:

SELECT cust_id, cust_name, addr_street, addr_city, addr_state
    FROM customer
        INNER JOIN address ON addr_cust_id = cust_id
    WHERE cust_name LIKE 'J%';

내 의견에 이들은:

1),테이블 이름해야 특별하다.

면서 나타나는 의미를 만들에 대한 간단한 선택(select * from Orders)그것은 더 적은 의미에 대한 해당하는 OO(Orders x = new Orders).

테이블에서 DB 는 정말로 세트의 엔티티,더 많은 의미가 당신을 사용하여 설정-논리:

select Orders.*
from Orders inner join Products
    on Orders.Key = Products.Key

는 마지막 줄,실제적인 논리의 가입,보 혼란을 가진 복수 테이블 이름입니다.

는 항상는 별칭을 사용하여(으로 매트에서 알 수 있듯이)을 지웁니다.

2)그들은 단수로만 잡고 1 시설

3)지 않는 경우,열 이름이 모호한다(위의 그들 모두가 열[Key])테이블의 이름(또는 그것의 별명)구분할 수 있습이 그들도 충분합니다.당신이 원하는 쿼리를 수 있는 빠른 입력하고 간단한 접두어를 추가 불필요한 복잡합니다.

4),당신이 원하는 것이 좋 CapitalCase

나는 생각하지 않는 하나의 세트의 절대적인 지침에 어떠한다.

만큼 당신이 무엇을 선택하는 일관성 있는 응용 프로그램 또는 DB 지 않아요 그렇게 생각해주실 분은 바로 정말 중요합니다.

에 내 의견:

  1. 테이블의 이름은 복수형으로 되어 있다.
  2. 열 이름을 가져야 합 특별하다.
  3. No.
  4. 중 CamelCase(하)또는 underscore_separated 모두에 대한 테이블의 이름과 열 이름이 있습니다.

그러나,그것 같이 언급된 바와 같이,어떤 컨벤션은 더 convention.어떻게 그것을 선택,문서에 그렇게는 미래의 변화에 따라 동일한 규칙을 따릅니다.

  1. 확실히 유지 테이블 이름의 특정한 사람이 없는 사람들
    1. 여기에서 동일
    2. No.본 끔찍한 접두사를 가고,지금까지 상태가 무엇이었을 다루는 테이블(tbl_)또는 사용자가 저장 프로시저(usp_).이 다음에 의하여 데이터베이스 이름을...그러나 절대 그렇게 하지 마십시오!
    3. 그렇습니다.는 PascalCase 내 모든 테이블 이름

내가 생각하는 가장 좋은 대답을 각 사람들의 질문을 하는 것에 의해 주어진 당신과 당신의 팀이 있습니다.그것은 훨씬 더 중요한 이름 지정 규칙 다음 방법을 정확하게 이름 지정 규칙입니다.

이 없기 때문 바로 응답하는,당신은 시간이 걸릴 해야(하지만 너무 많이)를 선택하고 당신의 자신의 규칙과 의 중요한 부분에 붙어 있습니다.

물론 그것은 좋은 추구하에 대한 정보를 기준에는,당신이 무엇을 묻고 있지만,없는 불안이나 걱정에 대해 다양한 답변을 얻을 수 있습니다:하나를 선택하는 것은 당신을 위해 더 나은입니다.

이런 경우에,여기에는 나의 답변:

  1. 그렇습니다.테이블의 그룹입니다 기록, 교사배우, 다,그래서...복수형으로 되어 있다.
  2. 그렇습니다.
  3. 나는 사용하지 않는다.
  4. 데이터베이스가 더 자주 사용하는-Firebird-에서 모든 것을 유지 상단 케이스,그래서 그것은 중요하지 않습니다.어쨌든,때 나는 프로그래밍 내가 이름을 쓰기에서는 방식으로 그것은 쉽게 읽을 수 있습니다.처럼, releaseYear.

이름 규칙이 허용하는 개발 팀을 디자인 discovereability 및 유지 관리의 중심에서 프로젝트입니다.

좋은 이름 지정 규칙을 소요 진화하는 시간이지만 그것은 장소에서 허용하는 팀을 가지고 앞으로 움직이 일반적 언어입니다.좋은 이름 지정 규칙을 성장이 유기적으로 프로젝트입니다.좋은 이름 지정 규칙을 쉽게 대처와 동시에 변화를 가장 중요한 단계 소프트웨어의 라이프사이클 서비스 관리에서 생산입니다.

여기에는 나의 답변:

  1. Yes,테이블 이름할 때 복수들이 참조하는 설정의 거래, , 나 상대방 예를 들어.
  2. 그렇습니다.
  3. 그렇습니다.SQL 테이블이 붙 tb,전망은 앞 vw_,저장 프로시저는 앞 usp_ 및 트리거 앞 tg_ 다음에 의하여 데이터베이스 이름입니다.
  4. 열 이름이 낮은 경우로 구분하여 밑줄입니다.

이름은 어렵지만 모든 조직에 있을 수 있는 누군가 이름을 것들과 모든 소프트웨어 팀이 있어야 하는 사람에 대한 책임을 불러 올 수준을 보장하는 같은 문제는 이름 sec_id, sec_valuesecurity_id 해결되기 전에 그들은 구운로 프로젝트입니다.

그래서 어떤 기본적인 신조은 좋은 이름 지정 규칙과 기준:-

  • 의 언어를 사용하는 클라이언트와 귀하의 솔루션을 도메인
  • 설명
  • 일관
  • 를 명확하게 반영하고 리팩터링
  • 지 않는 약어를 사용하지 않는 한 그들이 모든 사람에게 명확
  • 를 사용하지 않는 SQL 예약한 키워드로 열 이름

여기에 대한 링크를 제공하는 몇 가지 선택이 있다.내가 찾는 간단한 사양 나를 따라 오히려 데에 의존하는 부분적으로 정의된다.

http://justinsomnia.org/writings/naming_conventions.html

테이블의 이름이 항상 이어야 한 단기 때문에,그들은 그들의 집합을 나타내는 개체.당신 말대로 무리를 지정한 그룹의 양이나 무리오 그룹을 지정합니다.필요 없음에 대한 복수형으로 되어 있다.테이블의 이름은 소재의 두 가지 이름과정에서는 복수가 되지 여부를 판단하기 어려운 경우 복수 이름이 될 첫 번째 단어는 두 번째 단어 또는니다.그것은 논리 개체입니다.스지 않는 객체입니다.인스턴스입니다.또는 테이블.열 TableNames.칼럼(s).Microsoft SQL,대소문자를 구별하지 않는,그것은 쉽게 읽을 수 있습니다.테이블의 이름을 경우,대문자를 사용하여 별도의 테이블이나 열 이름을 때 그들은 그들로 구성된 두 개 이상의 이름이 있습니다.

SELECT 
   UserID, FirstName, MiddleInitial, LastName
FROM Users
ORDER BY LastName

테이블 이름: 해야한 단일로,그것은 단수 엔터티를 나타내는 진정한 세계 객체지 않는 객체는 singlular.

열 이름: 해야 단서만 그것을 전달한다는 것을 보유 원자 값과 확인을 정규화 이론이다.그러나,거기에는 n 개의 동일한 유형의 속성,그 후 그들은 뒤 1,2,...,n,etc.

붙이블/열:그것은 거대한 주제를 논의 할 것이다.

케이스:그것이 있어야 낙타 케이스

내 친구, 패트릭 카 처, 에,나는 당신에게 아무것도 기록하지 않는 불쾌감을 줄 수 있습 누군가 당신이 그랬던 것처럼,"•또한,외국 열쇠를 지정해야 하며,일관되게 다른 테이블이 있습니다.그것이 있어야 합법적 이길 사람이 이 작업을 수행하지 않습니다.".나는 끝이 없이는 내 친구 패트릭,하지만 내가 쓰는 일반적으로.만약 그들은 함께 계획을 이길을 이?:)

매우 늦은 파티에만 여전히 추가하고 싶은 내 두 개의 센트에 대한 열 접두사

보실 수 있습니다:두 개의 주요 인자를 사용하 table_column(또는 tableColumn)지명에 대한 표준 칼럼,모두는 사실을 기반으로 열 이름 자체가 될 것입니다 독특한 전체 데이터베이스:

1)당신은 당신이 지정하지 않아도 테이블의 이름 및/또는 열 별칭에서 쿼리를 모든 시간

2)당신은 쉽게 검색할 수 있습니다 당신의 전체 코드에 대한 열 이름

나는 생각이 모두 인수의 결함이 있습니다.솔루션 모두에 대한 문제없이 사용하는 접두사에는 것은 쉽습니다.여기 나의 제안:

항상 사용하여 테이블이 이름에서 SQL.E.g., 항상 사용하는 테이블.열신의 열입니다.

그것은 분명히 해결 2)할 수 있으므로 검색하는 테이블.사 table_column.

그러나 나는 밤,그것은 어떻게 해결 1)?그것은 정확히 피하는 것에 대해 이다.네,그것은,그러나 솔루션을 무시무시한 결함이 있습니다.왜?론,접두사 솔루션으로 귀결하기:
하는 것을 피하기 위해 지정이다.열 때에 거기의 모호함을,당신은 이름이 모든 열 table_column!
하지만 이것은 당신이 이제부터는 항상 있을 쓰는 열 이름을 때마다 당신을 지정합니다.그러나 당신이해야 할 경우에는 어쨌든,무엇이 유익을 통해 항상 명시적으로 테이블을 작성 합니다.란?정확히더라도 큰 효과를 기대할 수 없습니다,그것은 정확히 동일한 번호로 문자를 입력합니다.

편집:그렇다,나는 알고 있는 이름의 열두 적용하는 올바른 사용하는 반면 나 접근 방식에 의존하고 프로그래머

필수적인 데이터베이스 이름 지정 규칙(스타일) (여기를 클릭하십시오에 대한 자세한 설명)

테이블 이름 선택 짧고,명확한 이름을 사용하여 더 이상 하나 또는 두 개의 단어 구분 테이블을 쉽 을 용이하게의 이름을 지정한 필드 이름을 뿐만 아니라 조회 및 테이블을 연결하는 포기 테이블이 단수 이름,결코 복수(업데이트:나는 아직도와 동의어진 이유에 대한 이 컨벤션이지만,대부분의 사람들이 정말 좋아 복수 테이블 이름은,그래서 저는 부드럽게 내세)...위의 링크를 클릭하십시오십시오

테이블의 이름이 적합하다.자의 말을 했을 모델링 realtionship 사람과 자신의 주소입니다.예를 들어,당신은 datamodel 겠아보세요 '각 사람이 살 수 있습니다에서 0,1 또는 여러 주소입니다.'나 '각 사람들이 살 수 있습니다에서 0,1 또 많은 주소가 있습니다.' 내가 생각하기 쉽 pluralise 주소를 표현으로 사람을 사람입니다.Plus 단체 명사들은 자주 dissimlar 하는 단일 버전입니다.


--Example SQL

CREATE TABLE D001_Students
(
    StudentID INTEGER CONSTRAINT nnD001_STID NOT NULL,
    ChristianName NVARCHAR(255) CONSTRAINT nnD001_CHNA NOT NULL,
    Surname NVARCHAR(255) CONSTRAINT nnD001_SURN NOT NULL,
    CONSTRAINT pkD001 PRIMARY KEY(StudentID)
);

CREATE INDEX idxD001_STID on D001_Students;

CREATE TABLE D002_Classes
(
    ClassID INTEGER CONSTRAINT nnD002_CLID NOT NULL,
    StudentID INTEGER CONSTRAINT nnD002_STID NOT NULL,
    ClassName NVARCHAR(255) CONSTRAINT nnD002_CLNA NOT NULL,
    CONSTRAINT pkD001 PRIMARY KEY(ClassID, StudentID),
    CONSTRAINT fkD001_STID FOREIGN KEY(StudentID) 
        REFERENCES D001_Students(StudentID)
);

CREATE INDEX idxD002_CLID on D002_Classes;

CREATE VIEW V001_StudentClasses
(
    SELECT
        D001.ChristianName,
        D001.Surname,
        D002.ClassName
    FROM
        D001_Students D001
            INNER JOIN
        D002_Classes D002
            ON
        D001.StudentID = D002.StudentID
);

이러한 규칙을 배웠지만,당신은 당해 당신이 무엇을 개발 호스를 사용합니다.

  1. 복수형으로 되어 있다.그것은 엔터티 컬렉션입니다.
  2. 그렇습니다.특성은 표현의 단수는 시설의 엔티티입니다.
  3. Yes,접두사를 표명할 수 있게 쉽게 추적 가능한 이름 지정의 모든 제약 및 인덱스 테이블 별명이 있습니다.
  4. 파스칼의 경우 테이블과 열 이름 앞에+모두에 대한 인덱스 및 제약 조건이 있습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top