带有外键的表中的数据库插入

马里纳利尼朋友

我有以下表格-

  1. 公司(cid,comp_name)cid 是 pk
  2. 角色(rid,role_name) 摆脱 id pk
  3. user(uid,user_name,cid,rid) uid id pk,cid 是 fk,rid 是 fk

我想以这样的方式在用户表中输入值,即可以为一个用户分配多个 cid 和rid,并且可以为多个用户分配相同的 cid 和/或rid。但是,如果用户表有一个值,其中 user_name='A', cid='1',rid='1'; 不能再次插入相同的记录,必须在cid 或rid 中进行更改。

我正在编写这段不起作用的代码:

CREATE TABLE IF NOT EXISTS `user` (
  `uid` INT AUTO_INCREMENT,
  `user_name` varchar(100) NOT NULL,
  `cid` INT NOT NULL,
  `rid` INT NOT NULL,
  PRIMARY KEY (`uid`),
  FOREIGN KEY (`cid`) REFERENCES company(`cid`),
  FOREIGN KEY (`rid`) REFERENCES role(`rid`)
)DEFAULT CHARACTER SET latin1
COLLATE latin1_general_cs;

请帮忙。

蒂姆·比格莱森

这里最简单的解决方案是创建一个单独的、专用的桥表,用于存储用户与其在给定公司中的角色之间的关系:

userrolecompany (uid, cid, rid) PK is (uid, cid, rid))

这允许给定用户在多个公司担任多个角色。user然后您的表格简化为以下内容:

user (uid, user_name) PK is uid

因此,user当添加用户时,您只会向表中插入一次,但您可以向userolecompany表中插入多个公司角色对数据库进行这种重构是规范化的一个简单示例,或者至少是朝着这个方向迈出的一个很好的一步。

CREATE TABLEfor语句userrolecompany可能如下所示:

CREATE TABLE userolecompany (
    uid INT NOT NULL,
    cid INT NOT NULL,
    pid INT NOT NULL,
    PRIMARY KEY (uid, cid, pid),
    FOREIGN KEY (uid) REFERENCES user (uid),
    FOREIGN KEY (cid) REFERENCES company (cid),
    FOREIGN KEY (rid) REFERENCES role (rid)
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过PHP将数据插入数据库,带有外键的表

使用具有外键的表将数据从asp.net页插入到我的数据库中

Ruby on Rails | 如何在具有三个外键的数据库表中插入新行

带有两个数据库“表”,“外键”和“实时数据”的房间

使用带有多个外键的表创建sql数据库脚本

如何有效,安全地将带有外键的记录插入数据库到SQL Server?

具有可空外键的数据库表

数据库中的外键并创建联接表

获取表不为空的数据库中的所有外键关系

MySQL数据库在一个表中具有两个外键

如何通过 Azure SQL 数据库中的 API 插入带有 JSON 数据的新表

将数据插入具有外键的表中

SQL将数据插入表中具有外键

如何使用带有外键的SQL INNER JOIN&ALIAS从数据库中获取数据?

数据库中的外键

数据库中的外键

MYSQL 将数据从另一个表插入带有外键的表

DropDownList值作为外键插入数据库

带有外键的数据库模型的 C# 8 非空引用类型

带有外键的数据库:描绘前向与后向关系的好方法?

PHP中带有Flatfile数据库的表

SQL中的外键数据透视表 - 数据库设计

在结构中带有$SQLStatement 问题的带有照片的数据库中插入文本

带有外键字段的表批量插入

ActiveRecord:模型中的数据库关系定义与表设置中的外键定义?

使用实体框架将不同的记录插入带有外键的表中

休眠:无法使用外键查询数据库表

用外键创建SQLite数据库表?

雄辩如何在laravel中成功向您的数据库表添加外键约束?