首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本SQL问题-数据类型选择

基本SQL问题-数据类型选择
EN

Stack Overflow用户
提问于 2009-02-16 16:26:14
回答 6查看 2.5K关注 0票数 1

我目前正在Oracle中创建一个小表,不确定为特定列选择哪种数据类型。

该列被标记为“stay”,我希望它只包含“Short”、“Medium”和“Long”这些值。最终目标是将这些值放在表单的下拉列表中。

这里我选择的数据类型是'char(6)‘,对吗?

那么,是否可以使用Oracle form builder将其转换为值列表呢?

谢谢您抽时间见我。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-02-16 16:32:55

首先,我会将该列命名为“StayDuration”或“StayLength”,因为仅仅是“Stay”本身仍然有点令人困惑。完成后,我看到了两种可以接受的方法:

  • 将您的长度放入一个单独的表中,并让您的现有列将一个外键存储到该表中。
  • 存储一个整数,以便可以通过一个简单的公式轻松地将该整数的值扩展为停留长度限制的实际值。(示例:“短”停留时间可以是1天或更短时间,“中”停留时间可以是一周或更短时间,然后所有其他时间都是长的,您可以使用0、1和7作为整数。

我倾向于避免在这里直接存储varchar类型的数据。它需要更多的存储空间,并且很容易导致输入错误或过时的数据。

一种混合的方法也是可能的,这样来自第一个选项中的新表的“键”映射到第二个选项中提出的整数值。

票数 4
EN

Stack Overflow用户

发布于 2009-02-16 16:29:26

基本上有3种选择:

  • 某些数据库支持专门用于这种情况的枚举类型。(对Oracle不太确定)
  • 您可以使用char(6)
  • 您可以使用int并在应用程序级别将这些类型映射到适当的类型。

我会说Enum是“最干净的”选项。但是一些ORM并不能正确地支持这一点。

你可能会对这个问题感兴趣:

How to use enums in Oracle?

票数 2
EN

Stack Overflow用户

发布于 2009-02-16 16:33:02

使用VARCHAR2(6)。CHAR(6)具有空格填充的语义,这使用起来很奇怪;这也意味着您每次使用单词'Long‘时都要存储完整的6个字符。几乎没有令人信服的理由使用CHAR而不是VARCHAR2。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/553877

复制
相关文章

相似问题

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