这个问题最好通过例子来提出。假设我有一个名为“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”结构的实例。这是(在我看来)非常不优雅,尤其是哈希表的黑客攻击。对于具有由多个值组成的主键的对象,是否有更好的数据结构解决方案?
答案 0 :(得分:5)
您可以使用实际的类或结构作为主键。
只需覆盖GetHashCode和Equals - 这样您就可以将对象本身用作Dictionary中的关键字,并考虑多个值。
答案 1 :(得分:1)
一般来说,我不是复合主键的粉丝。如果可能的话,考虑使用数字PK,例如CarId,它是一个身份/自动编号。然后在Make,Model和NumberOfDoors列上添加一个唯一约束。