数据库设置:MSSQL
我有一个通过 API 调用传入的源记录。该调用旨在更新数据库中的系统。
第一个表是一个通用表,所有系统都有一些详细信息
SystemId | SystemName | Type | Memory | Storage | Etc......
-----------+--------------+-----------+-----------+-----------
92 | Server1 | BlueType | 16GB | 10TB |
96 | Server2 | RedType | 24GB | 20TB |
...
...
然后我至少有 2 个表,每个表都有与系统特定角色相关的不同字段:
BlueId | BrokerName | Threshold | TriggerLevel | Etc......
--------+--------------+-----------+---------------+-----------
41 | Palooza | 400 | 4 |
42 | Almamater | 900 | 3 |
...
...
RedId | Parent | MetalCast | Available | Etc......
--------+-------------+-----------+------------+-----------
87 | Pindle | Yes | Yes |
88 | Feldspar | No | No |
...
...
提供数据的来源将在一份声明中提交。该声明将来自一个知道它是什么“类型”(红色、蓝色等)的来源,并且将具有与该类型相关的适当字段。
例如,如果语句来自“红色”类型的系统,则语句将类似于以下内容:
SystemName = CrosserTT1
Type = BlueType
Memory = 20GB
Storage = 10TB
BrokerName = PintoCall
Threshold = 250
TriggerLevel = 6
etc....
这意味着我需要获取这些数据,用适当的字段更新上面的“Common”表,确定“Type”的值是什么,并根据类型值用适当的字段更新适当的表。在上面的示例中,我想更新公共表,然后根据类型的值更新 Blue 表。在这种情况下,我什至不想碰红色的桌子。
这些是我想知道的事情:
- 这是否有可能有一个一次性可以更新通用的插入语句,选择要更新的类型表,然后去更新?
- 我是否应该有一个包含所有类型的所有字段的表,并且只将数据添加到适合该类型的列中?
- 我是否应该有一个包含 COMMON 的表,其中包含所有与系统相关的所有字段,并将与记录不相关的字段留空?
我正在尝试确定针对此类事情的最佳实践——性能和简单性。
就上面示例的插入语句而言,拥有一个存储过程并为其提供所有值是否更有意义?
感谢您的宝贵意见。
如果您需要澄清,请告诉我。