回答

0

我不明白的馆员和卡之间的关系的效用,我不明白为什么书两个实体分裂。

我会做3个实体:

-member

-card

-book

每个成员都有一张卡,每卡是一个成员的; 每个会员都可以拍很多书,每本书都可以被很多会员拍摄,

会员和书之间的关系在逻辑模式中创建另一个表:贷款。在插入新的贷款之前,您可以检查该成员是否有多余的活跃贷款(通过检查贷款表中活动的属性)。

0

您给定的环境对我来说是不完整的。我没有看到你的问题/情况的全部描述,所以我会根据假设和我在生活中的经历来回答。让我们看看......


tino用户质疑两个实体,标题和体积的存在,这是重要的事情。让我来解释一下,这会消除这个错误。以前(前一段时间),我们有视频租赁商店(我不知道你住的是正确的名称,英文不是我的母语)。记得?我们曾经去那里租VHS录像带在家观看。

我们租的不是电影,而是更多的拷贝/ midia。电影总是会有相同的演员,导演,标题等,但副本可能具有不同的属性/属性,例如媒体制作年份,可用语言,到期年份等等。所以我们明显有两个不同的东西。

但是,尽管如此,我们必须考虑是否需要创建两个持久性实体。我们必须记住,如果我们需要坚持这些信息。如果一个复制品/ midia没有任何属性,那么它的实体不应该存在,而用户真正租用的将是电影标题。

就你而言,音量和标题之间的关系,我相信,真的是表达了这种差异。

让我们来谈谈图书管理员和标题之间的关系。什么是图书管理员?它是否管理永不改变的标题,是抽象的东西,还是图书馆中存在的物理对象? :)


最后,我们来谈谈借款关系。当我们分解1-N(或N-1)关系时,我们总是将主键从1方传递到N方,从而解决与实体关系图中物理模型形成的关系。

尽管这里的关系是0-5,为了分解它,我们不会有完全的0-5关系。无论如何,我们都必须将双方的主要关键传递给由这种关系形成的表格。因此,在这里我们最初有成员和数量之间的N-N关系。

N-N关系允许实体之间的可选关系。这意味着我们可以在这里获得零方面的基数。为限制可租用的书籍数量,您需要使用SQL或数据库中的任何过程语言实施限制/约束。在这种情况下,您可以实施一个插入前触发器。这个触发器有责任验证这个限制,以允许或拒绝整个操作的完成。

让我们清楚,我不是说你应该删除这个符号。你的概念模型应该表达它。但是当你分解时,你必须记住这一点。我认为你应该纠正它。请记住一条重要规则:具有属性/属性(属性/属性)的关系只能存在于N-N关系中。如果必须将属性/属性置于1-N(或N-1)关系中,则它们(属性/属性)将始终位于N侧。总之,关系中没有N-1(或1-N)与属性的关系。只有N-N关系可以具有属性/属性。所以要小心这个。

如有任何问题或意见,请发表评论,我会回答。

0

我看不出有理由区分成员和卡片。卷和库管理员没有主键。他们应该是弱者吗?这对图书管理员来说没有意义,卷需要标识符来区分不同的副本。