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