내가하는 방법은 다음과 같습니다.
- 표 이름 (예를 들어, 단수의 소문자, 개별 단어 사용의 밑줄이고,이다
foo
,foo_bar
등 - 나는 일반적으로 (항상 그런 것은 아니지만) 자동 증분 PK를 가지고 있습니다. : 나는 다음과 같은 규칙을 사용
tablename_id
(예를 들어foo_id
,foo_bar_id
등). - 테이블에 외래 키 인 열이 포함되어 있으면 테이블의 출처가 무엇이든 해당 키의 열 이름을 복사합니다. 예를 들어 테이블
foo_bar
에 FK가 있습니다foo_id
(여기서foo_id
PK는foo
). - 참조 무결성을 강화하기 위해 FK를 정의 할 때 다음을 사용합니다
tablename_fk_columnname
(예 : 추가 예 3foo_bar_foo_id
). 이것은 테이블 이름 / 열 이름 조합이므로 데이터베이스 내에서 고유해야합니다. - PK, FK, 나머지 열을 알파벳순으로 정렬합니다.
더 나은 표준 방법이 있습니까?
답변
나는 가장 먼저 말하고 싶습니다 : 일관성이 있어야합니다.
나는 당신이 당신의 질문에 요약 한 규칙으로 거의 거기에 있다고 생각합니다. 그러나 몇 가지 의견 :
포인트 1과 2는 좋았습니다.
포인트 3-슬프게도 이것이 항상 가능한 것은 아닙니다. foo_bar
열이 foo_id
있고 테이블 열 another_foo_id
을 참조 하는 단일 테이블에 어떻게 대처할 것인지 생각해보십시오 . 이것을 다루는 방법을 고려할 수도 있습니다. 이것은 약간의 코너 케이스입니다!foo
foo_id
포인트 4-포인트 3과 유사합니다. 외래 키 이름 끝에 숫자를 도입하여 둘 이상의 참조 열을 가질 수 있습니다.
포인트 5-나는 이것을 피할 것입니다. 그것은 당신에게 거의 제공하지 않으며 나중에 테이블에서 열을 추가하거나 제거하려고 할 때 두통이 될 것입니다.
다른 요점은 다음과 같습니다.
인덱스 명명 규칙
인덱스 이름 지정 규칙을 도입 할 수도 있습니다. 이는 수행하려는 데이터베이스 메타 데이터 작업에 큰 도움이됩니다. 예를 들어 인덱스를 호출 foo_bar_idx1
하거나 foo_idx1
전적으로 자신에게 달려 있지만 고려할 가치가 있습니다.
단수 대 복수 열 이름
테이블 이름뿐만 아니라 열 이름에서 복수 대 단일의 가시적 인 문제를 해결하는 것이 좋습니다. 이 주제는 종종 DB 커뮤니티에서 큰 논쟁 을 일으 킵니다 . 테이블 이름과 열 모두에 대해 단일 형식을 고수합니다. 그곳에. 내가 말했어
여기서 가장 중요한 것은 물론 일관성입니다!
답변
일관성은 모든 명명 표준의 핵심입니다. 논리적이고 일관성있는 한 99 %가 있습니다.
표준 자체는 개인 취향이 매우 뛰어나므로 표준이 마음에 들면 표준으로 실행하십시오.
귀하의 질문에 대답하기 위해-아니오, MySQL에는 선호하는 명명 규칙 / 표준이 없으므로 자신을 굴리는 것이 좋습니다 (그리고 논리적으로 보입니다).
답변
MySQL에는 다소 엄격한 규칙에 대한 간단한 설명이 있습니다.
https://dev.mysql.com/doc/internals/en/coding-style.html
Simon Holywell의 MySQL에 대한 가장 일반적인 코딩 스타일 :
이 질문을 참조하십시오 :
SQL에 대해 게시 된 코딩 스타일 지침이 있습니까?
답변
고맙게도 PHP 개발자는 내가 알고있는 일부 개발 커뮤니티와 같이 “낙타 사건의 큰 부분”이 아닙니다.
컨벤션은 괜찮습니다.
그들이 a) 단순하고 b) 일관성있는 한 문제가 없습니다. 🙂
추신 : 개인적으로, 나는 5) 과잉이라고 생각합니다 …
답변
간단한 답변 : NO
글쎄, 적어도 오라클이나 커뮤니티가 권장하는 명명 규칙은 아니지만 기본적으로 MySQL 설명서에 표시된 것과 같이 식별자에 대한 규칙과 제한을 숙지해야합니다 : https://dev.mysql.com /doc/refman/8.0/en/identifiers.html
당신이 따르는 명명 규칙에 관해서는, 그것은 괜찮습니다. 숫자 5는 약간 불필요합니다. 데이터베이스 관리를위한 대부분의 시각적 도구는 열 이름을 정렬하는 옵션을 제공한다고 생각합니다 (DBeaver를 사용하고 있습니다). purpouse가 테이블을 시각적으로 멋지게 표현하고 있다면이 옵션을 사용할 수 있습니다.
개인적인 경험으로, 나는 이것을 추천 할 것입니다 :
- 소문자를 사용하십시오 . 이것은 데이터베이스를 한 서버에서 다른 서버로 마이그레이션 할 때 거의 상호 운용성을 보장합니다. 때로는
lower_case_table_names
올바르게 구성되어 있지 않고 단순히 camelCase 또는 PascalCase 표준 (대소 문자 구분 문제)을 인식하지 못해 서버에서 오류가 발생하기 시작합니다. - 짧은 이름 . 간단하고 명확합니다. 가장 쉽고 빠른 것은 테이블이나 열을 더 잘 식별하는 것입니다. 짧은 시간에 많은 다른 쿼리를 만들 때 모든 것을 간단하게 작성하고 읽는 것이 좋습니다.
- 접두사를 피하십시오 . 다른 응용 프로그램의 테이블에 동일한 데이터베이스를 사용하지 않는 한 접두사를 사용하지 마십시오. 이렇게하면 검색어에 더 자세한 정보 만 추가됩니다. 예를 들어 기본 키와 외래 키를 식별하려는 경우 일반적으로 테이블 이름이 id 열의 접두사로 사용되는 경우에 유용 할 수 있습니다.
- 단어를 구분하려면 밑줄을 사용하십시오 . 당신은 여전히 밑줄을 사용하는 등 테이블, 열을 명명에 대해 두 개 이상의 단어를 사용하려면 separating_the_words ,이 (당신을 감사하고 당신의 눈과 스트레스를 뇌가 예정) 가독성을 위해 도움이됩니다.
- 일관성을 유지하십시오 . 자신의 표준을 갖추었다면 따르십시오. 규칙을 만드는 사람이되지 말고 규칙을 어기는 사람은 부끄러운 일입니다.
“Plural vs Singular”이름은 어떻습니까? 자, 이것은 대부분 개인 취향의 상황입니다. 필자의 경우 테이블을 요소 컬렉션 또는 패키지 containsig 요소로 생각하기 때문에 복수 이름을 사용하려고 시도하므로 복수 이름이 의미가 있습니다. 열을 해당 테이블 요소에 대해 개별적으로 설명하는 속성으로 볼 수 있으므로 열의 단수 이름입니다.
답변
