我可以使用VARCHAR作为主键吗?

迈克·布雷迪

我有一个用于存储优惠券/折扣的表,并且我想将coupon_code列用作主键,即VARCHAR

我的理由是,每个优惠券都将具有唯一的代码,而我将要运行的唯一命令是 SELECT ... FROM ... WHERE coupon_code='..'

我不会进行任何联接或索引编制,并且我看不到该表中有超过几百个条目。

在我看来,这可以,但是我不知道是否有任何我想念的东西。

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

从某种意义上说,您当然可以,您的RDBMS可以让您做到这一点。这个问题的答案,你是否没有问题应该做到这一点是不同的,虽然:在大多数情况下,有你的数据库系统之外的含义值应该被选择为一个主键。

如果您知道该值在要建模的系统中是唯一的,则可以向表中添加唯一索引或唯一约束。但是,您的主键通常应该是一些“无意义”的值,例如自动递增的数字或GUID。

这样做的理由很简单:确实会发生数据输入错误和对似乎不可更改的事物的不频繁更改。它们变得很难固定在用作主键的值上。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用消息传递系统的CorrelationId作为主键吗,并且可以将其用于进一步的通信

我可以在大多数表中使用外键作为主键吗?

我可以使用std :: string * argv作为主要函数参数吗?

我们可以使用主键的约束名称作为外键引用吗?

我可以使用SSH别名作为主机名的一部分吗?

使用0作为主键

为什么Rails使用id作为主键,我应该在其他列上建立索引吗?

我可以使用HTML元素作为对象键吗?

我可以使用集合类型作为数组索引吗?

我可以使用Mypy存根作为接口吗?

我可以使用枚举作为结构名称吗?

我可以使用cd ../ ..作为别名吗?

我可以使用张量作为列表索引吗?

我可以使用相同的dbcontext作为ASP身份吗

我可以使用 IEnumerator 作为更新函数吗?

我可以使用Apache Camel作为ESB吗?

我可以使用Aerospike作为持久层吗

我可以使用元组作为映射的键吗?

我可以使用void *作为函数的参数吗?

我们可以使用类作为标题吗

我可以使用反向迭代器作为 ForwardIt 吗?

一个表上的外键可以作为主键使用三个不同的表(每个表的主键数据都不同)吗?

多个外键作为主键postgres,我应该这样做吗?

创建一个以varchar作为主键的表

使用自动递增ID作为主键

Rails:如何使用BIGINT作为主键

我可以使用SqlBulkCopy将相同的主键更新到远程数据库吗?

我可以使用auto_increment(mysql)更新所有主键表吗?

我可以在SQL中使用bson.objectid.ObjectId作为(主键)ID吗?