Mengapa kolom tabel sqlite Data Inti dimulai dengan 'Z'?

10

Saya melihat tabel sqlite yang dihasilkan Core Data dan perhatikan bahwa semua kolom tabel dimulai dengan 'Z'. Saya menyadari ini adalah detail implementasi, tetapi saya ingin tahu mengapa itu terjadi dan jika ada keputusan desain yang terlibat dalam hal ini. Adakah yang tahu atau menebak mengapa?

Berikut ini adalah contoh skema keluaran dari database Core Data sqlite:

sqlite> .schema
CREATE TABLE ZPOST (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZPOSTID INTEGER, ZEGER 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);
Dia
sumber
Saya benar-benar tidak tahu tentang alasan dalam kasus khusus ini, tetapi tidak jarang tabel database melayani tujuan umum untuk diawali dengan awalan khusus untuk referensi yang mudah dan untuk menghindari tabrakan tabel lain (misalnya pengguna dan zUser).
NoChance
Mungkin agar mudah dikenali. Apple sangat jelas bahwa Anda tidak boleh mengedit tabel Data Inti dengan apa pun selain Data Inti. Maka masuk akal untuk memilih beberapa awalan yang tidak biasa untuk semua tabel Data Inti sehingga mudah untuk mengetahui kapan Anda melihat tabel Data Inti.
Caleb
1
Mungkin ini dirancang oleh mantan konsultan SAP?
Philipp
@ Pilip mungkin ada benarnya, meskipun saya tertawa pada saran awal. Di SAP, Anda menambahkan Z ke tabel kustom untuk memastikan tidak ada tabrakan dengan tabel internal SAP. Hal yang sama mungkin terjadi di sini: CoreData menambahkan Z ke bagian depan tabel yang dibuat untuk entitas Anda untuk memastikan tidak ada tabrakan tabel dengan hal-hal internal.
jmstone
1
Dalam database dev lokal saya, saya awali tabel pengujian dengan Z sehingga mereka disortir berdasarkan abjad ke bagian bawah daftar. Membuatnya lebih mudah untuk melihatnya bersama dan menghapusnya saat saya selesai.
mike30

Jawaban:

9

Ini adalah konvensi penamaan yang dipilih untuk digunakan dalam Core Data SQLite.

Ada beberapa alasan mengapa itu dipilih. Salah satu alasan utama adalah Z adalah salah satu huruf alfabet yang paling jarang digunakan sehingga mereka pasti merasa dengan pra-memperbaiki nama tabel dan nama entitas dengan Z mereka membuka lebih banyak opsi bagi pengembang untuk memberi nama tabel mereka sendiri dengan lebih sedikit peluang menginjak seseorang. konvensi penamaan sudah.

Akhirnya dengan menggunakan Z dan semua batas tabel Data Inti lebih mudah dikenali dan memanggil objek entitas keluar. Dalam satu komentar dalam pertanyaan, Mike menyebutkan bahwa dia juga memberi nama mejanya dengan az sehingga mereka menyortir bagian bawah. Ini mungkin juga menjadi pertimbangan.

Akira71
sumber
1
Apakah Anda hanya berspekulasi berdasarkan saran orang lain atau apakah Anda memiliki sumber aktual mengapa Apple memilih konvensi ini? Ini argumen yang sangat tipis karena bisa diawali dengan, misalnya, "ENTITY_". Atau, jika Apple memiliki kebutuhan untuk internal, tabel rahasia, mereka dapat diawali dengan Z dan tabel pengguna dapat dinamai secara normal. OP telah bertanya MENGAPA dan saya masih belum melihat alasan sebenarnya.
Matt