我试图了解使用 1 张大桌子还是许多小桌子更好。我已经通过网络准备好了这取决于每种情况,所以我想根据下面的示例提出任何建议:
假设我想创建一个包含资产所有特征的数据库。资产可以分为不同的资产类别(即股票、债券、现金等)。所有资产类别都具有相似的特征(即 ID 代码、发行人名称)并且一些资产具有特定特征(债券具有到期日而股票没有)。所以我的问题是我是否应该使用一个大表,当资产不适用时,该表将保留为 NULL(如下所示)

还是每次我需要生成报告时,我应该使用几个表作为并加入它们?(如下所示)

每种情况的利弊是什么?例如,如果我有 1m 个不同的 ID 代码,它是否需要为 1 表选项增加空间,而使用多表选项查询性能会显着下降?
如果每种类型的独特特征是 50 种,并且有 10 种不同的资产类别,该怎么办?我应该创建一个 50 x 10 = 500 列的表(每行的大部分列都为 NULL)还是应该有 10 个不同的表并在我想创建报告时使用 LEFT JOIN?
我创建了一个客户端服务器应用程序,它当前能够将消息作为容器发送:
[Serializable]
public class MsgContainer
{
public string TableName { get; set; }
public bool SomethingBool { get; set; }
public DataTable DataTableData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
问题:根据用户的请求,我希望服务器能够发送表单
public Form requestedForm { get; set; }
Run Code Online (Sandbox Code Playgroud)
问题(因为我已在网上阅读并在我的应用程序中尝试)WinForms不可序列化,这就是为什么我收到以下错误:
System.Runtime.Serialization.SerializationException:在程序集'System.Windows.Forms中输入'System'Windows.Forms.Form',Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'未标记为可序列化.
我的问题有解决方法吗?