• 朱晓峰
    置顶
    2021-04-21
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了数据表中数据的增删改查操作,下面是思考题的答案; 添加商品表中记录的时候,可以判断一下,如果发现itemnumber不连续,可以通过显式指定itemnumber值的办法插入数据,而不是省略itemnumber让它自增。
    共 7 条评论
    1
  • 李鸣
    2021-03-22
    关于门店新加会员的id冲突,我们是不是可以通过加上门店编号来解决,不需要每次都去总部mysql去搜一遍

    作者回复: 不建议通过给id增加与业务有关的信息解决问题,比如门店编号,原因是门店编号也是有可能会重复或者重用的

    共 3 条评论
    8
  • 王建
    2021-03-29
    老师好, 1. 既然门店客户端能够更新总部数据库为啥还要把数据放到本地呢。 2. 每次插入数据都要去总部管理信息表获取ID,插入后还要更新总部管理信息表,这个管理信息表会导致资源争用,在数据并发请求高的时候肯定会出现阻塞或者更新失败的情况吧。 3. 主键使用varchar类型,使用UUID 或者雪花ID 生成随机字符串做主键是不是更好一点呢。

    作者回复: 1. 主要原因是门店的网络状况不稳定,为了支持断网销售,所以先把数据存在本地 2. 添加会员操作的频率还是比较低的,出现阻塞的风险不大 3. UUID,雪花ID都是不错的办法,但是实施成本比较高,

    共 7 条评论
    6
  • 右耳朵猫咪
    2021-03-18
    如果是多个门店同时添加会员信息呢?那么这些门店查询的max_id是一样的,添加会员的id也是一样的了,即max_id+1。

    作者回复: 需要用事物,防止别的连接读取到错误的信息

    共 6 条评论
    4
  • T
    2021-06-29
    以业务字段做主键还有一个后果就是,索引的叶子结点中的内容占用空间可能会比较大,一个页面可能能放入的数据更少了

    作者回复: 存在这种可能性

    
    3
  • giteebravo
    2021-03-18
    交作业了: update domo.trans set price = price * 0.8 where itemnumber in (select itemnumber from demo.goodsmaster where unit = '包');

    作者回复: 请参考我发布的参考答案

    共 4 条评论
    3
  • SharpBB
    2022-02-09
    1.业务字段做主键 会员卡做主键 如果会员退卡 商家把卡发给另一个人 就可能导致查询出差错 手机号做主键 存在运营商回收手机号的情况 身份证号做主键 虽然是唯一的 但用户不大想填身份证 所以尽量不要用业务字段做主键 可能存在复用的情况 2.使用自增字段做主键 删除主键约束 ALTER TABLE demo.membermaster DROP PRIMARY KEY; 一般情况下只有一个数据库服务器是可以的 但存在多个门店用不同数据库 进行汇总 主键会存在冲突 3.手动赋值字段做主键 在总部表中维护一个会员最大id字段 每次新增会员就在最大id基础上+1 再进行插入 总结 单数据库系统 自增字段做主键就可以了 分布式系统 可以考虑全局生成唯一id 如雪花算法

    作者回复: 好的

    
    2
  • Ethan New
    2021-04-11
    主键就是要唯一的定位到一条数据,使用自增主键还是自己指定主键要看项目是单机系统还是分布式系统。如果是单机的,自增主键完全没有问题。如果是分布式的,一般在业务层自己生成全局唯一id,插入到数据库。

    作者回复: 是的

    共 2 条评论
    2
  • GLADIATOR
    2021-08-25
    mysql> SELECT b.membername,c.goodsname,a.quantity,a.salesvalue,a.transdate -> FROM demo.trans AS a -> JOIN demo.membermaster AS b -> JOIN demo.goodsmaster AS c -> ON (a.memberid = b.id AND a.itemnumber=c.itemnumber); 针对这个报表关联有个疑问,那就是自增ID适不适合做业务含义?针对本例是因为前面存量数据通过update保证a.memberid = b.id;但是后续增量如何保证memberid和id关联呢?因为自增ID随时可能不连续,任何事务回滚,数据库重启等都会导致自增不连续。

    作者回复: 一旦我们定义了自增字段id为会员信息表的主键,那么后继的会员消费,自然都会记录对应会员的id,因此也就不会出现因为不连续而无法关联的问题了。

    共 2 条评论
    1
  • qwfys200
    2022-07-15 来自北京
    UPDATE demo.trans AS a,demo.membermaster AS b,这个也很有用。

    作者回复: 是的

    
    