一尘不染

VARCHAR作为数据库中的外键/主键是好是坏?

mysql

如果我使用ID nr:s代替VARCHARS作为外键会更好吗?最好使用VARCHARS的ID nr:s istead作为主键吗?ID nr是指INT!

这就是我现在所拥有的:

category table:
cat_id ( INT ) (PK)
cat_name (VARCHAR)

category options table:
option_id ( INT ) (PK)
car_id ( INT ) (FK)
option_name ( VARCHAR )

我可能已经想到了:

category table:
cat_name (VARCHAR) (PK)

category options table:
cat_name ( VARCHAR ) (FK)
option_name ( VARCHAR ) ( PK )

还是我在这里认为完全错误?


阅读 394

收藏
2020-05-17

共1个答案

一尘不染

VARCHAR用于任何KEY的问题在于它们可以保留WHITE
SPACE。空格由任何无法在屏幕上读取的字符组成,例如空格标签,回车符等。当您开始追查为什么表最后不返回带有多余空格的记录时,使用VARCHAR作为键会使您的生活变得困难他们的钥匙。

当然,你 CAN 使用VARCHAR,但你必须要非常小心的输入和输出。它们还会占用更多空间,并且在执行查询时可能会变慢。

整数类型有一个由10个有效字符组成的小列表,即 0,1,2,3,4,5,6,7,8,9 。它们是用作键的更好的解决方案。

如果您想拥有快速查找的优点,则可以始终使用基于整数的键并将VARCHAR用作UNIQUE值。

2020-05-17