Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 子类型/超类型关系:如何满足这些要求_Database_Relational Database_Database Schema_Database Design - Fatal编程技术网

Database 子类型/超类型关系:如何满足这些要求

Database 子类型/超类型关系:如何满足这些要求,database,relational-database,database-schema,database-design,Database,Relational Database,Database Schema,Database Design,我正在努力为DB建模以满足某些需求 有两个主要实体。一个被称为团队,想想一个企业或组织。另一个是个人 团队也可以由个人组成(团队联系人) 这是一个会员必需的站点(即必须成为会员并登录该站点才能执行任何操作) TeamContacts将只是一个内部目录,他们将无权访问该网站,当然,除非他们是成员,然后将有这样的特权 被归类为TeamContacts的个人可能是网站的成员,也可能不是网站的成员。这是我主要关心的问题如果团队联系人同时也是成员,则很难(有时是不可能)担心,反之亦然。成员资格可能会失效

我正在努力为DB建模以满足某些需求

  • 有两个主要实体。一个被称为团队,想想一个企业或组织。另一个是个人
  • 团队也可以由个人组成(团队联系人)
  • 这是一个会员必需的站点(即必须成为会员并登录该站点才能执行任何操作)
  • TeamContacts将只是一个内部目录,他们将无权访问该网站,当然,除非他们是成员,然后将有这样的特权
  • 被归类为TeamContacts的个人可能是网站的成员,也可能不是网站的成员。这是我主要关心的问题如果团队联系人同时也是成员,则很难(有时是不可能)担心,反之亦然。成员资格可能会失效,团队联系人可能会在团队之间流动。将保留成员的历史记录,但不会保留跟踪团队之间团队联系人可能移动的历史记录
  • 成员和团队联系人之间唯一可以共享的属性(包括存在于团队级别的属性)是FirstName和LastName
以下是我提出的四种可能性。正如我所说的,我真的不知道我应该往哪个方向走。也许我的选择没有一个是理想的。如果有任何反馈能帮助解决这个问题,我将不胜感激

谢谢


乍一看,Ex1似乎是表示这两个需求的唯一图表

  • 每个团队联系人都是一个人
  • 有些人是会员
Ex2根本不涉及成员

Ex3似乎允许任何一方(包括团队)作为团队联系人

Ex4明确允许任何一方(包括团队)成为团队联系人


你可以考虑另一个未表达但共同的要求——一个人可以一次只接触一个团队。(这可能不适用于你的特殊情况。我说不出来。)

你说,“团队也可以由个人组成。”如果团队也可以由个人组成,那么团队还可以由什么组成?@Catcall最简单的方式是企业(团队)和员工(团队联系人)。从这个意义上讲,企业绝对不是个人(成员或团队联系人)。这回答了你的问题吗?不完全是。团队联系人可以是除个人以外的任何人吗?@Catcall团队联系人只能是个人。感谢您的反馈。我最初使用了Ex1的一个变体,区别在于我将Person子类型列为Exclusive。这就是我质疑的原因。我改为“包容”,允许一个人成为团队联系人和成员。我只是想确保不要强制要求TeamContact必须首先成为成员,这个模型允许这种灵活性吗?虽然我知道会有DUP,但我不知道如何避免。虽然我没有列出只属于一个团队的联系人,但模型没有涵盖这一点,因为团队之间没有M:M::TeamContact?Ex1不要求一个人在成为团队联系人之前成为成员。而且,duh,它不允许一个人同时成为多个团队的团队联系人。(我只能说咖啡因不足。)不管你是不是咖啡因,你是这个网站上的一个很好的信息来源,我很感激。我希望你能看到这个问题。谢谢