我有一个有公寓的场景,每个公寓在我的桌子上都有被称为“房产”的公寓。每个单位可以有多个设备,如交流电,电视,冰箱等。我们正在维护一个主设备表。
假设用户购买了该房子的一些物品,如电视,AC和CFL灯泡。因此,他将在第一次进行插入操作,其中插入了诸如ApplianceId,DateOfPurchase,Serial#of Product,PropertyId(单位的Id)之类的细节。直到这个我们没问题。
现在,我们的质量检查中出现了用户输入错误的序列号到电视的情况。现在他想更新记录。但在两者之间出现以下情况:
设备的序列号必须是唯一的,但两个不同的设备可能有相似的序列号,如果在我的公寓有4个设备,其中我有两个吊扇,一个冰箱和一个AC然后串行1个吊扇和AC的数量可能相同,但两个吊扇序列号不能相同。
应对所有属性进行检查。这应该适用于整个表格。它不应该是属性的。 那就是如果我有一个序列号为#1234的AC,那么SO大师Jon Skeet也不可能拥有一个序列号为#1234的AC。他可以让Refridgrator使用相同的Serial#。请注意,我们使用的是序列号,如123456789901 这样的简单数字形式。不允许使用任何字符。
请帮助我,并告知是否有任何不明确的事情。
答案 0 :(得分:2)
属性表上的唯一约束(Product,SerialNo)? Assume产品是否包含productType
这应该可以解决问题。
GJ
答案 1 :(得分:1)
你需要通过事物的声音在appliance type, serial number
上获得一个唯一的约束或索引。
create unique index uix on appliances(type, serial_number)
答案 2 :(得分:1)
我将假设 ApplianceId 指的是设备的类型,即每种设备都有唯一的标识符。在这种情况下, ApplianceId 和 Serial#的组合构成了设备表的主键。设置将阻止导致冲突的插入或更新。
答案 3 :(得分:0)
同一产品的不同制造商可能是个问题。除了类型和序列号之外,您还需要约束中的make。