首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以使用多个外键,其值来自MySql中的同一个表

我是否可以使用多个外键,其值来自MySql中的同一个表
EN

Stack Overflow用户
提问于 2018-02-19 02:29:45
回答 1查看 132关注 0票数 1

我有一个表名permission。这张桌子上有两栏。这两个列名是studentteacher。那两个是外键。以及它们的参考值来自user表。

我想做的是,如果存在一个用户id是student列,那么这个用户将能够做一些与学生相关的工作。而且,如果用户id存在于teacher列中,那么他将能够做一些与教师相关的工作。

这两列是外键。这两个值来自user表。用户id可以存在于两列中。所以我的问题是,我可以使用两个外键,其值来自同一个表吗?

或者我应该创建一个名为user_id的新列作为外键,然后如果studentteacher列值为该用户的1,则意味着如果该用户的studentteacher列的值为0,则表示学生有权执行某些允许的work.And,如果该用户的值是0,则表示该用户没有权限。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-19 02:50:42

我更希望您的第二条语句只有一列用于外键,而另有两列来区分它是学生还是教师,或者两者兼而有之,所以每个user_id都不会有重复的行。

代码语言:javascript
复制
CREATE TABLE permission 
(
    user_id INT,
    is_student BIT,
    is_teacher BIT,
    -- other columns, if there is any
    INDEX permission_user_id (user_id),
    FOREIGN KEY (user_id) REFERENCES user(user_id)
)

样本行:

代码语言:javascript
复制
+---------+------------+------------+
| user_id | is_student | is_teacher |
+---------+------------+------------+
| 001     | 1          | 0          |
+---------+------------+------------+
| 002     | 0          | 1          |
+---------+------------+------------+
| 003     | 1          | 1          |
+---------+------------+------------+

或者它可以是一个允许的列:

代码语言:javascript
复制
CREATE TABLE permission 
(
    user_id INT,
    privilege tinyint, -- 1 for student, 2 for teacher, 3 for both
    -- other columns, if there is any
    INDEX permission_user_id (user_id),
    FOREIGN KEY (user_id) REFERENCES user(user_id)
)

样本行:

代码语言:javascript
复制
+---------+-----------+
| user_id | privilege |
+---------+-----------+
| 001     | 1         |
+---------+-----------+
| 002     | 2         |
+---------+-----------+
| 003     | 3         |
+---------+-----------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48858816

复制
相关文章

相似问题

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