Вариант (3) звучит как самый естественный:
A: { id, *, *, ... };
B: { id, a_id references(A.id), *, *, ... }
C: { id, b_id references(B.id), *, *, ... }
На запрос:
SELECT ... FROM A JOIN B ON (A.id = B.a_id) JOIN C ON (B.id = C.b_id);
Всегда делайте модель вашей базы данных логическими отношениями в ваших данных, а не наоборот!