我想在数据库列中保存常量列表。 可用选项是字母表的一部分:上部,下部,数字,符号。 用户已经能够选择其中的多个但是如何将它们保存到数据库中。我认为数据库关系不适合4个常量吗?
答案 0 :(得分:0)
实际上,拥有一个表是不错的选择 - 它很简单,使用此解决方案添加更多选项或修改现有选项非常容易。
虽然,我可以理解这个问题的原因,但可能感觉就像一个"开销"让整个表只存储4个值。
其他选项包括:
使用Enum
类型的字段,PostgreSQL和SQLAlchemy都支持该字段。但是,如果要添加更多值或编辑现有值,则修改Enum
字段会更复杂(您只需要使用比表格更复杂的SQL)。
在数据库中使用integer
(或smallint
)字段,并在代码中包含相应的常量(CODE_UPPER = 1
,CODE_LOWER=2
等等)。在数据库级别,您还可以使用约束来仅将字段值限制为可能的值集。我不太喜欢这个解决方案,因为它可能不太可靠(如果你没有约束,你可能会意外地保存错误的值),并且当你查看数据库时不那么明显。
P.S。不确定为什么你被投票,也许人们被#34;数据库关系不适合4个常数",可能"除了拥有4个值的表之外还有其他选择吗? ?&#34 ;.
另外我猜测标签中的PostgreSQL
和SQLAlchemy
,最好在你的问题中提及这一点。
P.P.S。有了上面的内容,在重新阅读你的回答之后,我认为你也可能有兴趣保存多项选择价值(比如upper
+ lower
)。在这种情况下,您仍然可以使用上面的所有选项以及一些特定的添加(例如,使用具有单独表的多对多表;使用ARRAY
字段来保存多个值;或者在python中使用常量并将它们保存为单个DB中的整数,您可以将值编码为位 - 位0表示上限,位0和1表示 - 表示上限和下限,依此类推。)