SQL另一个规范化的方式

SQL另一个规范化的方式

问题描述:

我只是试图做任务,并坚持规范化。 (这应该是合乎逻辑的ERD)SQL另一个规范化的方式

enter image description here

是它归在这里更多可能的方式? 我只是坚持下去。 对不起,我只是在组成员表偏出近的一组ID明星

enter image description here

+1

不确定Stack Overflow是否是最好的Stack Exchange站点;你是否应该正常化可能取决于你正在处理的问题。有些事情可以尝试:(1)小组成员,小组负责人和主管可以被归纳为“角色”(N:N)分配给“人员”; (2)一些个人信息可以移动到单独的表格中,例如'Addresses'。这可能有意义,例如当时可能有些人住在一起。 – stakx 2013-03-09 21:24:09

+0

你能解释一些关于第一个的内容吗?当我做到这一点时,我将如何将这个人桌连接到另外三个人?比如我该如何填写人员表格中的所有其他表格才能获取正确信息的数据? – 2013-03-09 21:30:56

+0

'领导电话号码''紧急联络电话号码'和'当前手机号码'是否总是一样?或者紧急联系电话号码与该人的普通电话号码有什么不同? 个人会员是参加一个活动,还是总是一个组? 如果我们要确定您的模型是否正确,我们将不得不做出很多假设。 – JodyT 2013-03-09 22:13:01

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 
) 
+0

你的意思是需要创建另一个表?称为person? – 2013-03-09 21:20:39

+0

是的,然后至少拉动Name,(姓氏?)和电话号码(这些是重复的领域,即可以规范化)。将所有其他人员相关领域也放在该表中也是很自然的。 – thebjorn 2013-03-09 21:24:13

+0

嗯,我明白我不擅长它,但我怎么能把名字,姓电话号码等等放在一张桌子上,并连接3张桌子,如果他们有不同的名字.....我只是不能得到我该如何填写表格才能使其工作。 – 2013-03-09 21:28:43

关系数据库不支持继承

三种可能的方法,我知道关闭如何解决这个问题是:

1.Single Table Inheritance

2.Class Table Inheritance(这有点像@thebjorn建议的那样)。

3.Concrete Table Inheritance(这是你现在所拥有的,我不使用此解决方案看不出什么问题。)

编辑:

我看你把它改成LOGICAL ERD,这当然是关于物理模型。

+0

所以我做错逻辑ERD? – 2013-03-09 22:01:21

+0

不,如果您想要逻辑或物理ERD,这是您自己的决定。我的意思是我的文章中的解决方案是在您将逻辑模型更改为物理模型时应用的。在你的逻辑模型中继承是不常见的。 – JodyT 2013-03-09 22:04:37

+0

我需要逻辑ERD,所以我想这对于逻辑ERD是正确的? – 2013-03-09 22:06:34