繁体   English   中英

在MySQL中管理客户订单的最佳做法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM