存储数据库中的常量列表

时间:2017-06-09 20:46:16

标签: database postgresql sqlalchemy flask-sqlalchemy

我想在数据库列中保存常量列表。 可用选项是字母表的一部分:上部,下部,数字,符号。 用户已经能够选择其中的多个但是如何将它们保存到数据库中。我认为数据库关系不适合4个常量吗?

1 个答案:

答案 0 :(得分:0)

实际上,拥有一个表是不错的选择 - 它很简单,使用此解决方案添加更多选项或修改现有选项非常容易。

虽然,我可以理解这个问题的原因,但可能感觉就像一个"开销"让整个表只存储4个值。

其他选项包括:

  • 使用Enum类型的字段,PostgreSQLSQLAlchemy都支持该字段。但是,如果要添加更多值或编辑现有值,则修改Enum字段会更复杂(您只需要使用比表格更复杂的SQL)。

    < / LI>
  • 在数据库中使用integer(或smallint)字段,并在代码中包含相应的常量(CODE_UPPER = 1CODE_LOWER=2等等)。在数据库级别,您还可以使用约束来仅将字段值限制为可能的值集。我不太喜欢这个解决方案,因为它可能不太可靠(如果你没有约束,你可能会意外地保存错误的值),并且当你查看数据库时不那么明显。

P.S。不确定为什么你被投票,也许人们被#34;数据库关系不适合4个常数&#34;,可能&#34;除了拥有4个值的表之外还有其他选择吗? ?&#34 ;. 另外我猜测标签中的PostgreSQLSQLAlchemy,最好在你的问题中提及这一点。

P.P.S。有了上面的内容,在重新阅读你的回答之后,我认为你也可能有兴趣保存多项选择价值(比如upper + lower)。在这种情况下,您仍然可以使用上面的所有选项以及一些特定的添加(例如,使用具有单独表的多对多表;使用ARRAY字段来保存多个值;或者在python中使用常量并将它们保存为单个DB中的整数,您可以将值编码为位 - 位0表示上限,位0和1表示 - 表示上限和下限,依此类推。)

相关问题