Почему столбцы таблицы Core Data sqlite начинаются с 'Z'?


10

Я посмотрел на таблицу sqlite, которую генерируют Core Data, и заметил, что все столбцы таблицы начинаются с «Z». Я понимаю, что это деталь реализации, но мне было любопытно узнать, почему это так, и было ли в этом решение по проекту. Кто-нибудь случайно знает или догадывается, почему?

Вот пример выходных данных схемы базы данных Core Data sqlite:

sqlite> .schema
CREATE TABLE ZPOST (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZPOSTID INTEGER, ZUSER INTEGER, ZCREATEDAT TIMESTAMP, ZTEXT VARCHAR);
CREATE TABLE ZUSER (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZUSERID INTEGER, ZAVATARIMAGEURLSTRING VARCHAR, ZUSERNAME VARCHAR);
CREATE TABLE Z_METADATA (Z_VERSION INTEGER PRIMARY KEY, Z_UUID VARCHAR (255), Z_PLIST BLOB);
CREATE TABLE Z_PRIMARYKEY (Z_ENT INTEGER PRIMARY KEY, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER);

Я действительно понятия не имею о причине в этом конкретном случае, но весьма часто для таблиц базы данных, служащих общей цели, ставится префикс со специальным префиксом для удобства ссылок и во избежание коллизии других таблиц (например, user и zUser).
NoChance

Возможно, чтобы их было легко заметить. Apple совершенно ясно, что вы никогда не должны редактировать таблицы базовых данных с помощью чего-либо, кроме базовых данных. Тогда имеет смысл выбрать какой-то необычный префикс для всех таблиц базовых данных, чтобы было легко понять, когда вы смотрите на таблицу базовых данных.
Калеб

1
Может быть, он был разработан бывшим консультантом SAP?
Филипп

@ Филипп может иметь смысл, хотя я смеялся над первоначальным предложением. В SAP вы добавляете Z в пользовательскую таблицу, чтобы избежать коллизий с внутренними таблицами SAP. То же самое может происходить и здесь: CoreData добавляет Z в начало таблиц, созданных для ваших сущностей, чтобы гарантировать отсутствие столкновений таблиц ни с одним из его внутренних компонентов.
jmstone

1
В моей локальной базе данных разработчиков я ставлю таблицы тестирования с префиксом Z, чтобы они были отсортированы в алфавитном порядке внизу списка. Облегчает видеть их вместе и удалять, когда я закончу.
mike30

Ответы:


9

Это соглашение об именовании, выбранное для использования в Core Data SQLite.

Есть несколько причин, почему он был выбран. Одной из основных причин является то, что Z - одна из наименее используемых букв алфавита, поэтому они наверняка почувствовали, что предварительно фиксировав имена таблиц и имена сущностей с помощью Z, они открывают больше возможностей для разработчиков по именованию своих собственных таблиц с меньшим количеством шансов на кого-то нажимать соглашения об именах уже.

Наконец, используя Z и все заглавные буквы, таблицы базовых данных легче обнаружить и вызвать объекты сущностей. В одном из комментариев к вопросу Майк упомянул, что он также называет свои таблицы буквой az, чтобы они сортировали дно. Это также могло бы быть соображением.


1
Вы просто размышляете, основываясь на предположении других, или у вас есть реальный источник того, почему Apple выбрала это соглашение? Это довольно слабый аргумент, так как он мог бы иметь префикс, например, «ENTITY_». Или, если у Apple есть потребность во внутренних, секретных таблицах, они могут иметь префикс Z и пользовательские таблицы могут называться как обычно. ОП спросила ПОЧЕМУ, а я до сих пор не вижу фактической причины.
Мэтт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.