【发布时间】:2015-10-03 22:58:32
【问题描述】:
所以我正在设计一个关系数据库,其中涉及电影、剧院、销售产品/纪念品的展台。这是让我感到困惑的问题部分:
"...
电影院由标识符、名称、地址(街道、 市、省)以及影院的屏幕总数。
...
特许摊位是在剧院销售产品的售货亭。数据库记录特许摊位的类型:食物或纪念品(但不能两者兼有)。产品由唯一的“库存单位” (SKU) 标识符、产品名称、类别(例如糖果、纪念品、爆米花、饮料、玩具)和产品价格(以 CAD 表示)组成。每个特许摊位必须至少包含一种产品。特许摊位仅位于剧院内,一个剧院内可以有许多特许摊位。
..."
现在我知道特许摊位是一个弱实体,它有两种关系:一种与产品实体,一种与剧院实体。现在这两种关系都需要使用 stand 类型 + 其他两个实体中的任何一个的主键:来自剧院的 IS 和来自产品的 SKUID。
create table HasStand(
TheatreID integer not null,
type varchar(20) not null check (type = 'food' or type = 'souvenir'),
primary key (TheatreID, type),
foreign key (TheatreID) references Theatre (ID) on delete cascade
);
create table StandSells(
ProductID integer not null,
type varchar(20) not null check (type = 'food' or type = 'souvenir'),
primary key (ProductID, type),
foreign key (ProductID) references Products (SKUID) on delete cascade
);
它说剧院可以有许多特许摊位,即多个食品摊位和/或多个纪念品摊位。
我的问题是:我如何才能知道某个产品在哪里销售?在哪个剧院?我知道我可以使用产品 SKUID 来查找展台类型并使用 theatreID 来查找具有该类型的展台,但是我在这里遇到的情况是剧院可能有 2 个食品摊位,因此使用 SKUID 我发现 oit 是一种食品输入展台,当我使用 TheatreID 时,我发现有 2 个展台是食物型的,因此陷入了死胡同;我不知道他们中的哪一个卖了那件东西?
附言我根本无法为特许摊位使用唯一 ID,只能输入。
有什么想法吗?
【问题讨论】:
标签: sql database entity relationship entity-relationship