Core Data sqlite 테이블 열이 왜 'Z'로 시작합니까?


10

Core Data가 생성하는 sqlite 테이블을보고 모든 테이블 열이 'Z'로 시작하는 것을 알았습니다. 나는 이것이 구현 세부 사항이라는 것을 알고 있지만 이것이 왜 그런지, 그리고 이와 관련된 디자인 결정이 있는지 궁금합니다. 왜 그런지 아는 사람이 있습니까?

다음은 Core Data sqlite 데이터베이스의 샘플 스키마 출력입니다.

sqlite> .schema
테이블 ZPOST 작성 (Z_PK 정수 기본 키, Z_ENT 정수, Z_OPT 정수, ZPOSTID 정수, ZUSER 정수, ZCREATEDAT 타임 스탬프, ZTEXT VARCHAR);
테이블 ZUSER 작성 (Z_PK 정수 기본 키, Z_ENT 정수, Z_OPT 정수, ZUSERID 정수, ZAVATARIMAGEURLSTRING VARCHAR, ZUSERNAME VARCHAR);
테이블 Z_METADATA 작성 (Z_VERSION 정수 정수 키, Z_UUID VARCHAR (255), Z_PLIST BLOB);
CREATE TABLE Z_PRIMARYKEY (Z_ENT 정수 기본 키, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER);

나는이 특정한 경우에 그 이유에 대해 전혀 모른다. 그러나 공통의 목적을 제공하는 데이터베이스 테이블이 쉽게 참조 할 수 있도록 특별한 접두어를 접두어로 붙이고 다른 테이블 (예 : user 및 zUser)의 충돌을 피하는 것은 드문 일이 아니다.
NoChance

아마 쉽게 알아볼 수 있습니다. Apple은 Core Data 이외의 다른 것으로 Core Data 테이블을 편집해서는 안된다는 것을 분명히 알고 있습니다. 그런 다음 모든 Core Data 테이블에 대해 특이한 접두사를 선택하면 Core Data 테이블을 볼 때 쉽게 알 수 있습니다.
Caleb

1
아마도 이전 SAP 컨설턴트가 설계했을까요?
Philipp

@Philipp은 초기 제안을 비웃었지만 요점이있을 수 있습니다. SAP에서는 SAP 내부 테이블과 충돌하지 않도록 Z를 사용자 정의 테이블에 추가합니다. CoreData는 엔티티에 대해 작성된 테이블 앞에 Z를 추가하여 내부 항목과 테이블 충돌이 없는지 확인합니다.
jmstone

1
내 로컬 dev 데이터베이스에서 테스트 테이블 앞에 Z를 붙여서 목록의 맨 아래에 알파벳순으로 정렬합니다. 완료되면 더 쉽게 함께보고 삭제할 수 있습니다.
mike30

답변:


9

Core Data SQLite에서 사용하도록 선택된 명명 규칙입니다.

그것이 선택된 몇 가지 이유가 있습니다. 주된 이유 중 하나는 Z가 알파벳의 가장 적게 사용 된 문자 중 하나이므로 Z로 테이블 이름과 엔티티 이름을 미리 고정하여 느꼈을 것입니다. 명명 규칙이 이미 있습니다.

마지막으로 Z와 모든 상한값을 사용하면 핵심 데이터 테이블을 더 쉽게 식별하고 엔티티 객체를 호출 할 수 있습니다. 질문에 대한 한 의견에서 Mike는 자신의 테이블 이름을 az로 지정하여 바닥을 정렬한다고 언급했습니다. 이것은 또한 고려되었을 수도 있습니다.


1
다른 사람들의 제안에 근거하여 추측 하고 있습니까? 아니면 Apple이이 협약을 선택한 이유에 대한 실제 자료가 있습니까? 예를 들어 "ENTITY_"라는 접두사가 붙을 수 있기 때문에 매우 어설픈 인수입니다. 애플은 내부 비밀 테이블에 대한 필요가있는 경우 또는, 사람들은 Z로 시작 할 수 있으며, 사용자 테이블은 일반적으로 이름을 지정할 수 있습니다. OP가 WHY에 요청했지만 여전히 실제 이유를 알 수 없습니다.
Matt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.