2011-10-09 53 views
0

我想改善字段的名称更明显它是什么意思..是字段名称好吗?或者可以改变什么以使其更明显?如何改善字段名称

mysql> select * from order_items; 
+----+----------+--------+----------+------------+-------+ 
| id | order_id | name | quantity | item_price | total | 
+----+----------+--------+----------+------------+-------+ 
| 1 |  5 | Item 1 |  2 |  3.00 | 6.00 | 
| 2 |  5 | Item 2 |  1 |  2.00 | 2.00 | 
+----+----------+--------+----------+------------+-------+ 

mysql> select * from orders; 
+----+---------+---------+-----------------+---------------+----------------+----------+---------------+------------+----------------+------------+----------------------+--------------------+--------------------+----------------------+ 
| id | shop_id | user_id | shipping_method | shipping_fees | payment_method | card_fee | commision_fee | item_total | customer_total | shop_total | shop_total_remaining | our_commission_net | our_commission_vat | our_commission_gross | 
+----+---------+---------+-----------------+---------------+----------------+----------+---------------+------------+----------------+------------+----------------------+--------------------+--------------------+----------------------+ 
| 5 |  29 |  9 | delivery  |   1.00 | card   |  0.50 |   13 |  8.00 |   9.50 |  9.00 |     7.83 |    1.17 |    0.23 |     1.40 | 
+----+---------+---------+-----------------+---------------+----------------+----------+---------------+------------+----------------+------------+----------------------+--------------------+--------------------+----------------------+ 

字段名称说明:

  • item_total从总成本order_items.order_id = 5

  • customer_total客户支付(item_total + card_fee + shipping_fee

  • 总成本
  • shop_total总为了使商店(item_total + shipping_fees

  • shop_total_remaining总剩余支付回店(shop_total - our_commission_net

  • our_commission_net委员会,我必使(commission_fee * shop_total/100)

  • our_commission_gross佣金含增值税(our_commission_net + our_commission_vat

我添加了不必要的字段吗?

我用PHP来计算成本。

+1

是的,您有不需要的列(在db nomeclature中,这就是所谓的'字段')。在order_items中,total是一个计算值,除非你没有告诉我们什么。同上(可能)订单中的许多其他列。 – John

+0

@John哪个总共在order_items表中?我已经在问题 –

回答

1

我可以看到你实际上添加了许多没有必要的字段。这样想:如果你可以解释如何通过对其他字段应用任何操作来计算字段,那么它就是一个计算字段。

这些字段不应该是简约设计的一部分,因为它们可以通过操作其他字段获得。让我们来看看表格中最复杂的例子。

如果您想在示例中获得订单中所有项目的总数,则只需选择item_total字段。但如果不在那里会发生什么?你还能得到那个号码吗?是。这就是:

select sum(oi.total) from order_items oi 
inner join order o on (oi.order_id = o.id) 
where (o.id = 5) 

现在,我们已经摆脱了一个场,但我们可以删除order_items.total领域,仍然可以得到这样的结果?是。因为它也是一个计算字段。这就是:

select sum(oi.quantity * oi.item_price) from order_items oi 
inner join order o on (oi.order_id = o.id) 
where (o.id = 5) 

应用可以摆脱你所提到的所有字段的一个类似的模式。然后你会有一个最小的设计。

有一点值得一提的是,计算字段比查询值更复杂,因此它们在CPU和HD使用方面更加昂贵。计算字段的优点是,您可以避免数据冗余并节省一点空间:)

+0

中描述了我明白你来自@Mosty的位置 - 感谢您的解释。所以基本上像'shop_total','our_commission_net','our_commission_gross','our_commission_vat'这样的字段不是真的需要吗?我认为其中的一些字段很有用,因为我不必再次使用计算SQL查询。例如:如果我想查看委员会报告的列表 - 我可以简单地从'our_commission_gross'中抓取值,而不使用SQL查询来计算它。 –

+1

正确,但难以维护。此外,对于冗余数据,您可能(在您的示例中)orders.item_total = 1.00,因为没有规则强制该字段与order_items表中的项目之和之间的关系。此外,你可以“简单地获取值”,但为了做到这一点,你首先必须在存储它们之前计算它们 –