这里我有一个Movie
实体,其中包含我需要的所有属性。如果DVD商店有多个副本和每部电影的多种格式,我无法理解的是什么。例如,这些电影的每个副本都使用Movie_ID和项目副本编号的组合进行标识。所以我的意思是当客户租用电影项目时,他/她实际上租了一部电影 - 称为项目。例如:"蝙蝠侠"是一部电影...但你家里的DVD副本是一个项目。所以让我迷失的是客户可以根据他/她的配额租用相同的不同电影项目的副本。我做的不错吗?如果没有,那么做什么的方法之一是什么?
答案 0 :(得分:2)
电影项代表电影的副本吗?实际的磁盘本身?
让我们暂时重命名,这样我可以更好地解释,你可以根据自己的喜好重新命名。
现在让我们称之为ProductInformation。 所以你有一个产品信息,在这种情况下链接到一部电影。 ProductInformation需要有一个额外的值,但它需要知道它是否是DVD蓝光或其他东西。
因此我们将创建另一个名为ProductType的实体。这应包含一个ID和一个TypeName,它将包含值DVD,Blue-Ray或其他内容。
在ProductType和ProductInformation之间创建一对多关系。
在那里,现在我们有一个带有类型和电影链接的productInformation! 将CurrentPrice和IsRental列添加到此实体,从电影实体中删除price和isrental属性。
您应该更改productInformation和Movie之间的关系: 一部电影可以有多个ProductInformation,一个ProductInformation只能有一部电影。
现在让我们制作一个产品实体。产品实体将代表实际产品(物理DVD,蓝光或其他)。 它将有一个ID,如果适用,可能是条形码,因为它是一个商店。
让我们在ProductInformation和Product之间创建一个关系,一个产品可以有一个productInformation,一个productInformation可以有很多产品。
现在删除您的用户(重命名用户与客户)和电影之间的关系。电影不是实体,客户不会租电影,它会租一个产品。电影只不过是关于产品的信息。
现在我们需要创建一个实体ProductCustomer,或者将其命名为Transaction。 这将照顾用户和产品之间的多对多关系。
给它一个Id,ProductId,CustomerId,Price(嘿,我们在我们的ProductInformation上添加了我们没有?!,是的,我们做了,但是价格发生变化。交易将永远存在于数据库中。因此,为了簿记目的,我们需要给它一个价格,以便我们知道客户当时支付了多少钱。)将物业租赁日期和从电影中返回到该实体(产品客户或交易),并在电影中删除它们。 aaaand你应该解决所有问题,所有的担忧都应该得到解决。
很抱歉,我无法为您绘制图表,只是刚拿到这台笔记本电脑。 :-) 希望我的解释和图表一样多。
答案 1 :(得分:1)
跳草稿模型可以帮助你: