데이터베이스, 컬렉션, 필드 이름과 같은 MongoDB entitites에 대해 선호하는 명명 규칙이 있습니까?
나는이 라인을 따라 생각하고 있었다 :
- 데이터베이스 : 목적 (단어로 된 단어)으로 구성되고 “db”로 끝납니다. 모두 소문자 : imagedb, resumedb, memberdb 등
- 컬렉션 : 소문자로 된 복수형 : 이미지, 이력서,
- 문서 필드 : lowerCamelCase (예 : memberFirstName, fileName 등)
답변
-
요약 : 작은 객체의 저장소 최적화 , SERVER-863 . 바보지만 사실입니다.
-
관계 데이터베이스에 적용되는 규칙과 거의 동일한 규칙이 여기에 적용되어야한다고 생각합니다. 그리고 수십 년이 지난 후에도 RDBMS 테이블을 단수 또는 복수로 명명해야하는지에 대한 합의는 여전히 없습니다
-
MongoDB는 JavaScript를 사용하므로 camelCase의 JS 이름 지정 규칙을 사용하십시오.
-
MongoDB 공식 문서에는 밑줄을 사용할 수 있다고 언급되어 있으며 내장 식별자도 지정되어 있습니다
_id
(그러나 이것은_id
개인용, 내부 용, 절대로 표시되거나 편집되지 않음 을 나타냅니다) .
답변
데이터 베이스
- 낙타
- 이름 끝에 DB 추가
- 단수하다 (모음은 복수형이다)
MongoDB는 좋은 예를 말합니다.
사용할 데이터베이스를 선택하려면 mongo 쉘에서 다음 예제와 같이 use <db> 문을 발행하십시오.
myDB
사용 myNewDB 사용
https://docs.mongodb.com/manual/core/databases-and-collections/#databases의 콘텐츠
컬렉션
소문자 이름 : 대소 문자 구분 문제를 피하고 MongoDB 모음 이름은 대소 문자를 구분합니다.
복수형 : 복수의 대상으로 된 콜렉션을 레이블링하는 것이 더 분명합니다 (예 : “파일”이 아닌 “파일”).
> 단어 구분 기호 없음 : 다른 사람이 잘못 단어를 구분하는 문제 (사용자 이름 <-> user_name, first_name <->
이름)를 피하십시오. 이것은
주변 의 몇몇 사람들에 의한 토론에 대한 것이지만, 주장이 컬렉션 이름과 분리되어 있다고 주장한다면 반드시 그렇게 생각해서는 안됩니다.;)
밑줄이나
낙타 를 추가하여 컬렉션 이름 의 가독성을 향상시키는 경우 name이 (가) 너무 길거나
컬렉션
분류 의 표준 인 기간을 적절하게 사용해야 합니다 .더 자세한 컬렉션을위한 점 표기법 : 컬렉션이 어떻게 관련되어 있는지에 대한 정보를 제공합니다. 예를 들어, 스키마를 디자인 한 사람들이 제대로 작업했다면 “users”를 삭제 한 경우 “users.pagevisits”를 삭제할 수 있다는 것을 합리적으로 확신 할 수 있습니다.
http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html의 내용
컬렉션의 경우 공식 MongoDB 설명서를 찾을 때까지 이러한 제안 패턴을 따르고 있습니다.
답변
이에 대한 규칙이 지정되지 않더라도 일대일 관계에 대해 수동 참조 는 Mongo 문서에서 참조 된 콜렉션의 이름을 일관되게 지정합니다. 이름은 항상 구조를 따릅니다 <document>_id
.
예를 들어 dogs
컬렉션에서 문서는 다음과 같은 외부 문서에 대한 수동 참조를 갖습니다.
{
name: 'fido',
owner_id: '5358e4249611f4a65e3068ab',
race_id: '5358ee549611f4a65e3068ac',
colour: 'yellow'
...
}
이것은 _id
모든 문서의 식별자를 명명하는 Mongo 규칙을 따릅니다 .
답변
수집을위한 명명 규칙
컬렉션 이름을 지정하기 위해 몇 가지 예방 조치를 취해야합니다.
- 빈 문자열 (“”)이있는 컬렉션은 유효한 컬렉션 이름이 아닙니다.
- 콜렉션 이름의 끝을 정의하므로 콜렉션 이름에는 널 문자가 포함되지 않아야합니다.
- 컬렉션 이름은 접두사 “system”으로 시작해서는 안됩니다. 내부 컬렉션 용으로 예약되어 있습니다.
-
데이터베이스에 사용할 수있는 다양한 드라이버가 컬렉션 이름에서 “$”를 지원하지 않으므로 컬렉션 이름에 “$”문자를 포함하지 않는 것이 좋습니다.
데이터베이스 이름을 만들 때 명심해야 할 사항은 다음과 같습니다.
- 빈 문자열 (“”)이있는 데이터베이스는 유효한 데이터베이스 이름이 아닙니다.
- 데이터베이스 이름은 64 바이트를 초과 할 수 없습니다.
- 데이터베이스 이름은 대소 문자를 구분하지 않는 파일 시스템에서도 대소 문자를 구분합니다. 따라서 이름을 소문자로 유지하는 것이 좋습니다.
- 데이터베이스 이름에는 이러한 문자“/, \,.,“, *, <,>, :, |,?, $,”를 사용할 수 없습니다. 단일 공백이나 널 문자도 포함 할 수 없습니다.
자세한 내용은. 아래 링크를 확인하십시오 : http://www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html
답변
나는 그것이 개인적인 취향이라고 생각합니다. 내가 선호하는 것은 SQL Server와 함께 .NET에서 NHibernate를 사용하는 것이므로 다른 사람들이 사용하는 것과 다를 수 있습니다.
- 데이터베이스 : 사용중인 응용 프로그램. 예 : Stackoverflow
- 컬렉션 : 단수의 이름, 컬렉션이 될 것, 예 : 질문
- 문서 필드, 예 : MemberFirstName
솔직히 말해서 프로젝트에 일관된 한 너무 중요하지 않습니다. 그냥 일하고 세부 사항을 땀 흘리지 마십시오 : P
답변
SERVER-863 을 얻을 때까지 이 필드 이름을 가능한 짧게 유지 특히 레코드가 많은 경우에 좋습니다.
사용 사례에 따라 필드 이름이 스토리지에 큰 영향을 줄 수 있습니다. 캔 트는 이것이 모든 사용자에게 긍정적 인 영향을 미치기 때문에 이것이 왜 MongoDb에 우선 순위가 높지 않은지 이해합니다. 다른 것이 없다면 대역폭과 스토리지 비용에 대해 두 번 생각하지 않고 필드 이름을 더 잘 설명 할 수 있습니다.
제발 투표 .