我正在开发一个简单的 HTML 订单表单,但我不确定将其存储在数据库中的最佳方式是什么。
假设我有一个表单,我可以在其中询问用户:
“您希望如何订购送货?”
- 发给我
- 以数字方式发送
- 到商店提货
使用单选按钮,他们可以选择其中之一。我的问题是,如何将其存储在数据库中?应该做什么value
是?
<input type="radio" name="delivered" id="delivered" value="">
我可以使用描述性文字 send
, digitally
, pickup
并将其另存为 varchar
或者我可以将其另存为 int
— 1
, 2
, 3
。
使用整数,我消除了拼写错误的可能性,甚至可能更快(?)。缺点是;我必须记住每个值的含义。 “2
是皮卡还是数字?”
最佳答案
数据库首先应该关心存储数据。如何向用户呈现数据应该只是次要问题。
因此,在您的情况下,请结合使用整数和 CHECK (field IN (...)) 约束(或者可能是枚举,如果您的 DBMS 中可用),并确保每个可能的值是正确记录。这将有利于数据库级别的完整性和性能(通常越小,速度越快)。最重要的是,客户端代码可以自然地使用它来区分单选按钮,而不是使用本地定义的整数/枚举值的字符串,然后需要将其转换为“DB 值”。
完成此操作后,您可以考虑是否还需要集中存储与演示相关的数据。例如:
- 您希望客户端能够自动更改单选按钮标签吗?
- 您想集中实现本地化机制吗?
- 等等...
在这种情况下,您通常会创建一个附加的“查找”表,列出所有有效的整数值以及任何必要的附加表示数据。然后,“主”表将有一个指向查找表的外键。
关于database-design - 数据库设计;我应该使用数字还是描述性文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18271288/