V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thisisgpy
V2EX  ›  Java

请教各位一个数据库设计的问题

  •  
  •   thisisgpy · 2017-11-05 19:52:54 +08:00 · 3625 次点击
    这是一个创建于 2575 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个产品 A,他的价格可能每天都不一样,现在我需要预设置未来一个月这个产品每天的定价。我现在在页面上展示一个日历,然后前端允许用户双击日期进行价格填写并保存。 我的问题是:数据库该怎么设计,才能比较好的存储这些价格信息?

    目前我是将设置了价格的日期存入数据库

    ----------------------------------
    product_id | sale_date | price
    ----------------------------------
    10000      | 2017-11-4 | 100.00
    10001      | 2017-11-5  | 102.00
    ----------------------------------
    

    查询产品价格时先从这张表查,如果查不到,就去查在产品表里面设置的价格。

    请问有什么更好的数据库设计吗?

    7 条回复    2017-11-06 08:54:43 +08:00
    RadishWind
        1
    RadishWind  
       2017-11-05 20:12:27 +08:00
    问题描述的不是很清楚,有没有具体的需求?什么样的用户?单个还是多用户?又是什么数量级的产品价格?
    mooncakejs
        2
    mooncakejs  
       2017-11-05 20:19:11 +08:00
    存这么存肯定没问题,读的时候:
    直接在 sku 表里保存价格,
    如果每天价格不同,定时更新。
    thisisgpy
        3
    thisisgpy  
    OP
       2017-11-05 20:22:43 +08:00
    @RadishWind 现在需求就是存在商品 A,在他被销售期间,每天的价格都不一样,我现在应该怎么设计数据来存储每天的价格信息?页面会显示当日的销售价格。所谓的用户,就是网站管理员,他可以来设置产品每天的销售价格,可以一次性设置未来 N 多天的价格。
    RadishWind
        4
    RadishWind  
       2017-11-05 20:28:44 +08:00
    如果商品不多的话,建议你现在这样就行,商品表里面有个默认的价格,然后后台如果设置了某一天的,就将其单独显示出来

    如果多的话,反范式也是可以的,直接用一张表,用某个特定的时间(如 1970-00-00 )来标志默认值,然后哪一天有就查哪一天的,这样的好处是可以直接用一个 sql 语句写出来 select * from product where date = "1970-00-00" and 1 = 1 and date = "2017-11-5"....这样
    q397064399
        5
    q397064399  
       2017-11-05 20:28:48 +08:00
    @thisisgpy #3 一张商品表 一张价格表 价格表外键关联到商品表 就好了
    iscraft
        6
    iscraft  
       2017-11-05 21:46:44 +08:00
    商品 id|年月|1|~|31
    skyFuture
        7
    skyFuture  
       2017-11-06 08:54:43 +08:00
    每天定时去跟新价格即可呀~~ 1 张表保持预价格,另外库存表表示正售卖的价格即可
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2513 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:48 · PVG 23:48 · LAX 07:48 · JFK 10:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.