【问题标题】:The logic of field type in relationship关系中字段类型的逻辑
【发布时间】:2016-11-08 12:28:51
【问题描述】:

我有一些用于用户偏好的表格,例如 currencylanguage 和 ...

currency 结构和示例记录:

id  |   title    |  slug
----+------------+--------
1   | US Dollar  | usd
2   | CA Dollar  | cad
3   | Euro       | eur
4   | Swiss Franc| chf

language 结构和示例记录:

id  |   title     |    code   |   flag
----+-------------+-----------+----------
1   | English     | en        | img/flags/en.png
2   | French      | fr        | img/flags/fr.png

我想在这些表和users 表之间建立关系,我想知道哪个字段更适合外键?例如在currencycurrency.idcurrency.slug 中?

【问题讨论】:

    标签: mysql database relational-database foreign-key-relationship


    【解决方案1】:

    如果您看到 sql 的速度比您应该使用 currency.id 的速度,因为从很多行(以千计)中找到 integer会更快 然后找到 varchar

    但在这里你看到货币不会超过 500,所以你可以同时使用它不会影响你的速度。

    您可以在此特定示例中同时使用两者: currency.id 或 currency.slug

    【讨论】:

    • 感谢您的建议,您对尺寸有何看法?因为我应该将每个用户的usd 存储在users 表中,而不是1
    • 整数总是4字节
    • 整数将始终为 4 字节,但 varchar 是动态的,因此它将在您的 slug 上计算 每个字符 1 字节* 这里 slug 看起来很小 **3 char 所以你可以在这个例子中使用 currency.slug。
    【解决方案2】:

    我建议您使用currency.id 建立关系。对于海量数据,应该使用主键建立关系。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多