一个表的MySQL模式

时间:2011-05-22 12:38:42

标签: mysql sql optimization

当我需要一张表来为我的应用设置设置时。我总是使用包含许多字段的表格:

create table options (

 id ...
 url ...
 keys ..
 path ...

)

当然我需要一个ID(因为我有一个设置)

我可以使用其他方法:

create table options (

 id ...
 field ..

)

field为例:

`key => value`

所以我不需要设置很多字段..

BS: 这些字段有不同的类型:int text datetime ..等等

4 个答案:

答案 0 :(得分:1)

当然,你可以做到。只需确保在从数据库中取出值时转换为正确的类型,并且类似地,在插入或更新它们时。

PHP示例:

// saving a settings value

$max_length = 20;
mysql_query("UPDATE settings SET value = '{$max_length}' WHERE field = 'max_length'");

// obtaining a settings value

$result = mysql_query("SELECT value FROM settings WHERE field = 'max_length'");
$settings = mysql_fetch_assoc($result);
$max_length = (int) $settings['value'];

对于上面的示例,您的架构需要fieldvarchar)和valuevarchar)。

答案 1 :(得分:0)

这是一种更好的方法,否则如果您想添加其他设置,则需要更改模型(数据库:添加列),而不是仅向现有表添加行。

使用:

  • id
  • key

可能还有其他一些字段,比如type,required,......

作为类型使用Varchar,如果将一个Setting(一个DB-row)映射到一个(Java,...)Object,则提供getValue(),getValueAsDate(),getValueAsBoolean(),...等方法。 >

答案 2 :(得分:0)

您可以使用以下内容:

create table options (
OptionID string,
OptionType string,
OptionValue string,
)

然后你需要一个将值转换为所需类型的函数。

答案 3 :(得分:0)

  

所以我不需要设置很多字段..

您可以发出不设置每个字段的UPDATE语句。

update options set someval = 1 where id = 2;

这使得所有其他价值都与他们一样......