在数据库中存储选定的选项值

时间:2010-08-16 15:05:42

标签: php mysql

我目前有一个我创建的数组:

$regions=array(
    1=>'North West',
    2=>'North East',
    3=>'South West',
    4=>'South East',
    5=>'West Midlands',
    6=>'East Midlands',
    7=>'London',
    8=>'Yorkshire',
    9=>'East England',
    10=>'Scotland',
    11=>'Wales',
    12=>'N. Ireland',
);

我将使用此数组在表单中生成下拉列表选项(value => text)。选定的选项值将以整数字段存储在数据库中。

这可能仅仅是个人偏好的问题,但我只是想知道这是否是正确的做法?或者数组键是否应与其值相同?使用这种方法时,可能会有更多的潜在问题(添加/删除/修改数组)吗?

3 个答案:

答案 0 :(得分:3)

我倾向于在此实例中存储键值。但是我通常会将这些区域存储在查找表中,其中存储了id和值,因此可以使用外键等相对容易地管理以后的任何修改。

答案 1 :(得分:2)

这通常是正确的,但通常从数据库生成下拉列表(以及数组)(至少在某些时候,即使稍后缓存)。这样,有人不会更改代码并更改先前存储的值的含义。

答案 2 :(得分:-1)

MySQL的一个好处是它直接支持枚举字段类型。恕我直言,无比使用重要数据而不是代理值。

在数据库圈子中存在一些争论 - 快速谷歌为“关系数据库枚举类型”出现了大约82000个匹配。去读一些。

但是那些不同意这种做法的人会反过来建议在数据库中维护代理/值查找。不在代码中。

下进行。