mysql-请问数据库表中可以在一个表里面有两个关联同一个表的外键吗?

问题描述

请问数据库表中可以在一个表里面有两个关联同一个表的外键吗?

具体是这样的:
我有一个用户表user,一个好友表fans。
fans中有三个字段 id,user_id,fans_id,其中user_id和fans_id都是跟user表的id关联的外键,我发现这样会报错。
可是用户跟好友的信息又要与用户表的信息关联,请问各位大神,怎样才不会报错或者有什么好一点的解决办法吗?

解决方案

可以的

  FOREIGN KEY (user_id) REFERENCES user(id),
  FOREIGN KEY (fans_id) REFERENCES user(id),

解决方案二:

应该是可以的。分别对两个字段建立外键关系。

解决方案三:

没问题
//绝对可以的

解决方案四:

可以的,这个没有限制的

解决方案五:

可以的,这个没有限制的

时间: 2024-10-31 01:20:16

mysql-请问数据库表中可以在一个表里面有两个关联同一个表的外键吗?的相关文章

如何将一张数据库表中的某几列数据写入另一张表,同时再加上一列相同的数据。

问题描述 如何将一张数据库表中的某几列数据写入另一张表,同时再加上一列相同的数据.其实我就是想做一个一个订单编号对应多个商品的提交功能,请大家帮帮忙支支招,谢谢! 解决方案 解决方案二:根据要求写对应的updatesql解决方案三:引用1楼feiyun0112的回复: 根据要求写对应的updatesql 请问insertintot_wz_kc(wzid,jldwid,kcsl,yfpkcsl,cshwcbz)selectwzid,jldwid,0,0,'Y'fromt_wz_wzwhereyxb

java-新手求助:sql语句,从多个表中取出最新时间的记录,组成一个新表

问题描述 新手求助:sql语句,从多个表中取出最新时间的记录,组成一个新表 解决方案 mysql的实现: insert into zongbiao(id, name ,vd,co2,wendu,time) select t1.id,t1.name,t1.vd,t2.co2,t2.wendu,t2.time from biao1 t1 join biao2 t2 on(t1.id=t2.id) order by t2.time desc limit 1; 解决方案二: 1.mysql和oracle

entity framework-EF框架关于数据库两个关联的表操作的一些问题

问题描述 EF框架关于数据库两个关联的表操作的一些问题 在EF创建两个多对多关联的实体,并且映射到数据库中,在对中间表进行查询或是清除中间表的数据时操作失败,使用数据库跟踪发现没有生成相应的代码 static void Main(string[] args) { OAMangerEntities db = new OAMangerEntities(); var user = db.CreateObjectSet<UserInfo>().Where(u => u.ID == 2).Firs

急求从两张数据表中抽取个别列,查询后组合成一张新表,如何做?

问题描述 A表包含字段ABCDB表包含EFC表字段ABCDEF从winform上查询完A表和B表的数据之后,选择某条A和某条B点击按钮生成一条新的C表数据如何操作代码怎么样 解决方案 解决方案二:数据库可以直接做,也可以用linq解决方案三:可以写一个类C,包含ABCDEF属性,然后选中A表中的字段,给C的ABCD赋值,选中B表,赋值EF,然后增加到C表中~解决方案四:获取选择的A与B对象,拼接insertsql语句,inserttableC(A,B,C......)Values(A.A,A.B

建表-当我要查询的数据同时在两个表中时,是否应该再建一个新的表?

问题描述 当我要查询的数据同时在两个表中时,是否应该再建一个新的表? 我有一个收入表(表1),一个支出表(表2),然后这样的话就可以对它们进行操作,但是我现在想要查询一个月之内的收支记录,按时间先后排序,我该怎么做呢?我要再建一个表把表1,表2的数据插进去么?还是有别的办法? 解决方案 使用联表连接两个表将两个表的数据同时显示出来或者将两个表的数据查出来后放入到视图当中 解决方案二: 当我每查询一次(当表1,表2更新时)的时候都要先把数据放到视图当中,是不是应该用触发器啊? 解决方案三: 你可以

oracle从一张表中根据不同条件查询出两个结果 然后查出两个结果中相同的数据

问题描述 oracle从一张表中根据不同条件查询出两个结果 然后查出两个结果中相同的数据 这是表中数据 我用下面这种方法 select * from ((select * from SFFX_JGJPZ_DETAIL d where d.jgjpz_id=1) o), ((select * from SFFX_JGJPZ_DETAIL d where d.jgjpz_id=8) t) where o.platename=t.platename ; 查出来的结果对的 却在一行 怎么解决.. 解决方

mysql-关于Hibernate 关联同一个表的两个字段的配置

问题描述 关于Hibernate 关联同一个表的两个字段的配置 譬如我要A B多对多关联,然后我就加多一个表C作为中间表. 在C中,有两个外键需要关联表A.那么C的hbm.xml需要怎么配置这两个外键呢?? 解决方案 hibernate表关联的各种配置: 解决方案二: 可以,有三种 关系 manytoone onetomany manytomany,但是不建议用 manytomany

oracle中使用on delete cascade和on delete set null来建立外键

oracle中使用on delete cascade和on delete set null来建立外键 其面我们介绍了创建外键约束时如果使用oracle默认的创建方式,在删除被参照的数据时,将无法被删除,这一点在oracle9i中给了我们更多灵活的选择,我们可是使用on delete cascade和 on delete set null关键字来决定删除被参照数据时是否要将参照这个数据的那些数据一并删除,还是将那些参照这条数据的数据的对应值赋空. 例如下面这两个表中分别存的时员工的基本信息和公司的

写出sql语句,获取同一表中员工重名的信息(没有跟其他表关联)

问题描述 如有一张employer表,表中每条记录用id标识,姓名是可重复的,现在是查询出本表中有哪些重名的记录??? 问题补充:hudingchen 写道 解决方案 SELECT * FROM employer WHERE name IN (SELECT name FROM employer GROUP BY name HAVING COUNT(*) > 1)解决方案二:http://wangjinlongaisong-126-com.iteye.com/blog/1455812解决方案三:h