首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建用户、类型和类型标题表之间的关系

创建用户、类型和类型标题表之间的关系
EN

Stack Overflow用户
提问于 2017-10-28 14:52:33
回答 3查看 77关注 0票数 0

因此,我试图为用户信息表创建一个合适的表关系,但最终被搞糊涂了。

下面是一个场景:

代码语言:javascript
复制
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**.  

到目前为止这些是我的桌子:

代码语言:javascript
复制
**user** table:
- user_id (PK)
- email
- password

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

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

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

代码语言:javascript
复制
**type** table:
- type_id (PK)
- type_name 
- crew_type_title 

但我不知道这是正确的方式,因为会有这么多的空牢房,因为只有7-10个用户谁是船员。任何帮助都会很好:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-28 14:58:12

您可以将用户和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) - user_id - type_title_id

代码语言:javascript
复制
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),

代码语言:javascript
复制
SELECT * FROM USER;

然后是一种类型

代码语言:javascript
复制
SELECT * FROM TYPE;

在选择该类型之后,将出现该类型的类型标题。您将从其中选择类型标题(type_title_id)。

代码语言:javascript
复制
SELECT * FROM TYPE_TITLE WHERE TYPE_ID = <selected_typeid_from_ui>;

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

代码语言:javascript
复制
INSERT INTO USER_TYPE_TITLE SET USER_ID = <selected_userid_from_ui>, TYPE_TITLE_ID = <selected_typetitleid_from_ui>;
票数 0
EN

Stack Overflow用户

发布于 2017-10-28 15:30:24

我对此有点陌生..。但是,每当我发现我使用的给定表中有太多的空项时,我相信用来解决这个问题的实践称为表的规范化,那么保持原样如何?

‘d型(PK)

type_name

再加上这个

crew_subcategory

-User_Id(pk)

-Crew_id(fk)

crew_title

-Crew_Id(PK)

-crew_type标题

船员子类别表将只包含具有船员头衔的条目,船员标题表根据id提供相应的标题。这与您使用的标题和标题id类似。

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

票数 0
EN

Stack Overflow用户

发布于 2017-10-28 15:47:48

我想:

用户表:- 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)外键

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46991013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档