我正在创建一个包含三列名称的小型数据库:ID、名称、状态
“状态”可以是以下三项之一:等待、已批准、其他
我的问题是,将“状态”存储在数据库中的最佳/最正确方法是什么?它应该存储为 varchar 字符串还是 1、2 或 3 整数,然后在从数据库读取时将其转换为等待/批准/其他?我希望这是有道理的,感谢您的帮助。
tinyint
您应该有一个使用数据类型来引用该状态的状态表(称为字典或查找表) 。您将使用外键约束。这样您就可以保持关系和域的完整性。它将允许您在不更改表结构的情况下添加/更改/删除状态值。
地位 ============== 标识值 1 等待 2 批准 3 其他
用户 ===================== id 名称 status_id 1 鲍比 3
创建另一个名为
具有 2 个字段 id INT Primary Auto Increment name varchar(30) 的状态。
通过整数在用户表中添加您的状态并使用 JOIN 引用它们。
您还可以将 users 表中的状态更改为 status_id,这样会更有意义。
IMO这是最合适的方式
一般来说,将这些项目存储为文本,除非:
使用带有单独查找表的数字。
整数字段比 varchar 字段使用更少的内存空间,因此将“状态”选项存储为数字将略微减少内存使用量。
我建议将“状态”存储在一个整数中,并在必要时将其转换为外部的相应值。
我认为它们应该按原样存储:枚举!
例子:
status ENUM('waiting', 'approved', 'other') DEFAULT 'other'