【发布时间】:2009-12-18 16:47:23
【问题描述】:
我的数据库是这样设置的:
我拥有的每个产品都有自己的表格,其中记录了销售/交易的数量#(所以第 1 列是“transactionID”,第 2 列是“数量”)
ex) p-backScratcher(其中 p- 表示“产品”)
还有每年的表格,其中保存了每笔交易的记录。这些表中的每一个都包含以下列:“transactionID”、“date”、“time”、“pt_CA”、“pt_DB”、“pt_VC”、“pt_MC”、“pt_CH”、“pt_AM”
例如)sales-2008、sales-2009 等。
我希望能够引用一个包含每年所有记录的表,而无需更改该表的 sql 以包含新的一年。
例如,我想查询“p-backScratcher”的所有交易,我不想输入
SELECT sales-2008.date, sales-2009.date
FROM sales-2008, sales-2009
WHERE sales-2008.transactionID = p-backScratcher.transactionID
OR sales-2009.transactionID = p-backScratcher.transactionID
...而是:
SELECT sales.date
FROM sales
WHERE sales.transactionID = p-backScratcher.transactionID
【问题讨论】:
-
这种设计似乎很难使用。是否有理由选择这种设计而不是其他可能更容易使用的设计?
-
我的第一个想法是将所有内容都包含在一个表中; “pt_AM”列之后的任何内容都是产品的数量。基本上任何时候我会做这样的事情,我最终会用完列(从长远来看)。每个产品都有一个表格可以确保a)我不会有任何带有多余空条目的表格,b)通过按年份分隔销售,查找时间会更短;考虑到报告通常是每月或特定年份生成的(尽管由于发布的问题,我可能会将所有交易信息合并到一个表中)
标签: sql ms-access ms-access-2003