我有一个数据库,具有以下关系:

Transaction->Purchase->Item->Schedule

Transaction - self explanitory
Purchase - any purchase info that relates to the item being purchased (quantity, if the user purchases more than one item).  A given Transaction can have more than one Purchase_ID tied to it.
Item - Stores Item info and relates it to individual clients.
Schedule - determines the price of an item at a given time of day.

我需要执行查询,必须选择一系列值从日程安排的基础上,如果 Transaction.TimeStamp 是内提供的日期范围。查询需要选择一个价值从日程安排的基础上,它的主要关键。主要关键是不可追溯从事务。

为了解决这个问题,我已经决定建立一个表格链接交易直接向计划是主要的。

最近,我发现 表景 -这会是一个适当的情况下做出一个表"看"?或者我应该只是创建一个"实际"表 TransactionSchedule?

transactionSchedule
Transaction_ID    Schedule_ID

我的问题是我做不了解具体情况时表看法是有用的/有什么好处。

是具有一个表,以跟踪交易>计划矫枉过正的?

真的任何一般性指导这个问题,将不胜感激。

编辑: 这种查询的只是检索的数据已经输入

--谢谢

有帮助吗?

解决方案

我强烈敦促你复制价格从计划直接购买,只要你插入的。这样,你已经解决了你的问题,同时,防止从一个不同的价格向客户收取以后如果你不小心(或故意)改变的时间表。

至于有关主要钥匙的时间表,这不是可以溯源自一个事务:这是一个迹象的糟糕的设计。我的意思是,想想吧-你有时间戳记的交易、安排通过的定义放置在时间的使用,并从时间戳-你为什么不能涉及他们吗?AFAICS,主键的计划应该是 item_id, from_timestamp, to_timestamp

假设你的日程表和时间戳我的查询将会

SELECT     ..your columns..
FROM       Transaction t
INNER JOIN Purchase    p
ON         t.id        = p.transaction_id
INNER JOIN Item        i
ON         p.id        = i.purchase_id
INNER JOIN Schedule    s
ON         i.id        = s.item_id
AND        t.timestamp BETWEEN s.from_timestamp
                           AND s.to_timestamp

因为,你应该使用视或不-真的,这是给你的。一个看不起作用或好或坏于查询,唯一的区别是,该定义存储在数据库。主要优点是

  • 人们可以重复使用的定义没有复制的查询(并搞乱起来),
  • 你可以改变的模式在一定程度上隐藏,从的应用程序提供更新的视图,因此(这后一种优势是往往高估)

其他提示

不能交易记录有一个外国的关键联系与计划的主要钥匙?或者它是一个多对多关系。不管怎么样,我看不到认为适当的在这里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top