问题
我现在有一个产品数据库。下面是一个快速模式:
表bdProduct
| IDBDProduct |
| Code |
| Description |
| DCreated |
| UCreated |
| DModified |
| UModified |我现在到了我想要储存价格的时候,在那里我有一些问题,我预测最好的方式。
最终,我很肯定我们将走向世界,这取决于我将在哪里销售我的应用程序,这意味着我可能有CAN美元(开始),然后美元,欧元欧洲,等等。
储存这些信息的最好方法是什么?我已经想过:
| CANPrice |
| USDPrice |
| EURPrice |我不知道为什么,但我觉得这不是个好办法。关于信息,过去三年我一直在使用该系统(CAN/美元/EURPrice),我们一直在努力解决添加新类型的问题。
这是我已经收集到的
边问题
我问了关于价格的问题,但是我对翻译的数据也有同样的问题,例如,我会有一个英文的productDescription,但是我也会有一个法国的客户,所以,也许我应该把bdProductPrice转换成一个bdProductExtension,在这个bdProductExtension中存储我想给我的产品的信息类型?
发布于 2013-10-11 12:30:01
根据你想要达到的目标,不同的方法是可能的。
我的建议:
与End_date类似的31-DEC-9999作为当前值(对于获取当前价格也很有用)。
无论如何,在一天结束时,您需要将这些信息存储在某个地方。您可以尝试限制应用程序前端的复杂性,为您的商店的Price/Language组合创建视图(也可能是包含所有产品数据的扩展版本)。
Product_UK - basic product info, GBP_Price, English Short Description
Product_FR: - basic product info, EUR_Price, French Short Description
Product_CAN_EN - basic product info, CAD_Price, French Short Description
Product_CAN_FR - basic product info, CAD_Price, French Short Description
(Product_UK_Ext - all product info, GBP_Price, English Short and Long Description)最后一件事,我在过去看到的,通常你在处理产品,价格和描述时没有性能问题。零售应用程序的大量数据位于sales/transactions表中,获取产品描述的附加连接不会损害数据库(但这只是SQL而不是science :)。
发布于 2013-08-10 23:14:03
也许我遗漏了一些东西,但是为什么不只是在表中添加一列(也许是CURRENCY_TYPE ),并有另一个表用于引用完整性,这样用户就不能为同一种货币(CAN、加拿大元等)放置多个值,并且可以存储您想要的有关该货币的任何信息。
对于有关货币的任何信息,仍然需要对参考表进行连接,但是在基表上,您将得到价格和它的货币类型。
发布于 2013-09-21 11:01:53
在我看来,数据库是存储信息的地方,将语义信息(比自己的数据库模式提供的更远)移动到数据库通常是一种不需要多次的开销。
除非同一商店需要使用不同货币的价格,否则将此信息转移到数据库是没有意义的。任何购物者通常都希望所有的价格使用相同的货币。
因此,我只会在数据库中存储价格(正如您最初所认为的那样)。知道你的价格是什么意思,这是你的业务逻辑的问题。
从不同商店的整个应用程序来看,我看到了两个选项。
顺便说一句,您可能想看看这个关于数据库设计模式的堆栈溢出回答,它提供了推荐的读取。
https://stackoverflow.com/questions/18166918
复制相似问题