MySQL中固定数量字符串的最佳实践?

时间:2014-01-17 11:04:21

标签: php mysql sql sqldatatypes

假设我有一个名为“status”的数据类型作为mysql表中的一行。状态只能是固定数量的字符串,例如“活动”,“非活动”和“待定”。最佳实践使用什么数据类型?

  • 制作另一个表“状态”并在我的表中有一个指针ID?
  • 创建一个包含不同状态的php数组,并使用我的status-row作为数组的索引?
  • 只需让状态为包含当前状态的字符串?

4 个答案:

答案 0 :(得分:3)

具体来说,就是ENUM类型:http://dev.mysql.com/doc/refman/5.5/en/enum.html

CREATE TABLE ... (
    status ENUM('active', 'inactive', 'pending')
    ...
);

答案 1 :(得分:1)

如果在开发时固定了一组状态,您肯定想使用ENUM。另一种情况是可以在运行时添加可能的状态。在这种情况下,您希望使用分隔表来存储它们和外键以检查所有状态是否有效。

使用简单的字符串是一种不好的做法。例如。只是一个小的拼写错误状态可以打破与特定行相关的所有内容。

答案 2 :(得分:1)

只有3个不可更改的值才能建立索引。

对于有限和固定数量的字符串,请使用SET类型:

ALTER TABLE `table` ADD `status` SET( 'active', 'insactive', 'pending' ) NOT NULL

并检查您可以通过名称

访问它们的字段的值

('active', 'insactive', 'pending')或偶数( 1 , 2 , 3 )

例如,如果字段的值为有效

if($value=="active") //returns TRUE
if($value== 1) //returns TRUE too

答案 3 :(得分:-1)

您可以遵循您提议的三个选项中的任何一个,也可以使用ENUM。

我会避免使用第1号选项。

我会选择nr去(但这是编码风格和偏好的问题)。 3.将值存储为字符串,使用固定大小的字段,如大小为16的字符...