[英]Best practices of managing customer orders in MySQL
在开发内部站点时,实验室的人员可以通过中央数据库下达某些物料的订单,以使物料易于管理。
一个人将下订单(可以是一个项目,也可以是多个项目,每个项目具有不同的数量等),然后我将其记录到数据库中。 但是,当我决定如何设置数据库时,会看到两个选择:
选项1将所有数据放入一个表中:
| Salt | Name | Email | Product ID | Quantity |Sent|
==========================================================================
|0000000001|John Doe |john.doe@au.dk |175463 |25 |1 |
--------------------------------------------------------------------------
|0000000001|John Doe |john.doe@au.dk |300146 |169 |1 |
--------------------------------------------------------------------------
|0000000001|John Doe |john.doe@au.dk |855457 |5 |1 |
--------------------------------------------------------------------------
|0000000001|John Doe |john.doe@au.dk |290142 |13 |1 |
--------------------------------------------------------------------------
|0000000002|Jane Doe |jane.doe@au.dk |173755 |3 |0 |
--------------------------------------------------------------------------
|0000000002|Jane Doe |jane.doe@au.dk |256984 |39 |0 |
--------------------------------------------------------------------------
复制许多行可提高读取/写入/更新速度,并大大增加存储空间。 但这很简单,因为所有内容都集中在一个地方。
选项2:
两张桌子。 记录订单(并分配唯一的盐)的商品。 另一个记录订单详细信息(项目),并记录盐。 第二张表中的盐并不是唯一的,因为某些订单可能包含多个物品。 这两个数据库是链接在一起的,例如,当我尝试提取订单,并按该订单放置所有项目时,我只会搜索盐。
表格1:
| Salt | Name | Email |Sent|
==============================================
|0000000001|John Doe |john.doe@au.dk |1 |
----------------------------------------------
|0000000002|Jane Doe |jane.doe@au.dk |0 |
----------------------------------------------
表2:
| Salt | Product ID | Quantity |
========================================
|0000000001|175463 |25 |
----------------------------------------
|0000000001|300146 |169 |
----------------------------------------
|0000000001|855457 |5 |
----------------------------------------
|0000000001|290142 |13 |
----------------------------------------
|0000000002|173755 |3 |
----------------------------------------
|0000000002|256984 |39 |
----------------------------------------
我猜第二个选项的优点是每行中的冗余信息较少-相反,第一个选项的优点是与两个相比,我只需要维护一个表。
我应该使用一个较容易处理的单个表,还是使用多个表遵循数据库规范化最佳实践? 您用来决定走哪条路的过程是什么?
在过去的十年中(我来之前),我从事过一个程序员的宠物项目扩展为成千上万行代码的工作。 该程序在阳光下做完了所有事情,真是一团糟。 由于程序员想快速地做事并且不遵循永恒的编码原则,所以情况一团糟。
因此,作为一个混乱的具体例子。 有一个数据库表,该表具有200至300列之间的某个位置。 一直存在问题,您不能仅仅将其分解为更直观的结构,因为那将是一个巨大的项目。 您正在通过合理化“将所有内容都填充在一个地方,因为这样更容易”的谬论开始雪球滚动。
始终使数据库尽可能地被封装,标准化,高效和直观。 即使现在比较困难,将来必须使用您的代码的程序员也会感谢您。 同样,如果人们看到您在代码中甚至是琐碎的项目中弄乱了人,那么您将不会被选中在未来35年内的某个时间在从小行星带开采资源的宇宙飞船上练习飞船。 做一个漂亮的工作,因为你想承担更多重要的事情。
我发现规范化表格可能是更好的方法:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.