Core Data sqliteテーブルの列が「Z」で始まるのはなぜですか?


10

Core Dataが生成するsqliteテーブルを見ていて、すべてのテーブル列が「Z」で始まることに気付きました。これは実装の詳細であることに気づきましたが、なぜそうなるのか、そしてこれに関係する設計上の決定があるのか​​どうかについて知りました。誰かが偶然知っているか、なぜだと思いますか?

Core Data sqliteデータベースのサンプルスキーマ出力を次に示します。

sqlite> .schema
CREATE TABLE ZPOST(Z_PK INTEGER PRIMARY KEY、Z_ENT INTEGER、Z_OPT INTEGER、ZPOSTID 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);

この特定のケースの理由については本当にわかりませんが、共通の目的を果たすデータベーステーブルの前に特別なプレフィックスを付けて簡単に参照し、他のテーブル(ユーザーとzUserなど)の衝突を回避することは珍しくありません。
NoChance

おそらく、彼らが見つけやすいように。Appleは、Core DataテーブルをCore Data以外のもので編集してはならないことを明確にしています。コアデータテーブルを見ているときに簡単にわかるように、すべてのコアデータテーブルに珍しいプレフィックスを選択することは理にかなっています。
Caleb

1
多分それは元のSAPコンサルタントによって設計されたのでしょうか?
Philipp

@Philippにはポイントがあるかもしれませんが、最初の提案は笑いました。SAPでは、Zをカスタムテーブルに追加して、SAP内部テーブルと競合しないようにします。同じことがここで起こっている可能性があります。CoreDataは、エンティティ用に作成されたテーブルの前にZを追加して、その内部のものとテーブルが衝突しないようにします。
jmstone

1
私のローカル開発データベースでは、テストテーブルの先頭にZを付けて、リストの一番下にアルファベット順に並べます。それらを一緒に見やすくし、終了時に削除しやすくします。
mike30

回答:


9

これは、Core Data SQLiteで使用するために選択された命名規則です。

それが選ばれた理由はいくつかあります。主な理由の1つは、Zがアルファベットの中で最も使用頻度の低い文字であることです。そのため、テーブル名とエンティティ名をZでプレフィックスすることで、開発者が自分のテーブルに名前を付けるためのオプションが増え、誰かに踏みつける可能性が少なくなります。すでに命名規則。

最後に、Zとすべてのキャップを使用することで、コアデータテーブルを見つけやすくなり、エンティティオブジェクトを呼び出すことができます。質問のコメントの1つで、マイクは自分のテーブルにもazという名前を付けて、下から順に並べると述べました。これも考慮事項だった可能性があります。


1
他の人の提案に基づいて推測しているだけですか、それともAppleがこの規則を選択した理由についての実際の情報源はありますか?これは、たとえば「ENTITY_」などの接頭辞が付いている可能性があるため、かなり薄っぺらな引数です。または、Appleが内部のシークレットテーブルを必要とする場合、それらのテーブルの前にZを付けて、ユーザーテーブルに通常の名前を付けることができます。OPがWHYに質問しましたが、実際の理由はまだわかりません。
Matt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.