Чому стовпчики таблиць sqlite в базових даних починаються з «Z»?


10

Я дивився на таблицю sqlite, яку генерує Core Data, і помітив, що всі стовпці таблиць починаються з «Z». Я усвідомлюю, що це деталь реалізації, але мені було цікаво, чому це так, і якщо в цьому брало участь дизайнерське рішення. Хтось знає чи здогадується чому?

Ось зразок схеми виводу бази даних Core Data sqlite:

sqlite> .schema
СТВОРИТИ ТАБЛИЦЮ ZPOST (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZPOSTID INTEGER, ZUSER INTEGER, ZCREATEDAT TIMESTAMP, ZTEXT VARCHAR);
СТВОРИТИ ТАБЛИЧНИЙ ЗУСЕР (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZUSERID INTEGER, ZAVATARIMAGEURLSTRING VARCHAR, ZUSERNAME VARCHAR);
СТВОРИТИ ТАБЛИЦУ Z_METADATA (Z_VERSION INTEGER PRIMARY KEY, Z_UUID VARCHAR (255), Z_PLIST BLOB);
СТВОРИТИ ТАБЛИЦУ Z_PRIMARYKEY (Z_ENT INTEGER PRIMARY KEY, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER);

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

Можливо, щоб їх було легко помітити. Apple цілком зрозуміло, що ніколи не слід редагувати таблиці Core Data, окрім основних даних. Тоді має сенс вибрати якийсь незвичайний префікс для всіх таблиць Core Data, щоб було легко визначити, дивлячись на таблицю Core Data.
Калеб

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

@Philipp може мати крапку, хоча я сміявся з початкової пропозиції. У SAP ви додаєте Z до користувацької таблиці, щоб уникнути зіткнень із внутрішніми таблицями SAP. Це ж може відбуватися і тут: CoreData додає Z на передню частину таблиць, створених для ваших організацій, щоб переконатися, що немає зіткнень таблиці з будь-якими її внутрішніми деталями.
jmstone

1
У моїй локальній базі даних розробників я префіксую тестувальні таблиці з Z, так що вони в алфавітному порядку відсортовані до нижньої частини списку. Полегшує їх бачити разом і видаляти їх, коли закінчу.
mike30

Відповіді:


9

Це умовне позначення, вибране для використання в Core Data SQLite.

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

Нарешті, за допомогою Z та всіх заголовків таблиці Core Data простіше помітити та викликує об'єкти сутності. В одному з коментарів у запитанні Майк зазначив, що він також називає свої таблиці az, щоб вони сортували дно. Це також могло бути врахуванням.


1
Ви просто спекулюєте на підставі чужих пропозицій чи у вас є фактичне джерело того, чому Apple обрала цю конвенцію? Це досить надуманий аргумент, оскільки це могло бути префіксом, наприклад, "ENTITY_". Або якщо Apple потребує внутрішніх таємних таблиць, вони можуть бути префіксованими Z і таблиці користувачів можуть бути названі нормально. ОП запитала ЧОМУ, і я досі не бачу фактичної причини.
Метт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.