Temel Veri sqlite tablosu sütunları neden 'Z' ile başlıyor?


10

Core Data'nın oluşturduğu ve tüm tablo sütunlarının 'Z' ile başladığını fark eden sqlite tablosuna bakıyordum. Bunun bir uygulama detayı olduğunun farkındayım, ancak bunun neden böyle olduğunu ve bununla ilgili bir tasarım kararı olup olmadığını merak ettim. Neden olduğunu bilen veya tahmin eden var mı?

İşte Core Data sqlite veritabanının örnek bir şema çıktısı:

sqlite> .schema
TABLO ZPOST OLUŞTUR (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZPOSTID INTEGER, ZUSER INTEGER, ZCREATEDAT TIMESTAMP, ZTEXT VARCHAR);
TABLO ZUSER OLUŞTUR (Z_PK INTEGER PRIMARY KEY, Z_ENT INTEGER, Z_OPT INTEGER, ZUSERID INTEGER, ZAVATARIMAGEURLSTRING VARCHAR, ZUSERNAME VARCHAR);
TABLO OLUŞTUR Z_METADATA (Z_VERSION INTEGER PRIMARY KEY, Z_UUID VARCHAR (255), Z_PLIST BLOB);
TABLO Z_PRIMARYKEY OLUŞTUR (Z_ENT INTEGER PRIMARY KEY, Z_NAME VARCHAR, Z_SUPER INTEGER, Z_MAX INTEGER);

Gerçekten bu özel durumda nedeni hakkında hiçbir fikrim yok, ama kolay başvuru ve diğer tabloların (örn. Kullanıcı ve zUser) çarpışmasını önlemek için özel bir önek ile önek için ortak bir amaca hizmet veritabanı tabloları için nadir değildir.
NoChance

Muhtemelen kolayca farkedilirler. Apple, Core Data tablolarını asla Core Data dışında bir şeyle düzenlememeniz gerektiği konusunda çok açık. Bu durumda, bir Temel Veri tablosuna baktığınızda kolayca anlaşılabilmesi için tüm Temel Veri tabloları için alışılmadık bir önek seçmek mantıklıdır.
Caleb

1
Belki eski bir SAP danışmanı tarafından tasarlanmıştır?
Philipp

@Philipp'in bir anlamı olabilir, ancak ilk öneriye güldüm. SAP'de, SAP dahili tablolarıyla çakışma olmaması için özel bir tabloya Z eklersiniz. Aynı şey burada da devam ediyor olabilir: CoreData, iç öğelerin hiçbiriyle tablo çarpışması olmadığından emin olmak için varlıklarınız için oluşturulan tabloların önüne bir Z ekler.
jmstone

1
Yerel geliştirme veritabanımda, alfabetik olarak listenin en altına sıralanmaları için test tablolarını Z ile ön ekliyorum. Bitirdiğimde birlikte görmeyi ve silmeyi kolaylaştırır.
mike30

Yanıtlar:


9

Core Data SQLite içinde kullanılmak üzere seçilen adlandırma kuralıdır.

Seçilmesinin birkaç nedeni vardır. Ana nedenlerden biri Z, alfabenin en az kullanılan harflerinden biridir, bu nedenle tablo adlarını ve varlık adlarını Z ile önceden sabitleyerek hissettiler, geliştiricilerin kendi tablolarını birileri üzerinde daha az durma şansı ile adlandırmaları için daha fazla seçenek açarlar. adlandırma kuralları zaten.

Son olarak Z ve tüm büyük harfleri kullanarak Temel Veri tablolarını tespit etmek daha kolaydır ve varlık nesnelerini çağırır. Sorunun bir yorumunda Mike, masalarını az ile isimlendirdiğini ve böylece dipleri sıraladıklarını söyledi. Bu da bir düşüncedir.


1
Başkalarının önerisine dayanarak spekülasyon yapıyor musunuz yoksa Apple'ın bu sözleşmeyi neden seçtiğine dair gerçek bir kaynağınız var mı? Bu, örneğin "ENTITY_" gibi bir önekle işaretlenmiş olabileceğinden oldukça çürük bir argüman. Veya Apple'ın dahili, gizli tablolara ihtiyacı varsa, bunlara Z ön eki eklenebilir ve kullanıcı tabloları normal olarak adlandırılabilir. OP NEDEN diye sordu ve hala gerçek bir neden göremiyorum.
Matt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.