【问题标题】:What's a good data structure for a multiple-value primary key object?多值主键对象的良好数据结构是什么?
【发布时间】:2010-01-25 18:36:30
【问题描述】:

这个问题最好通过例子来问。假设我有一个名为“Car”的数据库表,其中包含以下列:

(品牌*、型号*、门数*、描述、价格、里程、颜色)

Make、Model 和 NumberOfDoors 的 3 元组构成数据库中的唯一主键。我所做的是为每个订单项创建一个“汽车”类,但如果我想以

的形式收集汽车对象

{(特定品牌型号和门数、数量、当前销售额),...}

其中集合中每个项目的第一个元素是唯一类型的汽车,第二个元素是数量(我有多少这种类型),第三个元素是该品牌模型门的任何当前销售额,我遇到了数据结构困境。

到目前为止,我一直在做的是制作一个适合哈希表的结构,如下所示:

//This will be the unique key for the hashtable
dim uniqueID as String = myCar.make + "@" + myCar.model + "@" + myCar.doorCount

//This is the structure that will hold the perinent info about that unique
//car type
Structure inventory
    Dim count as Integer
    Dim currentSales as String
End Structure

此时,我将继续从数据库表中填充哈希表,其中哈希表的键是 uniqueID 字符串,值是“库存”结构的实例化。这(在我看来)非常不雅,尤其是哈希表的唯一ID。对于主键由多个值组成的对象,是否有更好的数据结构解决方案?

【问题讨论】:

    标签: .net data-structures primary-key


    【解决方案1】:

    您可以使用实际的类或结构作为主键。

    只需覆盖 GetHashCodeEquals - 这允许您使用对象本身作为 Dictionary 中的键,并考虑多个值。

    【讨论】:

      【解决方案2】:

      一般来说,我不喜欢复合主键。如果可能,请考虑使用数字 PK,例如 CarId,它是一个身份/自动编号。然后对 Make、Model 和 NumberOfDoors 列设置唯一约束。

      【讨论】:

      • 很遗憾,在这种情况下我无法更改数据库,但感谢您的建议。我会确保牢记这一点,以便将来我有权更改的任何数据库。
      猜你喜欢
      • 1970-01-01
      • 2011-01-05
      • 2018-06-18
      • 2012-10-30
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多