2014-02-22 26 views
3

我目前正在開發應用程序後端(業務目錄)。主要的「演員」是一個「入口」,它將具有:OO中的後端應用程序PHP:有效地構建類/表格

- main category 
    - subcategory 
     - tags (instead of unlimited sub-levels of division) 

我很新的面向對象,但我仍然想在這裏使用它。數據庫是MySql,我將使用PDO。

爲了試圖找出爲支持上述條目分類而應該使用哪種數據庫表結構,我在考慮Wordpress使用的解決方案 - 通過幾種方法在條目和cats/subcats/tags之間建立關係表格(術語,分類法,關係)。目前讓我從這個解決方案中脫穎而出的事實是,任何類型的每個關係都由關係表中的一行表示。如果有50,000個條目,我會附加到一個特定的條目:主貓,子貓和多達15個標籤可能會減慢應用程序(或者我錯了)?

然後,我學到了一點關於Table Data Gateway的看起來很好的解決方案,因爲我喜歡每個類有一個表的想法,但是後來我讀到,實際上沒有辦法成功地解決OOP和關係之間的阻礙錯配-mapping。

有沒有其他方法可以適合這種情況?我想我將與打算:

  • tblentry
  • tblcategory
  • tblsubcategory
  • tbltag

結構。關係將基於父母身份,但我很想知道這是否足夠?我可以在這裏使用外鍵和級聯刪除選項(這是我不太熟悉的東西,在我看來,這是一種更直觀的表格中元素之間的關係)?

回答

1

有一個表,你存儲表之間的關係是是一個好主意,並通過索引和仔細思考,你可以實現非常快的結果。

,因爲每個條目必須代表兩個實體(子類別主入口,標籤子類),則至少需要(和很大部分)三個字段之間的不同的鏈接類型:

  • ID1(或第一實體的唯一ID)
  • 的linkID(鏈接到其中,每個鏈路被描述的第四個表)
  • ID2(或第二實體的唯一ID)

那些三個場s可以並且應該被索引。

現在第四張實現這種多對多關係的表格將描述鏈接的性質。由於表中存在許多不同類型的關係,因此無法在同一個表中保留類型(子項,標記,父項)。

是第四個表(參考)看起來是這樣的:

id  nature  table1 table2 
1  parent of entry  tags 
2  tag of  tags  entry 

表1場告訴你的第一個ID是指哪個表,同樣與表2

的ID是間數你的關係表中有兩個字段。只有id字段應該被索引。自然界對於讀者來說更加適合於加入表格或組織數據

相關問題