테이블과 뷰의 이름을 지정할 때 어떤 표준을 따라야합니까?


20

테이블과 뷰의 이름을 지정할 때 어떤 표준을 따라야합니까? 예를 들어, 테이블 이름의 시작 부분에 tbl_와 같은 것을 넣는 것이 좋은 생각입니까? ct_, lut_ 또는 codes_와 같은 방식으로 코드 / 조회 테이블을 지정해야합니까? 다른해야 할 일 /하지 말아야 할 것이 있습니까?

나는 MS SQL Server를 사용하고 있으며 많은 테이블이있는 많은 데이터베이스를 가지고 있으므로 합리적인 근거를 가진 표준으로 사용할 수있는 것이 좋을 것입니다.

답변:


29

OK, 먼저 테이블 이름 앞에 tbl을 두지 마십시오. 그것은 테이블입니다. 우리는 이미 그 일을했습니다. 이것을 헝가리 표기법 (Hungarian Notation)이라고하며 사람들은 5 년 이상 전에 그 일을 중단했습니다.

객체가 무엇인지에 따라 객체를 호출하십시오. 테이블에 직원 데이터가 있으면 "직원"이라고합니다. 컴퓨터에 대한 정보가 있으면 "컴퓨터"라고합니다. 컴퓨터를 직원에게 매핑하는 경우 "EmployeeComputer"또는 "ComputerEmployee"라고합니다 (개인적으로 "EmployeeComputer"가 더 좋습니다).

헝가리어 표기법을 사용하지 않는 것 외에는 사용할 올바른 명명 규칙이 없습니다. 객체 이름이 중요하다는 것을 이해하는 한.


11
또한 직원, Cumputers의 예를 보았 듯이 테이블 이름을 복수 명사로 쓰지 마십시오. 우리는 테이블이 하나가 아니라 많은 행을 가져야한다는 것을 알고 있습니다.
Marian

1
왜 테이블의 뷰를 생성 하시겠습니까? 모든 뷰는 저장된 select 문입니다. 인덱싱 된 뷰를 사용하지 않으면 뷰 뒤에 데이터가 구체화되지 않습니다. 나는 절대로 뷰를 사용하지 않으며 결코 가지고 있지 않습니다. 그렇게하면 성능상의 이점이 없습니다.
mrdenny

2
몇 개의 테이블을 조인하거나 코드 값을 사람이 읽을 수있는 값으로 변환하는 등의 작업을 수행하려는 경우 뷰를 사용합니다. 두 번째 상황은 비슷한 이름으로 끝나는 상황입니다.
Beth Whitezel

2
Mr. Denny의 답변과 다음 제공자는 다음과 같이 백업됩니다. dba4life.blogspot.com/2007/11/…

1
@Marian : 복수를 사용합니다. 쿼리를보다 자연스럽게 읽고 키워드와의 충돌을 해결하기 때문입니다. 내가 작업 한 많은 시스템에는 주문 엔터티가 있습니다. 복수를 사용하면 테이블 이름이 생성 orders되지 않으며 order사용자가 될 때마다 테이블 이름을 인용하지 않아도됩니다. 이는 group다른 키워드 에도 적용됩니다 . 다행히도 공통 키워드와 충돌하는 키워드는 거의 없습니다.
BillThor

13

권한과 그룹화 모두에 스키마를 사용합니다 (SQL에서 네임 스페이스로 생각할 수도 있음). "tbl"등 대신에

  • 데이터. 사물
  • Data.ThingHistory
  • 데이터

코드가 데이터 스키마에 들어 가지 않습니다. 데이터 스키마 외부에 테이블이 없습니다. 원하는 경우 조회 또는 스테이징 스키마를 갖도록 확장 할 수도 있습니다.

우리가 사용하는 뷰는 vwSQL Server 2000의 테이블과 구별하기위한 것이 었으며 지금은 다소 레거시입니다.


3
스키마 추천을 위해 +1. 이것은 100의 테이블로 큰 db를 유지하면서 편리합니다. 우리는 기능 그룹화에도 스키마를 사용합니다. AdventureWorks db
CoderHawk

5

개인적으로 저는 Fanö Bedingung열렬한 팬입니다. 여기서 이름은 다른 유효한 이름의 시작이 될 수 없습니다.

