【问题标题】:Anything wrong with declaring variables like this?像这样声明变量有什么问题吗?
【发布时间】:2011-06-16 22:56:22
【问题描述】:

所以这里有两个问题。

在我的数据库中,我需要 18 个字段,因为在高尔夫中有 18 个洞(所以每个洞需要 18 个来存储击球数。)其次,我需要存储每个洞的码数(所以还有 18 个。)

我的问题是,现在我将它们全部声明如下:

public static final String KEY_H1 = "h1";
public static final String KEY_H1Y = "h1y";
public static final String KEY_H2 = "h2";
public static final String KEY_H2Y = "h2y";
public static final String KEY_H3 = "h3";
public static final String KEY_H3Y = "h3y";

等等

h1 是孔 1 h1y 是洞 1 码

有没有更好的方法来做到这一点?此外,在创建时,我将不得不调用 h1 h1y h2 h2y h3 h3y 等。

提前致谢!

编辑:1. 这会对系统造成很大的负担,导致应用程序崩溃或运行速度变慢吗? 2. 以后更新数据库会不会很痛苦?

【问题讨论】:

    标签: android database string declare


    【解决方案1】:

    您可以不使用“高尔夫比赛得分”表,而使用“球洞得分”表。然后,该表可以包含一个用于洞的 int 列、另一个用于 yardage 的列和另一个 game_id 列。

    【讨论】:

    • 我怀疑如果 Rob没有走这条路,他最终会后悔的。
    • 谢谢,我想我会试试这条路线,因为它确实更有意义。你对我如何区分一组 18 孔和另一组有什么建议吗?而不是课程名称,使用日期或其他内容?
    • 这真的取决于你想要跟踪什么。 game_id 列应该足以区分一组 18 个孔,但您也可以放入更多数据。如果日期对您很重要,那么请务必保存日期。如果知道该游戏在哪个特定课程上很重要,则可以添加一个包含课程数据的课程表,并在游戏表中添加一个 course_id 列。这一切都取决于你想要完成什么。
    • @Rob:创建一个单独的表,将每一轮作为一个整体记录下来。这实际上只需要一个 _id 列;这为您提供了每个游戏的唯一 ID。然后,您将在“holes_played”表中创建一个引用“rounds”表中的_id 列的外键。 (您当然可以在“轮次”表中添加其他信息,例如日期/时间、课程名称等)
    • 另外一个建议:尝试将静态数据——例如每个球场的名称、球员的名字、每个球场上每个洞的标准杆等——保存在单独的表格中更多“动态”数据,例如每个洞的得分。这些项目中的每一个都应该是它们自己的表中的行,每个都有自己唯一的_id。看起来这增加了复杂性,但随着时间的推移(不是很多),它会在简单性中收回成本。
    【解决方案2】:

    关注Kabuku's 答案:假设在某一轮高尔夫中,您想知道球员有多少小鸟、老鹰、转向架等;或者你想找出哪个洞的标准杆得分最高,哪个洞的得分最差,等等。你真的想写相同的代码 18 次,每个洞一次吗?或者您是否希望能够编写一次代码,作为循环或对漏洞进行查询,以找到结果?

    这只是您非常非常想将孔号作为参数而不是为每个孔创建单独的静态变量或列的原因之一。

    要回答您问题的另一部分——声明大量公共静态最终变量是否会减慢系统速度——答案是否定的。但在这种特殊情况下,它最终会减慢的速度。

    【讨论】:

    • 你认为我的主键是不是_id重要吗?试图想出一个阻止我制作那把钥匙的原因
    • @Rob:SQLite 和 Android 的 API 非常喜欢使用 _id 作为主键列的名称。我认为没有理由与他们争论 :-)
    【解决方案3】:

    我只是将它存储为一个字符串,因为您有从 xy 的字段,这些字段应该始终采用某种数组形式。我认为最简单的方法是将其存储为:

    hits:yardage hits:yardage hits:yardageetc...

    在您的数据库中,然后将字符串按: 拆分。

    (响应您的编辑,是的,您当前的方式可能会使更新数据库结构变得不必要地困难。)

    【讨论】:

      【解决方案4】:

      我有两张桌子,一张游戏桌和一张球洞得分表。

      游戏桌会有日期和路线。

      球洞得分表将包含球洞号码、码数、得分和比赛表中比赛记录的_id。

      【讨论】:

        猜你喜欢
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多