Perché le colonne della tabella sqlite di Core Data iniziano con 'Z'?


10

Stavo guardando la tabella sqlite generata da Core Data e ho notato che tutte le colonne della tabella iniziano con 'Z'. Mi rendo conto che si tratta di un dettaglio di implementazione, ma ero curioso di sapere perché sia ​​così e se ci fosse una decisione di progettazione in questo. Qualcuno capisce o indovina perché?

Ecco un esempio di output dello schema del database sqlite Core Data:

sqlite> .schema
CREA TABELLA 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);

Non ho davvero idea del motivo in questo caso specifico, ma non è raro che le tabelle del database che servono uno scopo comune siano precedute da un prefisso speciale per un facile riferimento ed evitare la collisione di altre tabelle (ad es. Utente e zUser).
NoChance,

Forse in modo che siano facili da individuare. Apple è molto chiara sul fatto che non dovresti mai modificare le tabelle dei dati principali con qualcosa di diverso dai dati principali. Ha senso quindi scegliere un prefisso insolito per tutte le tabelle di dati di base in modo che sia facile capire quando si guarda una tabella di dati di base.
Caleb,

1
Forse è stato progettato da un ex consulente SAP?
Philipp,

@Philipp potrebbe avere ragione, anche se ho riso del suggerimento iniziale. In SAP, si aggiunge Z a una tabella personalizzata per garantire l'assenza di collisioni con le tabelle interne SAP. Lo stesso potrebbe succedere qui: CoreData aggiunge una Z nella parte anteriore delle tabelle create per le entità per garantire che non vi siano collisioni tra tabelle con qualsiasi elemento interno.
jmstone,

1
Nel mio database di sviluppo locale ho il prefisso delle tabelle di test con una Z in modo che siano ordinate alfabeticamente in fondo all'elenco. Rende più facile vederli insieme ed eliminarli quando ho finito.
mike30,

Risposte:


9

È la convenzione di denominazione scelta per essere utilizzata in Core Data SQLite.

Ci sono diverse ragioni per cui è stato scelto. Uno dei motivi principali è che Z è una delle lettere dell'alfabeto meno utilizzate, quindi sicuramente si sono sentite pre-riparando i nomi delle tabelle e i nomi delle entità con Z, aprendo più opzioni per gli sviluppatori di nominare le proprie tabelle con meno possibilità di calpestare qualcuno convenzioni di denominazione già.

Infine, usando Z e tutti i limiti, le tabelle dei dati principali sono più facili da individuare e richiamano gli oggetti entità. In un commento nella domanda Mike ha menzionato che nomina anche i suoi tavoli con az in modo che ordinino il fondo. Potrebbe anche essere stata una considerazione.


1
Stai solo ipotizzando sulla base dei suggerimenti degli altri o hai una vera fonte sul perché Apple abbia scelto questa convenzione? È un argomento piuttosto fragile in quanto avrebbe potuto essere preceduto, ad esempio, "ENTITY_". Oppure, se Apple ha bisogno di tabelle interne segrete, quelle potrebbero essere precedute da Z e le tabelle utente possono essere nominate normalmente. L'OP ha chiesto PERCHÉ e ancora non vedo un motivo reale.
Matt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.