Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于多个模型,可以使用相同的字符串作为密钥id吗?_Java_Google App Engine - Fatal编程技术网

Java 对于多个模型,可以使用相同的字符串作为密钥id吗?

Java 对于多个模型,可以使用相同的字符串作为密钥id吗?,java,google-app-engine,Java,Google App Engine,如果我有三个模型类别-纳税人、罪犯和患者,我可以使用社会安全编号作为所有三个模型类别的关键ID,还是需要使其在模型类别中唯一 换句话说,如果是这样的话: String socialSecurityNumber = "123-45-6789"; Long now = new Long(System.currentTimeMillis()); // use time to create uniqueness String name = now.toString() + "-" + socialSec

如果我有三个模型类别-
纳税人
罪犯
患者
,我可以使用
社会安全编号
作为所有三个模型类别的关键ID,还是需要使其在模型类别中唯一

换句话说,如果是这样的话:

String socialSecurityNumber = "123-45-6789";
Long now = new Long(System.currentTimeMillis()); // use time to create uniqueness
String name = now.toString() + "-" + socialSecurityNumber;
Key key = KeyFactory.createKey(getClass().getSimpleName(), name);
或者这个:

String socialSecurityNumber = "123-45-6789";
Key key = KeyFactory.createKey(getClass().getSimpleName(), socialSecurityNumber);

如果它是单独的表,并且您确信它确实是主键(已知罪犯使用别名),那么我看不出有什么真正的问题

请注意,我仍然会使用代理键作为Id,但这是因为我在这方面变得教条,因为我看到很多“有意义的主键”突然发生变化,或者情况发生变化,主键不再是主键


在这些情况下,如果键位于普通字段中(例如,具有唯一索引约束),则有更多的选项来处理发生的任何事情。

如果它是单独的表,并且您确定它确实是主键(已知罪犯使用别名),我看不到真正的问题

请注意,我仍然会使用代理键作为Id,但这是因为我在这方面变得教条,因为我看到很多“有意义的主键”突然发生变化,或者情况发生变化,主键不再是主键


在正常字段中有键的情况下(例如,具有唯一索引约束),有更多选项来处理发生的任何事情。

是。密钥名称仅构成密钥的一部分,以及应用程序ID、实体种类和任何祖先密钥,因此在不同的模型中使用相同的密钥名称是可以的

但是,请注意,由于以下几个原因,社会保险号码成为较差的主键:

  • 首先,你可能不应该从你的用户那里收集信息,他们可能有权拒绝给你
  • 并不是每个人都有SSN——特别是那些不是美国公民的人,甚至还有一些美国公民
  • 它们不是唯一的:旧的SSN号码可以回收利用。在SSN系统的早期,也发布了一些副本

  • 是的。密钥名称仅构成密钥的一部分,以及应用程序ID、实体种类和任何祖先密钥,因此在不同的模型中使用相同的密钥名称是可以的

    但是,请注意,由于以下几个原因,社会保险号码成为较差的主键:

    • 首先,你可能不应该从你的用户那里收集信息,他们可能有权拒绝给你
    • 并不是每个人都有SSN——特别是那些不是美国公民的人,甚至还有一些美国公民
    • 它们不是唯一的:旧的SSN号码可以回收利用。在SSN系统的早期,也发布了一些副本

    我不知道你在说什么。我认为尼克·约翰逊解释得比我好:-)我不知道你在说什么。我认为尼克·约翰逊解释得比我好:-)