【问题标题】:SQLite - Change column that Foreign RefrencesSQLite - 更改外部引用的列
【发布时间】:2015-02-15 22:44:14
【问题描述】:

所以我目前有两个表(使用 Django 模型制作),简而言之。一个为查找提供参数,另一个为查找提供历史记录。第二个表当前引用第一个表的主键以便将其链接。这一切都很好,直到我尝试将新的历史查询输入到第二个表中(因为我不确定第一个表的主键是什么)。

那么我的问题是,有没有办法将第二个表的外键与第一个表中的另一列相关联(例如“名称”)。

第一个表

id(pk) - name - data1 - data2 - data3
1        bill    3       6        9
2        sam     6       3        5
3        ken     1       2        3

第二张表(当前):

id(pk) - id_id(fk) - result1 - result2 - result3
1         2           12        12        14
2         2           67        32        34
3         1           34        34        23

第二张表(建议):

id(pk) - name_id(fk) - result1 - result2 -result3
1        sam            12        12       14
2        sam            67        32       34
3        bill           34        34       23

所以第一个表的主键几乎被替换为第一个表的名称。

所有名称都是唯一的。 感谢您的指导。

【问题讨论】:

  • 您不能将 fk 与非 PK 列相关联,但您可以将第一个表中的 name 列指定为 PK,因为名称是唯一的。只需将 primary_key=True 添加到 name 的字段定义即可。
  • Hmmm.. 我正在考虑这样做,但我面临的问题是表中将有大约 50k - 100k 条记录,并且真的有一个非整数主键损害数据库性能。我想我将不得不做出妥协
  • 但话又说回来......如果我没有使用主键整数来做任何事情,那么这并不重要,因为我仍在使用第二列进行实际查找。我可能会试一试,看看结果如何......

标签: django database sqlite


【解决方案1】:

您可以只查找给定名称的 id。如果您需要 'bill' 的 id,只需

select id
from first_table
where name = 'bill';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2020-01-24
    • 2014-06-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    相关资源
    最近更新 更多