可能我没说清楚 product(id,name,buyprice) order(id,customerid,date) record(id,orderid,productid,sellprice) orderid参照order表的id 现在需要得到order的价格,是在product表中加一个orderprice呢,还是用 select sum(sellprice) from record join order on record.orderid = order.id where orderid = ?请给出选择理由或更好的办法我觉得效率上应该是第一种快,应为动态计算的话还要做表连接,还要做计算,如果是生成一张所有order的表格(包括order价格)会不会很慢?
product(id,name,buyprice)
order(id,customerid,date)
record(id,orderid,productid,sellprice) orderid参照order表的id
现在需要得到order的价格,是在product表中加一个orderprice呢,还是用
select sum(sellprice) from record join order on record.orderid = order.id
where orderid = ?请给出选择理由或更好的办法我觉得效率上应该是第一种快,应为动态计算的话还要做表连接,还要做计算,如果是生成一张所有order的表格(包括order价格)会不会很慢?
product表的库存数也通过计算进货和出货纪录的总数来取得吗?进出或纪录可是越来越多的
----------------------------------
如果你没有这个字段,别人手动删除record记录的话,你就亏钱了。:)
名称相同,价格不同的记录,这样做历史信息比较清楚,但是变价时较为烦琐2. 价格通过动态计算来获得, 这样在进行商品字典时候调整价格时候不需要新增记录的操作。
-----------------------------------------------------------------------------------
我认为这种方式好,数据库的结构明晰。
另外我想在实现的时候是否可以先把客户在网站上选中的商品的price缓存在应用程序的变量中或者放在一个Datagrid里,客户在网站操作时只利用这些数据进行计算,等到提交时才将计算出的总价存回,放在楼主说的第一种方式的orderprice里,这样数据库操作就少很多。不过有个缺点就是price可能和数据库的同步比较难一点。