哪个是更好的设计:在DB行中存储单个字符或有意义的字符串?

时间:2017-12-09 04:44:38

标签: sql

鉴于我有一个数据库表如下:

<TableName>
  id: string
  sym: string
  type: string

我可以使用两种方法将数据存储到数据库表中:

Method one:
0001, IBM, Stock
0002, IBM18Jan, Option

Method one:
0001, IBM, '1'
0002, IBM18Jan, '2'

对于方法一,我在显示数据时不需要进行任何转换。 但是,我需要从&#39; 1&#39;进行转换。股票和&#39; 2&#39;方法二中的选项。基本上,我必须在查询代码中的某处维护映射。

问题&GT;哪种方法更好?显然,通过使用方法二,我可以节省大量的数据库空间,但在以后的查询语句中需要转换。

2 个答案:

答案 0 :(得分:1)

这可能被视为意见问题。但是,我强烈认为需要魔法外部知识的不可思议的代码是数据库和任何软件的重要设计选择。

关系数据库为您提供了一个简单的解决方案 - 参考表。如果您愿意,可以存储“1”和“2”。然后,您可以使用另一个表将定义扩展为其全名。

某些数据库支持其他类型 - 例如enum s - 基本上做同样的事情。

答案 1 :(得分:0)

取决于使用频率/变化和参考数据的大小。如果参考数据的行数非常大,那么虽然您可以节省转换时间,但是当您想要更新任何值或者想要在其他查询中使用此参考数据时,您将浪费时间。此外,参考表使数据的维护和更新更容易。