什么是多值主键对象的良好数据结构?

时间:2010-01-25 18:36:31

标签: .net data-structures primary-key

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

(Make *,Model *,NumberOfDoors *,Description,Price,Mileage,Color)

Make,Model和NumberOfDoors的3元组构成了数据库中唯一的主键。我所做的是为每个订单项设置了一个“Car”类,但是如果我希望以

的形式拥有一系列汽车对象

{(特别制作模型和门票,数量,当前销售额),...}

其中集合中每个项目的第一个元素是唯一类型的汽车,第二个是计数(我有多少类型),第三个元素是该模型 - 门户数量的任何销售额,我正陷入数据结构困境。

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

//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字符串,值是“inventory”结构的实例。这是(在我看来)非常不优雅,尤其是哈希表的黑客攻击。对于具有由多个值组成的主键的对象,是否有更好的数据结构解决方案?

2 个答案:

答案 0 :(得分:5)

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

只需覆盖GetHashCodeEquals - 这样您就可以将对象本身用作Dictionary中的关键字,并考虑多个值。

答案 1 :(得分:1)

一般来说,我不是复合主键的粉丝。如果可能的话,考虑使用数字PK,例如CarId,它是一个身份/自动编号。然后在Make,Model和NumberOfDoors列上添加一个唯一约束。