【问题标题】:ER relational Database coding containg weak entityER 关系数据库编码包含弱实体
【发布时间】: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


    【解决方案1】:

    假设您确实不能使用 ConcessionStand 唯一实体,我建议您使用下表。该解决方案使用销售收据来追踪剧院和 ConcessionStandType,但仍然不够完美。换句话说,一旦进行销售,ReceiptId 就会与使用唯一 ProductSKUId 从中提取的相应位置相关联。

    注意:我还假设每个展位都有独特的产品 SKU

    剧院 TheaterId - PrimaryKey ...其他适当的属性 产品 ProductSKUId - PrimaryKey ...其他适当的属性 特许权库存 TheaterID - 外键 ProductSKUId - 外键 ConcessionTypeID - ForeignKey ReceiptId 可以为空 收据 ReceiptId - PK 剧院ID 产品SKUId 特许类型ID 特许类型 特许类型ID 让步类型描述

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-21
      • 2021-05-31
      • 2020-03-26
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多