为什么Core Data sqlite表列以“ Z”开头?


10

我正在查看Core Data生成的sqlite表,并注意到所有表列均以“ Z”开头。我意识到这是一个实现细节,但是我很好奇为什么会这样,以及是否涉及设计决策。任何人碰巧知道或猜测为什么?

这是Core Data sqlite数据库的示例架构输出:

sqlite> .schema
创建表ZPOST(Z_PK整数主键,Z_ENT整数,Z_OPT整数,ZPOSTID整数,ZUSER整数,ZCREATEDAT TIMESTAMP,ZTEXT VARCHAR);
创建表ZUSER(Z_PK整数主键,Z_ENT整数,Z_OPT整数,ZUSERID整数,ZAVATARIMAGEURLSTRING VARCHAR,ZUSERNAME VARCHAR);
创建表Z_METADATA(Z_VERSION整数主键,Z_UUID VARCHAR(255),Z_PLIST BLOB);
创建表Z_PRIMARYKEY(Z_ENT INTEGER主键,Z_NAME VARCHAR,Z_SUPER INTEGER,Z_MAX INTEGER);

我确实不知道在这种特定情况下的原因,但是在具有共同目的的数据库表中添加特殊的前缀以方便参考并避免其他表(例如,用户和zUser)的冲突并不少见。
NoChance 2012年

可能是因为这样很容易发现它们。苹果公司非常清楚,除核心数据外,切勿编辑任何其他内容。然后为所有Core Data表选择一些不寻常的前缀就很有意义了,这样就很容易知道何时查看Core Data表。
Caleb

1
也许它是由前SAP顾问设计的?
菲利普

@Philipp可能有一点,尽管我笑了最初的建议。在SAP中,将Z添加到自定义表中以确保与SAP内部表不冲突。可能会发生同样的情况:CoreData在为您的实体创建的表的前面添加了一个Z,以确保与其内部的任何内容都不会发生表冲突。
jmstone 2012年

1
在我的本地开发人员数据库中,我为测试表添加了Z前缀,因此它们按字母顺序排列在列表的底部。完成后可以更轻松地将它们一起查看和删除。
mike30

Answers:


9

它是选择在Core Data SQLite中使用的命名约定。

选择它有几个原因。主要原因之一是Z是字母表中使用最少的字母之一,因此通过在表名和实体名之前加上前缀Z肯定会给他们带来感觉,他们为开发人员提供了更多选择来命名自己的表的可能性,从而降低了踩踏某人的可能性已经命名约定。

最后,通过使用Z和所有大写字母,Core Data表更易于发现和调用实体对象。在一个问题的评论中,迈克提到他还用z命名他的表,以便它们对底部进行排序。这也可能是一个考虑因素。


1
您是根据其他人的建议进行推测还是对苹果为何选择此约定有确切的了解?这是一个非常脆弱的参数,因为它可能以“ ENTITY_”为前缀。或者,如果Apple需要内部秘密表,则可以在这些表之前加上Z,然后可以正常命名用户表。OP询问了为什么,但我仍然看不到实际原因。
马特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.