SQL另一个规范化的方式
GroupMember,GroupLeader和监督应是一个Person表之间的关系。也许像下面这样的东西?
Person (
id
name
surname
date of birth
gender
home address
emergency contact number
comment field
)
Activity (
id
type of activity
activity description
date
morning or afternoon
supervisor -> Person
)
ActivityParticipant (
activity id -> Activity
person id -> Person
)
Group (
id
name
start date of stay
end date of stay
(amount of people in group?)
)
GroupMember (
person id -> Person
group id -> Group
)
Group Leader (
group id -> Group
person id -> Person
)
Chalet (
id
Chalet number
Chalet name
number it sleeps
price per individual
)
Accomodation (
group id -> Group
chalet id -> Chalet
)
你的意思是需要创建另一个表?称为person? – 2013-03-09 21:20:39
是的,然后至少拉动Name,(姓氏?)和电话号码(这些是重复的领域,即可以规范化)。将所有其他人员相关领域也放在该表中也是很自然的。 – thebjorn 2013-03-09 21:24:13
嗯,我明白我不擅长它,但我怎么能把名字,姓电话号码等等放在一张桌子上,并连接3张桌子,如果他们有不同的名字.....我只是不能得到我该如何填写表格才能使其工作。 – 2013-03-09 21:28:43
关系数据库不支持继承
三种可能的方法,我知道关闭如何解决这个问题是:
2.Class Table Inheritance(这有点像@thebjorn建议的那样)。
3.Concrete Table Inheritance(这是你现在所拥有的,我不使用此解决方案看不出什么问题。)
编辑:
我看你把它改成LOGICAL ERD
,这当然是关于物理模型。
所以我做错逻辑ERD? – 2013-03-09 22:01:21
不,如果您想要逻辑或物理ERD,这是您自己的决定。我的意思是我的文章中的解决方案是在您将逻辑模型更改为物理模型时应用的。在你的逻辑模型中继承是不常见的。 – JodyT 2013-03-09 22:04:37
我需要逻辑ERD,所以我想这对于逻辑ERD是正确的? – 2013-03-09 22:06:34
不确定Stack Overflow是否是最好的Stack Exchange站点;你是否应该正常化可能取决于你正在处理的问题。有些事情可以尝试:(1)小组成员,小组负责人和主管可以被归纳为“角色”(N:N)分配给“人员”; (2)一些个人信息可以移动到单独的表格中,例如'Addresses'。这可能有意义,例如当时可能有些人住在一起。 – stakx 2013-03-09 21:24:09
你能解释一些关于第一个的内容吗?当我做到这一点时,我将如何将这个人桌连接到另外三个人?比如我该如何填写人员表格中的所有其他表格才能获取正确信息的数据? – 2013-03-09 21:30:56
'领导电话号码''紧急联络电话号码'和'当前手机号码'是否总是一样?或者紧急联系电话号码与该人的普通电话号码有什么不同? 个人会员是参加一个活动,还是总是一个组? 如果我们要确定您的模型是否正确,我们将不得不做出很多假设。 – JodyT 2013-03-09 22:13:01