在数据库中创建 1 长度的 long var char 没有意义吗?
我想在数据库中存储用户状态,因此,我将使用字符来存储状态,例如“活动”、“非活动”、“关闭”。我将用“a”、“i”、“c”来代表这些状态。但是将 varchar 存储在数据库中是没有意义的吗?我应该使用字符类型还是集合?
**mysql中的数据库。
I would like to store a user status in the database, so, I will use a char to store the status, for example, "active", "inactive", "close". I will use "a", "i", "c" to represent these status. But it is non-sense to store a varchar in database? should I use a char type or set?
**the database in mysql.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能需要考虑使用 int 或 enum 代替。如果您确实想要 char 类型,则 CHAR(1) NOT NULL 应该没问题。对于枚举,它将是:
对于 int:
使用 int 是一个不错的选择,但记录值。
You may want to consider using an int or an enum instead. If you do want a char type, CHAR(1) NOT NULL should be fine. With an enum, it would be:
With an int:
Using an int is a good option, but document the values well.
需要注意的一件事是,向枚举添加新值需要重写整个表。我通常建议存储 CHAR 或 VARCHAR。如果您想要枚举的另一方面,即要求值是列出的值,则可以将 FK 引用添加到合法值表中。然后,可以通过向 FK'ed 表添加另一个值来扩展“几乎枚举”。
One thing to beware of is that adding a new value to an enum requires rewriting the entire table. I generally recommend storing CHAR or VARCHAR. One can add a FK reference to a table of legal values if you want an other aspect of enums, that of requiring the value to be a listed one. Then the 'almost enum' can be extended by adding another value to the FK'ed table.