[MySQL]:表图或实际表。(追踪的一个主要关键)
-
22-09-2019 - |
题
我有一个数据库,具有以下关系:
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
因为,你应该使用视或不-真的,这是给你的。一个看不起作用或好或坏于查询,唯一的区别是,该定义存储在数据库。主要优点是
- 人们可以重复使用的定义没有复制的查询(并搞乱起来),
- 你可以改变的模式在一定程度上隐藏,从的应用程序提供更新的视图,因此(这后一种优势是往往高估)
其他提示
不能交易记录有一个外国的关键联系与计划的主要钥匙?或者它是一个多对多关系。不管怎么样,我看不到认为适当的在这里。
不隶属于 StackOverflow