我想首先声明我是一个 SQL 菜鸟,因此在尝试解决此问题时,我将不胜感激有关我的工作流程和/或心态的任何建议或意见。
我正在做的是收集几个应用程序的使用统计信息,在几个类别中(并非所有类别都一定适用于所有应用程序),并将它们存储在数据库中。
我已经设置了几个表来做到这一点,然后一个表将所有结构链接在一起(从现在开始:Dtable):
(column name - details)
UserID - foreign key to another table which stores users data
ApplicationID - foreign key to another table which stores applications data
CategoryID - foreign key to another table which holds a list of different categories
Value - the actual data
每个应用程序收集数据,然后使用存储过程将其提交到数据库。由于数据量可能会根据实际使用情况(并不总是发送每个类别)和每个应用程序而有所不同,我正在考虑将数据作为带有CategoryID和Value列表的 DataTable 发送,因此我不必调用每个单独类别的程序(Ptable)。
我需要根据CategoryID将Dtable中的每条记录更新为Ptable中的正确值,但还要按UserID和ApplicationID过滤。UserID和ApplicationID将作为其他两个参数提供给存储过程。Ptable仅包含CategoryID / Value记录的列表。
现在,我读到了游标(为表参数中的每条记录设置数据库表中的相关数据),但共识似乎是“不惜一切代价避免”。
那么,我将如何根据Ptable中的不同记录来更新表?
PS
这些表格的结构是这样的,以便在将来添加更多类别/应用程序时保持敏捷性和可扩展性。如果有更好的方法,我会很高兴知道。