database-design - 数据库设计;我应该使用数字还是描述性文字?

标签 database-design

我正在开发一个简单的 HTML 订单表单,但我不确定将其存储在数据库中的最佳方式是什么。

假设我有一个表单,我可以在其中询问用户:

“您希望如何订购送货?”

  • 发给我
  • 以数字方式发送
  • 到商店提货

使用单选按钮,他们可以选择其中之一。我的问题是,如何将其存储在数据库中?应该做什么value是?

<input type="radio" name="delivered" id="delivered" value="">

我可以使用描述性文字 send , digitally , pickup并将其另存为 varchar或者我可以将其另存为 int1 , 2 , 3

使用整数,我消除了拼写错误的可能性,甚至可能更快(?)。缺点是;我必须记住每个值的含义。 “2 是皮卡还是数字?”

最佳答案

数据库首先应该关心存储数据。如何向用户呈现数据应该只是次要问题。

因此,在您的情况下,请结合使用整数和 CHECK (field IN (...)) 约束(或者可能是枚举,如果您的 DBMS 中可用),并确保每个可能的值是正确记录。这将有利于数据库级别的完整性和性能(通常越小,速度越快)。最重要的是,客户端代码可以自然地使用它来区分单选按钮,而不是使用本地定义的整数/枚举值的字符串,然后需要将其转换为“DB 值”。


完成此操作后,您可以考虑是否还需要集中存储与演示相关的数据。例如:

  • 您希望客户端能够自动更改单选按钮标签吗?
  • 您想集中实现本地化机制吗?
  • 等等...

在这种情况下,您通常会创建一个附加的“查找”表,列出所有有效的整数值以及任何必要的附加表示数据。然后,“主”表将有一个指向查找表的外键。

关于database-design - 数据库设计;我应该使用数字还是描述性文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271288/

相关文章:

sql - 如何在多个表中强制执行唯一约束?

database - 使用一位讲师和多位导师为类(class)表建模

javascript - NodeJS|SailsJS|吃水线 : Automatic Model Generation in One-To-Many--To--Many-To-Many Relationships

ruby-on-rails - Rails has_many :through --> Should I keep a primary key column?

mysql - 加速或自动创建历史表触发器

sql - 我应该在数据库模式中允许空值吗?

mysql 数据库设计用于跟踪用户是否看过某个项目

mysql - 如果父表中的行被删除,如何自动从子表中删除行

database - 冗余关系?

mysql - 数据库编码 utf-8 或 utf-16