-2

我使用 peewee 作为 mysql DB 的 ORM。我的方案中有 3 个表,一个用于设备,一个用于应用程序,一个用于每个测试仪应用程序和测试应用程序的每个设备的结果。APPS 表如下所示:

package name | version name | version code |apk name

前 3 列是我的主键,因为我希望表中的每个修订版都可以根据某些版本代码轻松过滤应用程序(版本代码随着 git\svn 中的修订而递增,而版本名称表示版本本身为取自开发分支)。当我想将 APPS 表作为 TESTS 表的参考表时,我的问题就开始了,这意味着每个测试都引用了 APPS 两次,一次用于测试人员,一次用于测试的应用程序。我不确定在我的 TESTS 表中有一个 3 个字段的外键(它是 6 个!)是否是个好主意。

有什么好的解决方案吗?我尝试将具有自动增量的 _ID 字段添加为“KEY”,这样我就可以访问一个数字单个字段,但是 ORM 并不真正支持它,我有点咬牙切齿地试图解决这个问题。

我的 Db 是组织不好还是我需要简单地替换 ORM?我认为如果没有 ORM,我可能会很容易地完成它......

4

2 回答 2

0

选项:

  1. APPS在表中定义一个自动递增的主键。
  2. 在、和 列的APPS表中定义复合唯一键。pkgvervcode
  3. 使用该表的主键值作为子表的外键引用。
于 2014-02-16T18:11:05.633 回答
-1

这是一个非常晚的答案,但我想贡献代码来告诉 peewee 一个复合键,如下所示。使用此构造时,Peewee 不会在表中添加“id”列:

class SillyTable(peewee.Model):
    field1 = peewee.IntegerField(null=False)
    field2 = peewee.IntegerField(null=False)
    # Composite key, no "id" column needed.
    class Meta:
        primary_key = peewee.CompositeKey('field1','field2')

我正在使用 peewee v2.6.3 和 PyMySQL v0.6.3 来访问 MySQL。

于 2015-08-28T19:26:51.843 回答