请想象这个小型数据库......
删除死了ImageShack链接 - 志愿者数据库图
Volunteer Event Shift EventVolunteer
========= ===== ===== ==============
Id Id Id EventId
Name Name EventId VolunteerId
Email Location VolunteerId
Phone Day Description
Comment Description Start
End
Run Code Online (Sandbox Code Playgroud)
志愿者可以报名参加多个活动.
活动可能由多名志愿者组成.
事件可能有多个班次.
转变只属于一个事件.
轮班可能只有一名志愿者.
志愿者可以多班次.
我是否可以创建一个检查约束来强制执行没有班次的志愿者没有为该班次活动注册?
我是否可以创建一个检查约束来强制执行两个重叠的班次从未由同一个志愿者配备?
我有两张桌子书籍和有声读物,两者都有ISBN作为主键.我有一个写的表有一个isbn属性,它对Books和Audiobooks ISBN有一个外键约束.当我插入到writeby中时出现的问题是postgresql希望我插入书写的ISBN在书籍和有声读物中.对我来说,有一个由存储作者和他们编写的书籍/有声读物编写的表格是有意义的,但这并不能转换为postgresql中的表格.我正在考虑实施的替代解决方案是有两个新关系audiobook_writtenby和books_writtenby但我不确定这是一个不错的选择.你能不能让我知道如何实现我最初的想法,即通过引用两个不同的表来编写单个表,或者如何更好地设计我的数据库.如果您需要更多信息,请与我们联系.

我只是想知道,ER图中的ISA关系如何转换为数据库中的表.
会有3张桌子吗?一个人,一个学生,一个老师?
或者会有2张桌子吗?一个用于学生,一个用于教师,每个实体具有人+属性的属性?
或者是否会有一个包含所有4个属性的表,并且表中的一些正方形为空,具体取决于它是否是该行中的学生或教师?
注意:我忘记添加此内容,但ISA关系已完全覆盖,因此一个人必须是学生或教师.
鉴于一个数据库系统处理员工,客户和供应商,所有这些都有多个可能的电话号码,您将如何以良好的标准化方式存储这些数字?我有一点思考,合乎逻辑的方式并没有跳出来.