在我的应用程序中,它依赖于数据表,每个条目都需要记录其状态,并且有四种可能的状态。我想知道在表列中表示这四种状态之一的最佳方法是什么,以及该方法如何使用 MySQL 推广到 N 个状态。
编辑
澄清我只想一次代表一个状态,而不是多个
最佳答案
`state` ENUM('ready', 'active', 'removed', 'foobared')
是为列提供“少量”互斥值的直接方法。尽管您可以有数百个选项,但 2 个是常见的,4 个是“可以”。添加另一个选项有点笨拙,但这是可能的。 ENUM
占用 1 个字节,因此非常高效;您可以通过指示的字符串引用值,从而使代码更加人性化。
如果“状态”不是互斥的,请参阅 SET
数据类型。
(使用 ENUM
有支持者和反对者——我预计会因为建议 ENUM
而受到批评。)
您仍然可以使用另一个表格来添加状态的详细描述:
CREATE TABLE StateMeanings (
`state` ENUM(... (as above)),
`description` VARCHAR(188) );
INSERT INTO StateMeanings (`state`, `description`)
VALUES
('ready', "The horse is saddled, and the groom is standing by."),
...
关于mysql - MySQL 中存储具有 N 个可能值的字段的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54593551/