什么是场景的T-sql查询?

时间:2011-02-25 17:52:35

标签: sql-server sql-server-2005 sql-server-2008

我有一个有公寓的场景,每个公寓在我的桌子上都有被称为“房产”的公寓。每个单位可以有多个设备,如交流电,电视,冰箱等。我们正在维护一个主设备表。

假设用户购买了该房子的一些物品,如电视,AC和CFL灯泡。因此,他将在第一次进行插入操作,其中插入了诸如ApplianceId,DateOfPurchase,Serial#of Product,PropertyId(单位的Id)之类的细节。直到这个我们没问题。

现在,我们的质量检查中出现了用户输入错误的序列号到电视的情况。现在他想更新记录。但在两者之间出现以下情况:

  1. 设备的序列号必须是唯一的,但两个不同的设备可能有相似的序列号,如果在我的公寓有4个设备,其中我有两个吊扇,一个冰箱和一个AC然后串行1个吊扇和AC的数量可能相同,但两个吊扇序列号不能相同。

  2. 应对所有属性进行检查。这应该适用于整个表格。它不应该是属性的。 那就是如果我有一个序列号为#1234的AC,那么SO大师Jon Skeet也不可能拥有一个序列号为#1234的AC。他可以让Refridgrator使用相同的Serial#。请注意,我们使用的是序列号,如123456789901 这样的简单数字形式。不允许使用任何字符。

  3. 请帮助我,并告知是否有任何不明确的事情。

4 个答案:

答案 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。