首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中固定数目字符串的最佳实践?

问MySQL中固定数目字符串的最佳实践?
EN

Stack Overflow用户
提问于 2014-01-17 11:04:20
回答 4查看 254关注 0票数 6

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

  • 创建另一个表“状态”,并在我的表中有一个指针id?
  • 创建一个包含不同状态的php数组,并使用my status-row作为数组的索引?
  • 简单地让状态是包含当前状态的字符串吗?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-17 11:07:14

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

为此使用简单的字符串是一种糟糕的做法。仅仅是状态中的一个小错误拼写就可以破坏与特定行相关的所有内容。

票数 2
EN

Stack Overflow用户

发布于 2014-01-17 11:07:25

专门用于这个目的的是ENUM类型:http://dev.mysql.com/doc/refman/5.5/en/enum.html

代码语言:javascript
复制
CREATE TABLE ... (
    status ENUM('active', 'inactive', 'pending')
    ...
);
票数 4
EN

Stack Overflow用户

发布于 2014-01-17 11:15:53

仅为3个不可更改的值建立索引是不够的。

对于有限和固定数目的字符串,请使用SET类型,如下所示:

代码语言:javascript
复制
ALTER TABLE `table` ADD `status` SET( 'active', 'insactive', 'pending' ) NOT NULL

为了检查字段的值,您可以使用它们的名称来访问它们。

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

例如,如果一个字段的值是active:

代码语言:javascript
复制
if($value=="active") //returns TRUE
if($value== 1) //returns TRUE too
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21184352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档