programing

MySQL 명명 규칙이 있습니까?

kingscode 2022. 12. 28. 22:07
반응형

MySQL 명명 규칙이 있습니까?

방법은 다음과 같습니다.

  1. 하고 밑줄을 테테블이 table table table table table((((((((((((((((((((((((((((((((((((((( table table table table table table table table 。foo,foo_bar 등등.
  2. 일반적으로 (항상) PK가 자동으로 증가하지는 않습니다.이런 관례를 사용합니다.tablename_idfoo_id,foo_bar_id등 ) 。
  3. 테이블에 외부 키 열이 포함되어 있는 경우 해당 키의 열 이름을 테이블에서 복사하기만 하면 됩니다.를 들어 '테이블 이 이 이 이 이 이 이 이 이 이 이 이 for for for for for foo_bar FK가 foo_id서 (어디서)foo_id PK の 。foo를 참조해 주세요.
  4. 무결성을 강제하기 FK를 항목을 사용합니다.tablename_fk_columnname 추가 예 (예: 3),foo_bar_foo_id테이블명/컬럼명의 조합이므로 데이터베이스 내에서 일의임을 보증합니다.
  5. PK, FK, 나머지 열을 알파벳 순으로 정렬합니다.

더 나은 표준적인 방법이 있을까요?

나는 무엇보다도 일관성이 있다고 말하고 싶다.

나는 당신이 질문에서 개략적으로 설명한 규약에 거의 도달했다고 생각합니다.단, 몇 가지 코멘트:

1번과 2번이 좋은 것 같아요.

포인트 3 - 슬프게도 이것이 항상 가능한 것은 아닙니다.해 보세요.foo_barfoo_id ★★★★★★★★★★★★★★★★★」another_foo_id 다 '먹다'를 .foo '''foo_id 좋을지 해 보는 게 .이 문제를 어떻게 처리해야 할지 고려해 보는 게 좋을 것 같아요.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★!

점 4 - 점 3과 유사합니다.외부 키 이름 끝에 번호를 입력하여 참조 열을 여러 개 가질 수 있습니다.

Point 5 - 나는 이것을 피하고 싶다.이 기능은 거의 제공되지 않으며 나중에 테이블에 열을 추가하거나 테이블에서 열을 제거할 때 골칫거리가 됩니다.

기타 몇 가지 포인트는 다음과 같습니다.

인덱스 명명 규칙

인덱스에 대한 명명 규칙을 도입할 수 있습니다.이 규칙은 데이터베이스 메타데이터 작업을 수행하는 데 큰 도움이 됩니다.를 들어 .foo_bar_idx1 ★★★★★★★★★★★★★★★★★」foo_idx1해 볼 만합니다 - 고려해 볼 만합니다.

단수 열 이름과 복수 열 이름

컬럼 이름뿐만 아니라 테이블 이름에서도 복수 대 싱글이라는 까다로운 문제를 해결하는 것이 좋을 수 있습니다.이 주제는 종종 DB 커뮤니티에서 큰 논쟁을 일으킵니다.테이블 이름과 컬럼 모두에 대해 단수 형식을 사용합니다.저기, 내가 말했잖아요

여기서 가장 중요한 것은 당연히 일관성입니다!

모든 명명 기준의 핵심은 일관성입니다.논리적이고 일관성이 있는 한 99%의 성과를 얻을 수 있습니다.

기준 자체는 매우 개인적인 취향입니다.그러므로, 당신의 기준이 마음에 드신다면, 그것을 따르세요.

즉, MySQL에는 선호하는 명명 규칙/표준이 없기 때문에 자신의 명명 규칙을 롤링하는 것이 좋습니다(또한 논리적으로 보입니다).

MySQL에는 다소 엄격한 규칙에 대한 간단한 설명이 있습니다.

https://dev.mysql.com/doc/internals/en/coding-style.html

Simon Holywell의 MySQL에서 가장 일반적인 코딩 스타일:

http://www.sqlstyle.guide/

다음 질문도 참조하십시오.SQL에 대해 공개된 코딩 스타일의 가이드라인이 있습니까?

다행히 PHP 개발자들은 내가 아는 몇몇 개발 커뮤니티처럼 "Camel case bigots"가 아니다.

당신의 규약은 괜찮은 것 같네요.

a) 심플하고 b) 일관성이 있으면 문제 없습니다:)

PS: 개인적으로 5)은 과잉 살상이라고 생각합니다.

심플한 답변:

Oracle 또는 커뮤니티에서 권장하는 명명 규칙은 없습니다.단, 기본적으로 MySQL 문서에 나와 있는 규칙과 식별자 제한을 따라야 합니다.https://dev.mysql.com/doc/refman/8.0/en/identifiers.html

당신이 따르는 명명규칙에 대해서는 괜찮습니다만, 숫자 5는 조금 중요하지 않습니다.데이터베이스 관리를 위한 대부분의 비주얼 툴은 컬럼 이름을 정렬하는 옵션을 제공하고 있다고 생각합니다(DBeaver를 사용하고 있습니다).따라서 퍼바우스가 테이블을 보기 좋게 표시하고 있다면 이 옵션을 사용할 수 있습니다.

개인적인 경험을 통해 나는 다음과 같이 생각했을 것입니다.

  • 소문자를 사용합니다.이렇게 하면 데이터베이스를 서버 간에 마이그레이션할 때 상호 운용성이 거의 보장됩니다.때때로 그lower_case_table_names가 올바르게 설정되어 있지 않고, 서버가 camelCase 또는 PascalCase 표준을 인식하지 못하는 것만으로 에러를 발생시키기 시작합니다(대문자와 소문자를 구별하는 문제).
  • 짧은 이름.심플하고 명료하다.가장 쉽고 빠르게 테이블 또는 열을 식별하는 것이 좋습니다.단시간에 많은 다른 쿼리를 작성할 때는 모두 간단하게 쓰기(읽기) 할 수 있는 것이 좋습니다.
  • 프리픽스를 회피합니다.다른 응용 프로그램의 테이블에 동일한 데이터베이스를 사용하지 않는 한 접두사를 사용하지 마십시오.이렇게 하면 질의에 장황한 내용만 더해질 뿐입니다.예를 들어 프라이머리 키와 외부 키를 식별하는 경우 일반적으로 테이블 이름이 ID 열의 접두사로 사용되는 경우 등 이 방법이 유용할 수 있습니다.
  • 단어를 구분하려면 밑줄을 사용합니다.테이블이나 컬럼 등의 이름을 붙일 때 여러 단어를 사용하고 싶다면 _단어를 구분하기 위해 밑줄을 사용하세요.이것이 읽기 쉬움에 도움이 됩니다(눈과 스트레스를 받은 뇌가 고마워할 것입니다).
  • 일관성을 가지다.일단 당신만의 기준이 있다면, 그것을 따르세요.규칙을 만드는 사람이 되지 말고 규칙을 어기는 것은 부끄러운 일이다.

'복수 vs 싱귤러' 명명법은 어떨까요?음, 이건 대부분 개인적인 취향의 상황이에요.제 경우 테이블에는 여러 개의 이름을 사용하려고 합니다.왜냐하면 테이블이나 패키지에는 요소가 포함되어 있기 때문에 여러 개의 이름이 의미가 있고 컬럼에는 단수 이름이 있기 때문입니다.컬럼을 이들 테이블 요소에 대해 개별적으로 기술하는 속성으로 간주하기 때문입니다.

일관성은 모두가 강하게 제안하는 것입니다.그것이 효과가 있는 한, 나머지는 당신에게 달려 있습니다.

초보자라면 쉽게 흥분할 수 있기 때문에, 그 때는 원하는 대로 이름을 붙입니다.이것은 그 시점에서는 말이 되지만 나중에 골칫거리가 된다.

foo foobar또는foo_bar대단합니다.테이블 이름은 최대한 직선으로 붙이고 두 단어가 다른 경우에만 밑줄을 사용합니다. studentregistration로.student_registration

@Zbyszek의 말처럼, 간단한 것을 가지다id자동 검출에 충분한 양입니다.간단할수록 좋다.왜 필요한가?foo_id? 일찌감치 같은 문제가 있었습니다.모든 컬럼에 표 프레픽스를 붙였습니다.foo_id,foo_name,foo_agetablename을 삭제하고 col만 가능한 짧게 유지했습니다.

PK에는 ID만 사용하기 때문에foo_bar_fk(tablename은 일의이며, 그 뒤에 일의의 PK가 이어집니다)._fk)를 외부 키로서 사용합니다.추가하지 않습니다.id이름 'id'는 항상 지정된 테이블의 PK라고 하기 때문에 col 이름으로 이동합니다.그래서 우리는 단지 tablename과_fk마지막에.

의 경우 +)에 합니다.foobarUsernameFk(http_fk col' 'tftp_fk col').구조별로 .모든 이름 구조에 대한 문서를 보관하고 있습니다.

col name을 짧게 할 때는 RESTRICTED name도 주의해 주세요.

+------------------------------------+
|               foobar               |
+------------------------------------+
| id (PK for the current table)      |
| username_fk (PK of username table) |
| location (other column)            |
| tel (other column)                 |
+------------------------------------+

@paramrizio-param이 말한 바와 같이 소문자를 사용합니다.윈도에서는 mysql 데이터베이스(myadmin)를 내보내는 경우 테이블 이름이 소문자로 변환되어 모든 종류의 문제가 발생합니다.참조: MySQL의 테이블 이름은 대소문자를 구분합니까?

언급URL : https://stackoverflow.com/questions/7899200/is-there-a-naming-convention-for-mysql

반응형