【问题标题】:Alternatives to composite key in DjangoDjango中复合键的替代品
【发布时间】:2014-11-12 10:00:41
【问题描述】:

我正在尝试在 Django 中为我的项目创建一个数据库,但我读到它不支持复合键。我想获得一些替代方案,我在 StackOverflow 中寻找一些替代方案,其中之一是创建字段值的哈希并设置为您的唯一 ID;但是,我认为这将是一个问题,因为碰撞和信息可能会发生变化。

稍微解释一下我的项目: - 我有 3 个表(用户、站点、链接) - 用户(用户帐户)、站点(一个用户可以在他的帐户中注册一个站点列表)、链接(一个站点可以在其中注册一个链接列表)

到目前为止我想到的解决方案是这样的:

用户

# User table
id [primary key]
first_name
last_name
email
...

网站

# Site table
id [primary key]
id_user [foreign key] (who created the site perfil)
name
root_link

链接

# Links table
id [primary key]
id_site [foreign key] (the site whose link belong)
link
status

如果我可以使用复合键,我会将主键与外键连接起来,因为我不能这样做我想知道这是一个好的解决方案还是有更好的解决方案?我避免使用非 Django 原生的替代方案,但我愿意接受建议。

【问题讨论】:

  • 我不明白你为什么需要一个复合键。这是一个完全正常的父 > 子 > 孙关系,没有特别的复杂性,并且可以很好地与你所拥有的关系建模。究竟是什么问题?
  • 我同意@DanielRoseman。复合键是多余的。

标签: python django database composite-key composite-primary-key


【解决方案1】:
 class Meta:
    unique_together = ('fieldA', 'fieldB')

其中 fieldA 和 fieldB 是您需要作为元组唯一的键

【讨论】:

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