Io avrei fatto una cosa un pò diversa:
è presumibile che le correlazioni siano reciproche... cioè
se l'articolo A è correlato con B... è presumibile anche il contrario ovvero che B è correlato con A
Aldilà dell'aspetto logico questo aiuta a popolare le correlazioni... mi spiego meglio:
un giorno scrivi l'articolo A e questo non ha correlazioni con altri articoli. Dopo 1 mese scrivi l'articolo B e decidi che sia correlato con l'articolo A.
Con il sistema descritto da te A continuerà ad essere senza correlazioni metre B sarà correlato con A.
Io perciò farei una cosa così:
tabella articoli:
id_articolo, titolo_art, etc etc
tabella correlazioni:
id_correlazione, id_art1, id_art2
poniamo il caso che io stia visualizzando un articolo con id=17 per scoprire gli articoli correlati farei
codice:
SELECT
articoli.id_articolo,
articoli.titolo_art,
correlazioni.id_correlazione
FROM
articoli
LEFT OUTER JOIN
correlazioni
WHERE
(
correlazioni.id_art1=articoli.id_articolo
OR
correlazioni.id_art2=articoli.id_articolo
)
AND
(
correlazioni.id_art1='17'
OR
correlazioni.id_art2='17'
)