1

我有“部分”对象和“材料”对象。每个零件最多分配 1 种材料。每种材料都分配给 0 个或多个零件。这是一个有 2 个级别的 DAG。

每个零件对象都应该引用其材料吗?还是只存储材料名称或索引会更好。或者除了数据库还有其他方法吗?

第一种方式意味着对同一个物质对象的多次引用,这看起来很糟糕,但有多糟糕?

第二种方法看起来很难看,因为数字索引可能无法正确更新,或者如果按名称引用材料,则需要进行字符串比较。它还重新发明了该语言中已经可用的对象引用。

4

1 回答 1

0

跟着参考走。它很快并且使用很少的内存,您将需要它。(我确实假设您会实际使用它。另一种或附加的选择是保留每种材料的零件参考列表。但如果您不需要它,请不要这样做。)

当您尝试获取材质的对象时,存储材质名称或索引将占用更多空间并花费更多。实际上,获取零件材料名称的最便宜的方法是使用引用来获取材料并从材料中获取名称或索引。

不要在程序内部使用名称和索引。必须使用它们(并存储在您的程序中)才能从数据库和其他程序中获取内容。(“其他程序”在实践中是指套接字和此类平面文件——最初数据来自另一个程序或该程序的另一个会话。)并且您必须维护您的引用:如果材料被删除,所有引用它必须改变。或者您可以将材料标记为已删除(适用于垃圾收集,但请注意重新添加)。

并且自相矛盾:我在极少数情况下使用名称而不是引用,因为当材料(以您的案例为例)不断添加和删除时它们会很好地工作。如果我将某物标识为“木材”,则可以删除并添加 100 次该名称的材料,而最终不会影响我的零件对它的使用。

于 2012-04-09T19:24:07.900 回答