2016-04-25 147 views
-1

我试图在以下DB ERD中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. 

请指教。预计感谢

+2

你是什么意思“引用...外键”?只有主键被引用,你不会“引用”一个外键。如果你问是否可以在一个表中有两个外键,每个都在两个不同的表中引用主键,那么答案肯定是肯定的。在你的安排中,你为什么需要表FOLLOW来引用表格PROFILE? – mathguy

+1

某些表中的FK引用某个表中的PK/UNIQUE。请为每个FK明确指出哪个表中的哪些列引用了哪个表中的哪些列。你的写作不清楚,请用更多的单词来表达你的第一段和第一点,并给出第二点的细节。 – philipxy

+0

@mathguy我更新了我的问题,请告知哪种方法更好 – LifeSaver

回答

1
  1. 应该配置文件是从用户分离的实体/表,还是应该合并?

这取决于您的要求。如果用户只有一个配置文件(如在许多网站上,例如在这个网站上),则该配置文件不需要是单独的实体。那么,下面的关系应该指向用户还是配置文件消失的问题。但是,如果用户可以拥有多个配置文件(可能会从您的FK type_id中猜到),那么让我们说一个用于他的运动,另一个用于他的音乐兴趣,那么需要两个实体和表格。

  1. 应跟随者指向用户还是指向配置文件?

在仅有一个用户实体的情况下,followerfollowing都必须指向User,因为除此之外没有别的。这是你的SQL解决方案。

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

+0

用户只有一个配置文件是单独的实体。这里“追随者”是指个人资料追随者。我分开这个配置文件实体,使其成为一个完全独立的模块,从用户模块 – LifeSaver

+0

仍然概念不清楚 – LifeSaver

相关问题