0

我有一个类,我们称之为它TableOwner,它的一个字段是一个DataTable名称列(也是主键)和一个金额列。所以有一个主键列和第二个非主列。

TableOwner在我的程序中,我创建了一个实例集合。集合本质上是一个集合:逻辑上没有TableOwner' 的顺序,只关心每种存在多少。每个DataTable都填充了不同的数量值,但它们都具有相同的主键。

例如,imagineTableOwner用于存储银行账户上的数据。每个实例代表一个帐户,然后DataTable可能会记录帐户中每种货币的数量。对于每个帐户,该帐户中的美元、欧元或英镑的数量可能不同,但对于每个帐户,都有这三种货币的数据,即使金额为 0(帐户中没有钱)或null(可能缺少数据) ) . 所以基本上我想要一个二维表或矩阵,但是我的类层次结构阻碍了我这样实现它。

处理这一切的明智方法是什么?我可以想到以下方法:

1)先做一个DataColumn,然后将它传递给所有新的实例,TableOwner用于他们自己DataTable的。缺点:如果我后来决定要从主键中删除一行(例如,用户决定“你知道吗,我不再关心欧元,转储所有数据并删除该列。”),我必须遍历整个集合并从每个TableOwner表中逐一删除该行。

2)使DataTable所有TableOwner实例都使用一个(也许使它成为一个静态字段)。该表将有许多列,而不是一个金额列,例如 Amount1、Amount2 等。每个TableOwner实例在初始化时都会创建自己的数量列,并记住它的名称以备后用——现在删除一行是一个基本的数据库操作。缺点:似乎不优雅和“错误”。

如您所见,两者都有缺点。有没有更好的办法?

如果问题非常基本或措辞奇怪,我深表歉意,因为我对数据库知之甚少。

4

1 回答 1

1

您应该有一个包含所有者、货币和金额列的表

所以而不是

 Owner1 20$ £30 €40

你有三个记录

 Owner | Currency | Amount
 Owner1  $          20
 Owner1  £          30
 Owner1  €          40

(货币符号代表来自单独货币表的货币 ID)

如果一个人没有特定货币的金额,那么就没有个人和货币组合的记录。

这是标准化过程的一部分

于 2012-11-05T11:08:01.030 回答