我有一个包含三个表的数据库; items,item_unit和units。物品属于7个单位之一。创建这些表是:
CREATE TABLE items
(
itemID int PRIMARY KEY,
itemDefinition varchar (150)
)
CREATE TABLE units
(
unitID int PRIMARY KEY,
unitName varchar(25)
)
CREATE item_Units
(
itemID int FOREIGN KEY REFERENCES items(itemID),
unitID int FOREIGN KEY REFERENCES units(unitID),
PRIMARY KEY(itemID, unitID)
)
场景是,属于同一单元的项目不能具有相同的定义。我知道可以在表上创建索引和约束来限制重复,但是可以这样做,因为它与这种情况有关吗?
答案 0 :(得分:0)
根据您的方案,架构应如下所示:
CREATE TABLE items
(
itemID int PRIMARY KEY,
itemDefinition varchar (150) not null
)
CREATE TABLE units
(
unitID int PRIMARY KEY,
unitName varchar(25) not null
)
CREATE TABLE item_Units
(
itemID int FOREIGN KEY REFERENCES items(itemID),
unitID int FOREIGN KEY REFERENCES units(unitID),
itemUnitDescription varchar(200) null,
PRIMARY KEY(itemID, unitID)
)
create view items_with_units
as
select i.itemId,u.unitID,
isnull(ui.itemUnitDescription,isnull(i.itemDescription,'')+ ' '+isnull(u.unitName,'')) Description
from items i
left join item_units ui on i.itemID=ui.itemID
left join units u on u.unitID=ui.unitID
这样select * from item_with_units
会为您提供所需内容。