Dlaczego kolumny tabeli danych bazowych Core Data zaczynają się od „Z”?

10

Patrzyłem na tabelę sqlite generowaną przez Core Data i zauważyłem, że wszystkie kolumny tabeli zaczynają się od „Z”. Zdaję sobie sprawę, że jest to szczegół implementacji, ale byłem ciekawy, dlaczego tak jest i czy w grę wchodziła decyzja projektowa. Ktoś wie lub zgaduje dlaczego?

Oto przykładowy schemat wyjściowy bazy danych sqlite Core Data:

sqlite> .schema
UTWÓRZ TABELĘ ZPOST (Z_PK INTEGER PODSTAWOWY KLUCZ, Z_ENT INTEGER, Z_OPT INTEGER, ZPOSTID INTEGER, ZUSER INTEGER, ZCREATEDAT TIMESTAMP, ZTEXT VARCHAR);
UTWÓRZ STÓŁ ZUSER (Z_PK INTEGER PODSTAWOWY KLUCZ, Z_ENT INTEGER, Z_OPT INTEGER, ZUSERID INTEGER, ZAVATARIMAGEURLSTRING VARCHAR, ZUSERNAME VARCHAR);
UTWÓRZ TABELĘ Z_METADANE (Z_VERSION INTEGER PODSTAWOWY KLUCZ, Z_UUID VARCHAR (255), Z_PLIST BLOB);
UTWÓRZ TABELĘ Z_PRIMARYKEY (Z_ENT INTEGER PRIMARY KEY, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER);
Dia
źródło
Naprawdę nie mam pojęcia o przyczynie w tym konkretnym przypadku, ale nierzadko zdarza się, że tabele bazy danych służące wspólnemu celowi mają prefiks ze specjalnym prefiksem dla łatwego odniesienia i uniknięcia kolizji innych tabel (np. Użytkownik i zUser).
NoChance,
Możliwe, że są łatwe do wykrycia. Apple jest bardzo jasne, że nigdy nie należy edytować tabel podstawowych danych za pomocą niczego innego niż podstawowe dane. Sensowne jest zatem wybranie jakiegoś niezwykłego prefiksu dla wszystkich tabel Core Data, aby łatwo było stwierdzić, kiedy patrzysz na tabelę Core Data.
Caleb,
1
Może został zaprojektowany przez byłego konsultanta SAP?
Filipiny,
@Filipp może mieć rację, chociaż śmiałem się z początkowej sugestii. W SAP dodajesz Z do niestandardowej tabeli, aby uniknąć kolizji z wewnętrznymi tabelami SAP. To samo może się tutaj dziać: CoreData dodaje Z na początku tabel utworzonych dla twoich bytów, aby upewnić się, że nie ma kolizji z żadną z wewnętrznych rzeczy.
jmstone,
1
W mojej lokalnej bazie danych deweloperów poprzedzam tablice testowe literą Z, aby były posortowane alfabetycznie na dół listy. Ułatwia zobaczenie ich razem i usunięcie ich, gdy skończę.
mike30

Odpowiedzi:

9

Jest to konwencja nazewnictwa wybrana do użycia w Core Data SQLite.

Istnieje kilka powodów, dla których został wybrany. Jednym z głównych powodów jest to, że Z jest jedną z najrzadziej używanych liter alfabetu, więc z pewnością wyczuwają, wstępnie ustalając nazwy tabel i nazwy encji za pomocą Z, otwierają one więcej opcji dla programistów, którzy mogą nazwać własne tabele, mając mniejsze szanse na tupnięcie na kimś już konwencje nazewnictwa.

Wreszcie przy użyciu Z i wszystkich wielkich liter tabele danych podstawowych są łatwiejsze do wykrycia i wywołują obiekty encji. W jednym komentarzu w pytaniu Mike wspomniał, że nazywa także swoje stoły az, więc sortują dno. To może być również rozważanie.

Akira71
źródło
1
Czy tylko spekulujesz na podstawie sugestii innych, czy masz rzeczywiste źródło, dlaczego firma Apple wybrała tę konwencję? Jest to dość wątły argument, ponieważ można go było poprzedzić na przykład „ENTITY_”. Lub, jeśli Apple ma potrzeby wewnętrznych, tajnych stoły, te mogłyby być poprzedzona Z i tabele użytkownika mogą być nazwane normalnie. OP zapytał DLACZEGO i wciąż nie widzę prawdziwego powodu.
Matt