【问题标题】:solution for single attribute in table表中单个属性的解决方案
【发布时间】:2013-04-14 22:36:19
【问题描述】:

我正在设计数据库架构。我有用户。用户提出订购请求。订单与付款相关联。付款完成后,我想为该用户生成贴纸。
贴纸有初始奖金(即 10 美元)。现在,管理员可以编辑贴纸奖品。因此,如果管理员更改贴纸奖品,则在管理员更改后订单将生成新奖品。

按数据库架构如下:

用户(ID、姓名、电子邮件、密码)
订单(id、user_id、no_of_sticker、sticker_prize、地址、状态)
付款(id、order_id、金额、日期)
贴纸(id、order_id、名称、内容)
贴纸信息(贴纸奖品)

现在,我的问题是 --- 只为一个属性创建新表是否很好。 该sticker_prize 仅供管理员编辑

请提出您宝贵的建议。
感谢您的建议。

【问题讨论】:

  • 在我看来,您的sticker_info 表中缺少某些东西 - 它应该将贴纸的 id 作为外键,对吧?还是所有贴纸的价格都一样?那么这就是你所缺少的点,一个贴纸类别和相关的价格......
  • 所有贴纸都有相同的奖品。没有不同类别的贴纸。
  • “贴纸”表的意义何在?为什么order_id存储在其中,尤其是sticker_id存储在orders表中?为什么管理员不能编辑订单表中的标价?
  • 因为订单是由用户给出的。如果管理员及时更改它,我添加了 tag_prize 以记录先前订单的 tag_prize。如果设置了订单,则订单表将获得条目。要设置订单 tag_prize 必须事先存在于数据库中。希望你得到...
  • 您是说在任何给定时间都有“当前贴纸奖”,并且当创建订单时,它会获得当时有效的贴纸奖?例如管理员将贴纸奖设置为 10 美元。用户A创建订单,奖金为10美元。用户 B 创建订单,奖金为 10 美元。管理员将奖金更改为 15 美元。用户 C 创建订单,奖金为 15 美元。等等。或者管理员是否更改现有订单的奖品金额?

标签: database database-design entity-relationship


【解决方案1】:

从数据库设计的角度来看,创建sticker_info 表以存储单个值是可以的。你应该确保你的表上有一个主键,这样你就不会得到重复的行。

在较大的系统中,通常有很多这样的值,解决方案通常是一个表格,例如:configuration( configId, configValue )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2017-03-11
    相关资源
    最近更新 更多