【问题标题】:Separate Database table vs serialized key:value pair单独的数据库表与序列化键:值对
【发布时间】:2021-09-07 00:22:33
【问题描述】:

我正在为膳食调度程序 Web 应用程序设计一个关系数据库。 我已经设置了 99%,但我想知道是否为“膳食类型”条目使用单独的表格。 综上所述,用户可以任意添加自己的膳食类型(早餐、小吃、晚餐),以任何顺序,我目前将它们存储在一个简单的列表中(为方便起见,在前端使用 javascript 排序)。 它最多不会有超过六个元素(他们甚至计划一天吃超过 6 顿饭),所以我将它们全部保存在数据库的设置表中,该表包含作为键:值对的行。 在这种情况下,它是'meals':[代表python列表的json字符串]

问题是每个预定的食谱都需要通过膳食类型来限定。

id_scheduled_meal
id_recipe
meal_type

现在,我必须使用保存在 key:value 对中的确切字符串,以便将其与特定的膳食类型相关联,因此 meal_type 将是“Breakfast”或“Snack”,而不是 id。感觉冗余数据太多了。

同时,我不确定用单独的表(meal)创建一个单独的对象(Meal)是否好,只添加4-6个条目和1-3列(id,name,position )。

有什么建议吗?我很高兴澄清,我意识到解释可能不够清楚。

提前致谢

【问题讨论】:

    标签: python database database-design sqlalchemy relational-database


    【解决方案1】:

    我觉得这是非常基于意见的,答案将取决于您希望如何与数据交互。如果您计划编写包含餐食类型的查询,那么您可能会为自己省点麻烦,只做额外的表,尽管管理/保存项目会更复杂。如果它只是一个您计划在 python(或其他)中使用的列表,那么序列化列表并保存文本可能是更好的选择。额外的冗余空间是否会对您产生不利影响将取决于您的应用程序和要求。

    【讨论】:

    • 感谢您的评论。现在唯一让我犹豫不决的是处理删除这些条目。我将不得不比较之前的列表,查看哪些列表已被删除,并使用一些通用的“未分配”更新使用它的数据库条目。同时正如你所说,如果它是一个单独的对象类型,我不能只保存列表并满足。即便如此,它通常是用户设置一次就忘记的东西。如果他们改变习惯,则一年两次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2012-02-19
    • 2011-04-11
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多