【发布时间】:2017-09-24 09:57:05
【问题描述】:
我的 mysql 表中有两个枚举列:
gender enum('male', 'female') not null,
user_type enum('hr', 'manager', 'qa') not null
我的一位同事坚持认为,在所有枚举值中都使用小写字母不是一个好主意,因为它在页面中看起来不太好。例如,
// profile.php
用户类型:HR(代表人力资源)
性别:男
应该是:
// profile.php
用户类型:HR
性别:男
我忽略案例的主要原因是我将多次比较这些列的值。例如:
if (user_type == "hr")
如果我只是因为大小写不匹配而出现错误,那将是非常烦人的。那么性别栏呢?大写真的好吗?
我想 UI 端可以像这样大写它:
<?php echo strtoupper($userType) ?>
我对sql没有太多了解,所以我想问一下:关于枚举值的大小写约定是否有最佳实践?注意我不是在谈论命名枚举列。
【问题讨论】:
-
嗯,你可以使用不区分大小写的排序规则(大多数“默认”排序规则都是)——但无论哪种方式,在你的 CSS 中控制这种东西都很容易
-
为您的目的使用任何实用的东西。严格遵守大小写是一个问题。例如,在表格上使用适当的大小写可能看起来不错,但在报告中,即有 5 名男性和 5 名女性主管,如果使用适当的大小写会看起来很奇怪。
-
这个问题要么基于意见,要么过于宽泛(或两者兼而有之)。您甚至可以争论在 MySQL 中使用 ENUM 是否是个好主意。但是我认为您需要确定在代码中使用的是数据还是内部密钥。明天他们希望您将“HR”更改为“员工”,而您的代码 (
user_type == "HR") 将不再有效,因为数据已更改。最好有某种映射 - 在数据库中 (gender_key, gender_label) 或在您的应用程序中 ($labels['male'] = 'Male'和echo $labels[$genderKey])。要支持多种语言,您必须采用任何一种方式。