Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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
Mysql 如何将用户绑定到具有不同角色的不同组织、大学、公司?_Mysql_Sql_Database_Database Design_Schema - Fatal编程技术网

Mysql 如何将用户绑定到具有不同角色的不同组织、大学、公司?

Mysql 如何将用户绑定到具有不同角色的不同组织、大学、公司?,mysql,sql,database,database-design,schema,Mysql,Sql,Database,Database Design,Schema,没有用户,大学、组织或公司就不可能存在。总会有一个用户创建或拥有它。每个用户都会有一个个人档案 架构如下所示: - name - Adminstrative contacts 使用者 角色: - email - name 大学(简介): 组织(概况): 地基(剖面图): 我如何知道用户绑定到哪个表(基金会、组织或大学)以及它在该组(基金会、组织或大学)中扮演什么角色?我想创建一个如下的桥接表: - name - Adminstrative contacts 但是问题是我不能

没有用户,大学、组织或公司就不可能存在。总会有一个用户创建或拥有它。每个用户都会有一个个人档案

架构如下所示:

  - name
  - Adminstrative contacts
使用者

角色:

- email
- name
大学(简介):

组织(概况):

地基(剖面图):

我如何知道用户绑定到哪个表(基金会、组织或大学)以及它在该组(基金会、组织或大学)中扮演什么角色?我想创建一个如下的桥接表:

  - name
  - Adminstrative contacts
<>但是问题是我不能创建一个<代码>组<代码>表作为大学的数据,基础和组织是完全不同的。因此,我必须为每个表创建一个单独的表。如何解决此问题?

——用户USR存在。
--
用户{USR}
PK{USR}
——角色ROL存在。
--
角色{ROL}
PK{ROL}

<代码> XORG 是一个大学、组织或基金会的通用术语。 鉴别器

TYP
用于区分这三者

——创建了类型为TYP、名为XNM的Xorg XOG
--(属于)用户USR。
--
xorg{XOG,TYP,USR,XNM,…common_cols}
PK{XOG}
SK{XOG,TYP}
检查{U',O',F'}中的类型
FK{USR}引用用户{USR}
——存在xorg类型为“U”的大学(xorg)XOG。
--
大学{XOG,典型,…大学专业}
PK{XOG}
检查类型='U'
FK{XOG,TYP}引用xorg{XOG,TYP}
--存在xorg类型为“O”的组织(xorg)XOG。
--
组织{XOG,TYP,…特定组织{cols}
PK{XOG}
检查类型='O'
FK{XOG,TYP}引用xorg{XOG,TYP}
<代码>——XORG类型Typ=’f’的基础(XORG)XOG存在。 -- 组织{XOG,典型,…基金会{u cols} PK{XOG} 检查类型='F' FK{XOG,TYP}引用xorg{XOG,TYP}
——用户USR是xorg XOG的成员,属于xorg类型类型,
--在角色ROL中。
--
用户_xorg{USR,XOG,TYP,ROL}
PK{USR,XOG}
FK1{XOG,TYP}引用
xorg{XOG,TYP}
FK2{USR}引用用户{USR}
FK3{ROL}引用角色{ROL}
注:

所有属性(列)不为空
PK=主键
AK=备用键(唯一)
SK=正确的超级键(唯一)
FK=外键

关于子类型的一句话。实现子类型约束的正确方法是使用断言(
createassertion
),但它在主要数据库中仍然不可用。我使用的是
FKs
,与所有其他替代方法一样,它并不完美。关于SO和SE-DBA,人们争论了很多,什么更好。我鼓励你也检查其他方法。

@DamirSudarevic你能用我的问题plz解释一下派对模式吗?
 - name
 - short history
  - name
  - logo of the brand
  - name
  - Adminstrative contacts
  Group:
    - id
    - name
    - type(University, Foundation, Organization)
  
 Group_members:
   - id
   - roleId
   - groupId
   - userId