Chiarimenti su has_many :through

Allora, supponiamo che io ho questi modelli :

Categoria
has_many :sottocategorie

Sottocategoria
belongs_to :categoria
has_many :articles

Articolo
belongs_to :sottocategoria

E ho le seguenti tabelle :

Categoria
Nome

Sottocategoria
Nome, categoria_id

Articolo
Nome, sottocategoria_id

Ok, avendo impostato così io so che rails mi permette di fare una cosa
del tipo Sottocategoria.articoli e mi tira fuori tutti gli articoli che
appartengono a quella sottocategoria. Credo di potere fare anche
Categoria.Sottocategoria(id).articoli (passo l’id ma credo funzioni con
ogni find, chi me lo conferma?).

Ora quello che mi chiedo è : che differenza c’è se sostituissi gli
has_many con degli has_many :through ?

Seconda domanda, che c’entra più con la progettazione del database, mi
consigliate di lasciare la tabella Articolo così come è oppure di
inserirci pure un campo categoria_id?

Terza domanda, ho visto l’opzione :dependent => :destroy delle
associazioni has_many, mi chiedevo funziona anche a cascata? Cioè se io
chiamo un destroy su una categoria, mi cancella anche tutte le sue
sottocategorie “figlie”? E a sua volta a cascata mi cancellerebbe anche
tutte gli articoli che fanno parte delle sottocategorie “figlie” della
categoria sulla quale ho chiamato il destroy?

Chiedo scusa per la serie di domande ma sarà l’inglese, saranno gli
esempi poco chiari, sarà la documentazione rails che trovo un pò misera
rispetto a ciò a cui ero abituato con php/mysql, ma mi pare che alcune
azioni che compio potrebbero forse essere compiute molto più facilmente
capendo meglio queste semplici cose.