一张桌子上的两个外键

时间:2016-04-25 20:39:32

标签: database oracle database-design database-schema erd

我正在尝试关注{ER} {ER} User创建Profile。用户可以看到他的粉丝以及用户关注的个人资料。

Database ERD

问题是:

两个部分要么"追随者"或者"关注"用户不是个人资料

更新 以下方法是否可以或在上图中?

 SQL> Create table users(
  2  user_id number(5) primary key,
  3  reg_date date,
  4  name varchar2(50),
  5  password varchar2(50));

Table created.

SQL> Create table Follow(
  2  follow_id number(5),
  3  following number(5) constraint User_fk references users(user_id),
  4  follower number(5) constraint User_fk1 references users(user_id));

Table created.

请指教。在期待中感谢

1 个答案:

答案 0 :(得分:1)

  1. Profile应该是与User分开的实体/表,还是应该合并?
  2. 这取决于您的要求。如果用户只有一个配置文件(如在许多网站上,例如在此网站上),则配置文件不需要是单独的实体。然后,以下关系是否应指向用户或配置文件的问题消失。但是,如果用户可以拥有多个个人资料(可能是从你的FK type_id中猜到的),那么就说一个用于他的体育节目而另一个用于他的音乐兴趣,那么就需要两个实体和表格。

    1. 追随者应该指向用户还是个人资料?
    2. 如果只有一个用户实体,followerfollowing都必须指向用户,因为没有其他内容。这是您的SQL解决方案。

      如果是单独的Profile实体,则会再次符合您的要求。追随者应该跟随整个用户,还是只对用户的某个个人资料角度感兴趣? (跟随杰克,或跟随杰克作为运动员,但不是音乐家。)在第一种情况下,following指向用户,否则指向个人资料。