2012-06-04 33 views
0

上午在緊張的最後,我被收縮創建一個PHP的Web應用程序,允許一個註冊,然後用戶可以註冊5名其他人,其他用戶他註冊即可每個註冊5個成員。創建Web應用程序,它允許成員註冊其他成員

我希望創建數據庫來保存用戶的陣列,因此我會一一列舉出來以表格的形式註冊的特定成員,

混亂的部分是

  1. 如何分解出數據庫結構,以便它可以保存五個用戶,然後在查詢時將它們列出(混淆爲將它們保存在數組或單獨的表中)。但我寧願節省陣列
  2. 誰得到任何登記,將被鏈接到主裁判,他們都將被計算並作爲用戶註冊5名成員,整個過程停止5註冊了任何其它用戶5名成員也註冊5個用戶都對他/她的賬戶,使其25總對每個賬戶

它可以像

1. Parent - 5 children - 

那麼5個孩子都承受每個5歲以下兒童中,父母會說明承認他的孩子和孫子,一旦孩子和孫子的數量達到25,複製品uctive週期結束父,他的孩子可以繼續做他們的25也

我所做的數據庫,但我需要一些指導方針,成功地爲我有3天完成這部分建立它。

public function userTable() 
{ 
    $qry = "CREATE TABLE IF NOT EXISTS users(
    user_id   INT(8) NOT NULL AUTO_INCREMENT, 
    username  VARCHAR(35) NOT NULL, 
    password  VARCHAR(35) NOT NULL, 
    referralIDs    varchar(500) NOT NULL, 
    totalRefers  VARCHAR(35) NOT NULL , 
    userIDhash   varchar(30) not null, 
    date    date, 
    time    varchar(20) not null, 
    PRIMARY KEY (user_id) 
    )TYPE=INNODB"; 
$result = $this->qry($qry); 
    return; 
} 

    public function ReferralTable() 
{ 
    $qry = "CREATE TABLE IF NOT EXISTS Refers(
    user_id   INT(50) NOT NULL, 
    usersRegistered  VARCHAR(500) NOT NULL, 
    referby    int(50) not null 
    )TYPE=INNODB"; 
$result = $this->qry($qry); 
    return; 
} 

我會喜歡只有一個表,將節省我的孩子們通過分隔陣列的工作「」然後我可以開始有 很困惑,如何保存和檢索孩子們的ID一前一後,我可以用它來查詢孫子

希望我沒有混淆的任何一個?在此先感謝

+0

你要什麼我們去做?完成你的工作?教你數據庫設計?告訴你如何將數組元素連接到逗號分隔的字符串? – Carsten

回答

1

爲什麼你需要使用數組? 這是一個簡單的一對多關係...只是創建一個表,持有這種關係,或赫克 - 用戶表中的字段...

這裏是兩個表示例的示例...

用戶表

id | email | name | whatever 
1 [email protected] jon 
2 [email protected] mel 

user_registered

register_id | registree_id 
    1    null 
    2    1 

一個例子爲一個表

id | email | name | whatever | ref_user_id 
1  [email protected] jon    NULL 
2  [email protected] mel     1 
3  [email protected] al     1 

比你可以得到所有的1位註冊用戶:

SELECT * FROM user WHERE ref_user_id = 1 

或得到人們1在兩種情況下注冊

SELECT COUNT(*) FROM user WHERE ref_user_id = 1 

量,ID爲1的用戶,先註冊(沒有涉及),和他註冊用戶#2

+0

感謝您的洞察力,但在這種情況下,現在還有任何其他用戶註冊2(總數爲5)應該與用戶1鏈接,那麼當查詢用戶1時應該總共有10個(來自用戶2的5個他+5 ),在這種情況下,現在他將註冊5個用戶,2 3 4 5 6,2 = 5,3 = 5,4 = 5,5 = 5,6 = 5,那麼用戶1將總共有25個用戶,我將不勝感激,如果你能幫我解決它 – Normal9ja

+0

我強烈建議現在不用擔心優化,只運行6個查詢。否則,你可以這樣做:SELECT * FROM user WHERE ref_user_id =(SELECT id FROM user WHERE ref_user_id = null)這將獲取所有的第一代孩子。除此之外 - 因爲SQL有顯示樹結構的問題(這是你想要的),我建議閱讀二進制樹在SQL中,有很多你可以從谷歌獲得的例子。 –

相關問題