在用户,类型和类型标题表之间创建关系

时间:2017-10-28 14:52:34

标签: mysql sql

所以我试图为用户信息表创建一个正确的表关系,但最后却感到困惑。

以下是该方案:

<svg width="180" height="150" id="svgField">
   <rect onclick="redZ()" id="redRect" x="0" y="0" width="100" height="100" fill="red" />
   <rect onclick="blueZ()" id="blueRect" x="60" y="40" width="100" height="100" fill="blue" />
   
</svg>

到目前为止,这些是我的表格:

1. a **user** can have more than one **type**.
2. where the **type** are: founder, member, and crew.
3. for the crew type, it can have more than one **crew_title** ex: Crew Leader, PR Manager, etc.  
4. and a crew-type-user can only have one **crew_title**.  

我尝试在类型表格中创建crew_title,如下所示:

**user** table:
- user_id (PK)
- email
- password

**type** table:
- type_id (PK)
- type_name

**user_has_type** table:
- user_id (PK)
- type_id (PK)  

但我不知道这是正确的方法,因为会有这么多空单元格,因为只有7-10名用户是机组人员。任何帮助都会很好:)

3 个答案:

答案 0 :(得分:0)

您可以像这样保持用户和type_title之间的关系:

用户表: - user_id(PK) - 电子邮件 - 密码

类型表: - type_id(PK) - type_name

type_title 表格: - type_title_id(PK) - type_id - 标题

user_type_title 表格: - user_type_title_id(PK) - 用户身份 - type_title_id

SELECT U.*, TT.TITLE 
FROM USER U 
    LEFT JOIN USER_TYPE_TITLE UTT ON UTT.USER_ID = U.ID
    LEFT JOIN TYPE_TITLE TT ON TT.TYPE_TITLE_ID = UTT.TYPE_TITLE_ID

修改

因此,在插入之前,您应该检测哪个类型的标题转到哪个用户。例如,假设这是您的应用的仪表板屏幕,您正在设置用户类型标题。在屏幕上,您将首先选择一个用户(user_id),

SELECT * FROM USER;

然后是一个类型,

SELECT * FROM TYPE;

并且在选择类型之后将存在该类型的类型标题。您将从那里选择类型标题(type_title_id)。

SELECT * FROM TYPE_TITLE WHERE TYPE_ID = <selected_typeid_from_ui>;

因此,在插入相同的场景时:

INSERT INTO USER_TYPE_TITLE SET USER_ID = <selected_userid_from_ui>, TYPE_TITLE_ID = <selected_typetitleid_from_ui>;

答案 1 :(得分:0)

我对此有点新..但每当我发现我使用的给定表有一个太多的空条目时,我相信用来解决它的做法称为表的规范化 那么离开这个怎么样呢

输入

type_I&#39; d(PK)

TYPE_NAME

并添加此

crew_subcategory

-User_Id(PK)

-Crew_id(FK)

crew_title

-Crew_Id(PK)

-crew_type title

船员子类别表仅包含具有船员头衔的条目 并且船员标题表根据id提供相应的标题。这类似于您用于标题和标题ID

的内容

不确定这是否是最佳方法。让我知道你对它的看法:)

答案 2 :(得分:0)

我在想:

用户表: - user_id(PK) - 电子邮件 - 密码

类型表: - type_id(PK) - type_name

user_has_type 表: - user_id(FK)外键 - type_id(PK)

<强> type_title   ID(PK)   TITLE_NAME

<强> title_has_type  title_id的(PK)  type_id(FK)外键

<强> title_has_user   title_id的(PK)   user_id(FK)外键