MySQL三态字段

发布于 2024-09-18 00:04:25 字数 187 浏览 4 评论 0原文

我需要创建一个好的/中性的/坏的场。哪一种方法更容易理解/正确。

  1. 带有 null 的二进制字段(1=好,null=中性,0=坏)
  2. int(1=好,2=中性,3=坏)
  3. 枚举(好,中性,坏)
  4. 任何其他

它是唯一的信息字段并且我不需要通过这个进行搜索。

I need to create a good/neutral/bad field. which one would be the more understandable/correct way.

  1. A binary field with null (1=good, null=neutral, 0=bad)
  2. An int (1=good, 2=neutral, 3=bad)
  3. An enum (good, neutral, bad)
  4. Any other

It's only and informative field and I will not need to search by this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泡沫很甜 2024-09-25 00:04:25

NULL 值应保留用于以下任一情况:

  • 未知值;或
  • 不适用的值;

这里的情况都不是。

我只需自己存储一个 CHAR 值,即 {'G','N','B'} 集合之一。这可能是最简单的解决方案,占用很少的空间,同时仍然提供助记符值(例如,轻松地将“G”转换为“Good”)。

如果您不太关心空间,那么您甚至可以将它们存储为 varchar(7) 或等效形式,并存储实际值 {'Good','Neutral','Bad'} 这样您的 select 语句中就不需要任何翻译(假设这些是您将要打印的实际值)。

NULL values should be reserved for either:

  • unknown values; or
  • not-applicable values;

neither of which is the case here.

I would simply store a CHAR value myself, one of the set {'G','N','B'}. That's probably the easiest solution and takes up little space while still providing mnemonic value (easily converting 'G' to 'Good' for example).

If you're less concerned about space, then you could even store them as varchar(7) or equivalent and store the actual values {'Good','Neutral','Bad'} so that no translation at all would be needed in your select statements (assuming those are the actual values you will be printing).

南街九尾狐 2024-09-25 00:04:25

在 Mysql 中你应该使用枚举类型。您可以选择任何您喜欢的名称,而不必担心空间,因为 Mysql 将数据存储为短整数。请参阅10.4.4。文档中的 ENUM 类型

In Mysql you ought to be using an enum type. You can pick any names you like without worrying about space, because Mysql stores the data as a short integer. See 10.4.4. The ENUM Type in the documentation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文