Warum beginnen Core Data-SQLite-Tabellenspalten mit 'Z'?


10

Ich habe mir die SQLite-Tabelle angesehen, die Core Data generiert, und festgestellt, dass alle Tabellenspalten mit 'Z' beginnen. Mir ist klar, dass dies ein Implementierungsdetail ist, aber ich war gespannt, warum dies der Fall ist und ob dies mit einer Entwurfsentscheidung verbunden ist. Weiß jemand zufällig oder errät warum?

Hier ist eine Beispielschemaausgabe der Core Data SQLite-Datenbank:

sqlite> .schema
TABELLE ERSTELLEN ZPOST (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZPOSTID INTEGER, ZUSER INTEGER, ZCREATEDAT TIMESTAMP, ZTEXT VARCHAR);
TABELLE ZUSER ERSTELLEN (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);
TABELLE ERSTELLEN Z_PRIMARYKEY (Z_ENT INTEGER PRIMARY KEY, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER);

Ich habe wirklich keine Ahnung über den Grund in diesem speziellen Fall, aber es ist nicht ungewöhnlich, dass Datenbanktabellen, die einem gemeinsamen Zweck dienen, ein spezielles Präfix vorangestellt werden, um eine einfache Referenz zu ermöglichen und eine Kollision anderer Tabellen (z. B. Benutzer und zUser) zu vermeiden.
NoChance

Möglicherweise, damit sie leicht zu erkennen sind. Apple ist sich sehr sicher, dass Sie Core Data-Tabellen niemals mit etwas anderem als Core Data bearbeiten sollten. Es ist dann sinnvoll, ein ungewöhnliches Präfix für alle Core Data-Tabellen zu wählen, damit Sie leicht erkennen können, wenn Sie sich eine Core Data-Tabelle ansehen.
Caleb

1
Vielleicht wurde es von einem ehemaligen SAP-Berater entworfen?
Philipp

@Philipp mag einen Punkt haben, obwohl ich über den ersten Vorschlag gelacht habe. In SAP fügen Sie einer benutzerdefinierten Tabelle Z hinzu, um sicherzustellen, dass keine Kollisionen mit internen SAP-Tabellen auftreten. Dies kann auch hier der Fall sein: CoreData fügt der Vorderseite der für Ihre Entitäten erstellten Tabellen ein Z hinzu, um sicherzustellen, dass keine Tabellenkollisionen mit internen Elementen auftreten.
JMstone

1
In meiner lokalen Entwicklerdatenbank stelle ich Testtabellen ein Z voran, damit sie alphabetisch am Ende der Liste sortiert sind. Erleichtert das gemeinsame Anzeigen und Löschen, wenn ich fertig bin.
Mike30

Antworten:


9

Dies ist die Namenskonvention, die für die Verwendung in Core Data SQLite ausgewählt wurde.

Es gibt mehrere Gründe, warum es gewählt wurde. Einer der Hauptgründe ist, dass Z einer der am wenigsten verwendeten Buchstaben des Alphabets ist. Durch das Vorfixieren von Tabellennamen und Entitätsnamen mit Z haben sie sicherlich mehr Möglichkeiten für Entwickler, ihre eigenen Tabellen zu benennen, wobei die Wahrscheinlichkeit geringer ist, auf jemanden zu stampfen Namenskonventionen bereits.

Durch die Verwendung von Z und allen Großbuchstaben sind die Kerndatentabellen leichter zu erkennen und rufen die Entitätsobjekte auf. In einem Kommentar in der Frage erwähnte Mike, dass er seine Tabellen auch mit az benennt, damit sie den Boden sortieren. Dies könnte auch eine Überlegung gewesen sein.


1
Spekulieren Sie nur auf Vorschlag anderer oder haben Sie eine tatsächliche Quelle, warum Apple diese Konvention gewählt hat? Es ist ein ziemlich schwaches Argument, da es beispielsweise mit "ENTITY_" vorangestellt werden könnte. Wenn Apple interne, geheime Tabellen benötigt, kann diesen ein Z vorangestellt werden, und Benutzertabellen können normal benannt werden. Das OP hat gefragt, warum und ich sehe immer noch keinen tatsächlichen Grund.
Matt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.