Pourquoi les colonnes de la table sqlite Core Data commencent-elles par «Z»?


10

Je regardais la table sqlite que Core Data génère et j'ai remarqué que toutes les colonnes de la table commencent par «Z». Je me rends compte que c'est un détail d'implémentation, mais j'étais curieux de savoir pourquoi c'est le cas et s'il y avait une décision de conception impliquée dans cela. Quelqu'un sait ou devine pourquoi?

Voici un exemple de sortie de schéma de la base de données sqlite Core Data:

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

Je n'ai vraiment aucune idée de la raison dans ce cas spécifique, mais il n'est pas rare que des tables de base de données ayant un objectif commun soient préfixées avec un préfixe spécial pour une référence facile et pour éviter la collision d'autres tables (par exemple, utilisateur et zUser).
NoChance

Peut-être pour qu'ils soient faciles à repérer. Apple est très clair que vous ne devez jamais modifier les tableaux Core Data avec autre chose que Core Data. Il est donc logique de choisir un préfixe inhabituel pour toutes les tables Core Data afin qu'il soit facile de le savoir lorsque vous consultez une table Core Data.
Caleb

1
Peut-être qu'il a été conçu par un ancien consultant SAP?
Philipp

@Philipp a peut-être raison, même si j'ai ri de la suggestion initiale. Dans SAP, vous ajoutez Z à une table personnalisée pour éviter toute collision avec les tables internes SAP. La même chose peut se produire ici: CoreData ajoute un Z au début des tables créées pour vos entités pour garantir qu'il n'y a pas de collision de table avec ses éléments internes.
jmstone

1
Dans ma base de données de développement locale, je préfixe les tables de test avec un Z afin qu'elles soient triées par ordre alphabétique au bas de la liste. Il est plus facile de les voir ensemble et de les supprimer lorsque j'ai terminé.
mike30

Réponses:


9

Il s'agit de la convention de dénomination choisie pour être utilisée dans Core Data SQLite.

Il y a plusieurs raisons pour lesquelles il a été choisi. L'une des principales raisons est que Z est l'une des lettres de l'alphabet les moins utilisées, donc ils ont sûrement ressenti en préfixant les noms de table et les noms d'entité avec Z.Ils ouvrent plus d'options aux développeurs pour nommer leurs propres tables avec moins de chances de piétiner quelqu'un. conventions de dénomination déjà.

Enfin, en utilisant Z et toutes les majuscules, les tables Core Data sont plus faciles à repérer et appellent les objets d'entité. Dans un commentaire de la question, Mike a mentionné qu'il nommait également ses tables avec az afin de trier le bas. Cela aurait également pu être un facteur à considérer.


1
Êtes-vous simplement en train de spéculer sur la base de la suggestion des autres ou avez-vous une source réelle pour expliquer pourquoi Apple a choisi cette convention? C'est un argument assez fragile car il aurait pu être préfixé avec, par exemple, "ENTITY_". Ou, si Apple a besoin de tables internes secrètes, celles-ci peuvent être préfixées avec Z et les tables utilisateur peuvent être nommées normalement. L'OP a demandé POURQUOI et je ne vois toujours pas de raison réelle.
Matt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.