둘째, 두 이름 사이의 해밍 거리는 하나 이상의 다른 문자보다 낫습니다.

예, 그것은 사전 디지털 시대의 규칙이지만 인생을 더 쉽게 만듭니다.

그리고 세 번째 이름은 발음 할 수 있어야합니다. 그렇지 않으면 음성 인식이 실현 될 때 화를 낼 것입니다.


2
음성 인식이 실현되면 어쨌든 화를 낼 것입니다. :-)
Beth Whitezel

텔레 톤 지원을하는 경우에만
bernd_k

1
음성 인식이 나면 트럭 운전사가 될 것입니다. 그 또는 미친 은둔.
mrdenny

"Fano Bedingung"이 무엇인지 더 자세히 설명해 주시겠습니까?
Nick Chammas

1
@NickChammas 영어로 우리는 이것을 Shannon-Fano 코딩 이라고 생각 합니다.
Iain Samuel McLean Elder

2

나는 개인적 선호와 개발의 용이성으로 귀결되기 때문에 실제로 "최상의"명명 규칙이 있다는 것을 모른다. 내 충고는 명명 규칙을 선택하고 준수하는 것입니다. 밑줄로 단어를 구분하려면 모든 데이터베이스 개체에서 단어를 구분하십시오. camelCase를 사용하려면 모든 데이터베이스 오브젝트에서 사용하십시오.

우리 가게에서는 다음 규칙을 준수합니다.

우리는 단어를 밑줄로 분리하고 모든 소문자를 사용합니다.
테이블 이름은 dbo.person, dbo.invoice입니다.
다 대다 테이블 이름도 그 의미를 설명합니다 ( dbo.person_mm_address로 다 대다 관계가 매핑됨을 나타 내기 위해 mm 을 추가 함). 사용자 정의 저장 프로시 저는 객체와 수행중인 작업을 모두 설명합니다 : usp_person_select , usp_address_select_by_city 뷰와 함수는 저장 프로 시저와 동일한 규칙을 따릅니다 인덱스에는 테이블, 키 열 (순서대로) 및 클러스터 / 비 클러스터 표시가 포함됩니다. ix_person_last_name_first_name_nc

이것이 우리 가게에서 사용하는 것이므로 이러한 규칙이 귀하에게 적합하다는 것을 의미하지는 않습니다. 귀하와 귀하의 개발 팀이 유용하고 개발하기 쉽다고 동의 한 것을 선택하고, 귀하가 결정한 명명 규칙을 알고 사용하는 문화를 확립하십시오. 이 경우 데이터베이스에 생성 된 모든 객체에 대한 코드 검토가 포함됩니다. 시간이 지남에 따라 문서화 된 명명 규칙과 피어 코드 검토의 조합으로 인해 규칙과의 편차가 줄어 듭니다.

이 "답이없는"것이 어떤 식 으로든 도움이되기를 바랍니다.


2

나는 몇 년 전부터 이것에 만족하고 있습니다.

  • 테이블 이름 : 작은 대문자와 밑줄, 단수 {고객, 제품}
  • 다 대다 관계의 테이블 이름 : tablename1_tablename2 : {customer_product}
  • 뷰 : 끝에 작은 캡이 추가됨 v {customerv, productv, product_groupv}
  • 저장된 상품 : 테이블 이름 및 함수 {customer_select, customer_insert, customer_delete, customer_update}

저렴한 공유 호스팅 패키지가있는 경우 데이터베이스 관리자 사이트, da_users, da_questions와 같은 모든 객체 앞에 프로젝트 약어를 사용해야합니다.


product_groupv하지 product_group_v뷰 (당신은보기와 테이블이 disticntion 주장하는 경우)?
ypercubeᵀᴹ

@ypercube는 하나의 밑줄을 입력하기에는 너무 게으르고 입력 실수를 쉽게합니다. 밑줄을 사용할 때 단어를 더 쉽게 읽고 테이블에서 뷰를 분리하기 위해 v를 사용하고 v는 단어가 아니므로 밑줄을 사용하지 않습니다. 일치하지 않는 것처럼 보입니다. 그러나이 형식은 실용적입니다.
Uğur Gümüşhan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.