【发布时间】:2011-07-06 02:13:37
【问题描述】:
我不确定这个标题是否真的有意义,但这是我的普遍问题:
我有一个表格,其中包含有关跨多个不同设备和平台的事件的信息。我不确定如何有效地设计用于查询所有事件的架构,然后查询特定的事件信息。
我试图将其全部保留在下面的伪代码中,因此如果代码中的某些内容没有意义,那只是因为我试图保持其通用性。
这是一个人为的例子:
Event Table:
int Id
datetime Occured_On
uniqueidentifier UserId --> Users table
int Category (the type of event) --> Categories table
text Summary (textual summary of the event)
text EventSource (specifies whether this is a DesktopEvent or MobileEvent)
然后,每个设备都有自己的每个事件的数据集。例如:
DesktopEvent
int Id
int EventId --> Event table
text Hostname
text LoggedInUsername
MobileEvent
int Id
int EventId --> Event table
int PlatformId
text ESN
...
我想查询最近 X 个最近事件的事件表。现在,我目前有一列指定事件的来源,以便我可以对相应的表进行第二次查询。
results = SELECT * FROM Event DESCENDING Occured_On LIMIT 5.
foreach (result in results)
{
if (result.EventSource == "DesktopEvent")
data = SELECT * FROM DestkopEvent WHERE EventId == result.EventId
...
}
这似乎非常低效。
可能有许多不同的事件来源,而不仅仅是上面的 2 个(DesktopEvent 和 MobileEvent),因此情况更加复杂。尝试连接 10 多个表来检查哪个表不是 NULL 似乎比上面更糟糕。
有没有更好的方法来构建这些数据?非常感谢。
【问题讨论】:
标签: sql sql-server database schema