2016-04-25 160 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