加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql – 数据库汗青

发布时间:2021-03-05 08:07:41 所属栏目:编程 来源:网络整理
导读:我们的应用措施中必要存储引用以供往后会见. 示例:用户可以一次提交发票,而且应该随时刻存储此发票包括的全部参考(客户地点,计较的金额,产物描写)和计较. 我们必要以某种方法保存参考文献,但假如产物名称有变革吗?因此,某种水平上我们必要复制全部内容,以

我们的应用措施中必要存储引用以供往后会见.

示例:用户可以一次提交发票,而且应该随时刻存储此发票包括的全部参考(客户地点,计较的金额,产物描写)和计较.

我们必要以某种方法保存参考文献,但假如产物名称有变革吗?因此,某种水平上我们必要复制全部内容,以便以跋文录,不会受到将来变革的影响.纵然删除了产物,也必要在存储发票时举办考核.

这里有关数据库计划的最佳实践是什么?纵然是最机动的要领,譬喻当用户想要稍后编辑发票并从数据库规复时?

感谢!

最佳谜底 这是一种要领:

从本质上讲,我们从不修改或删除现稀有据.我们通过建设新版原来“修改”它.我们通过配置DELETED符号来“删除”它.

譬喻:

>假如产物变动价值,我们会在PRODUCT_VERSION中插入新行,而旧订单会保持与旧PRODUCT_VERSION和旧价值的毗连.
>当买家变动地点时,我们只需在CUSTOMER_VERSION中插入一个新行并将新订单链接到该行,同时保持旧订单链接到旧版本.
>假如产物被删除,我们并不会真正删除它 – 我们只需配置PRODUCT.DELETED符号,因此汗青上为该产物建造的全部订单都保存在数据库中.
>假如客户被删除(譬喻由于他哀求打消注册),请配置CUSTOMER.DELETED符号.

留意事项:

>假如产物名称必需是独一的,则无法在上述模子中以声明方法逼迫执行.您必要将NAME从PRODUCT_VERSION“推广”到PRODUCT,将其作为密钥并放弃“成长”产物名称的手段,或仅在最新的PRODUCT_VER(也许通过触发器)上逼迫执行独一性.
>客户的隐私存在隐藏题目.假如客户从体系中删除,也许必要从数据库中物理删除其数据,只需配置CUSTOMER.DELETED就不会这样做.假如这是一个题目,要么删除全部客户版本中的隐私敏感数据,要么将现有订单与真实客户断开毗连并将其从头毗连到非凡的“匿名”客户,然后现实删除全部客户版本.

该模子行使了大量的辨认相关.这导致“胖”外键而且也许有点存储题目,由于MySQL不支持前沿索引压缩(与Oracle差异),但另一方面在InnoDB always clusters the data上PK而且这种聚集也许是有益的为了示意.另外,JOINs不太须要.

具有非标识相关和署理键的等效模子如下所示:

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读