有一个简单的问题,但我想我是在思考它。我需要制作一个E / R图表:
每个日历年都需要支付大笔费用。费用必须是 通过银行转帐,提到会员编号和 会员年适用于。数据库应该存储日期 付款。
我忽略了日历年,因为我认为它与E / R图无关。我有一个名为"Members"
的实体,我喜欢"Fee"
通过*"通过关系付款(钻石符号)银行转帐" *。
现在,我的问题是:"member number"
和"membership"
应该是"fee"
实体还是"member"
实体的一部分?或两者?因为我正在考虑向"fee"
添加新的关系,并为其命名 "由" 组成然后链接"会员编号"和"会员资格",但我不知道这是否有好处。
如何处理最后一句话? "数据库应存储付款日期。" ?我可以忽略它吗?
答案 0 :(得分:1)
根据你的描述,我得到了:
Members
和Payments
Members
由member_number
Payments
包含date
,amount
和membership_year
显然,我们还需要:
Payments
有一个属性amount
我们如何识别Payments
?在我看来,没有列出的属性的组合唯一标识。对于相同的会员年度,Member
可以在同一日期以相同的金额制作两个相同的Payments
,例如如果他们最初只是意外地只支付了一半的年费,那么就付第二笔付款来纠正。
让我们介绍一个代理键:
Payments
由payment_id
我们还需要两个实体集之间的关系:
Payment
都与一个Member
Member
可以生成多个Payments
我们可以将此信息放入ER图表中:
为了得到一个表格图,Chen的原始方法将每个实体关系(实体键和属性)和关系关系(关系键(即相关实体键)和关系属性)实现为单独的表:
但是,通常的做法是使用相同的主键对表进行非规范化:
我建议你研究陈的论文The Entity-Relationship Model - Toward a Unified View of Data
。 Codd的论文A Relational Model of Data for Large Shared Databanks
提供了宝贵的背景资料。