Ваш первый вопрос зависит от того, какую информацию вы хотите сохранить о файлах.
Если он универсален для всех типов (имя, дата, тип файла, размер и т. Д.), То имеет смысл использовать отдельную таблицу Files со столбцом типа.
Но если вы собираетесь сохранить атрибуты файлов, связанные с типом файла, частотой кадров видеофайла, высотой и шириной файла изображения, например, автора PDF, тогда вам также понадобятся некоторые вспомогательные таблицы для хранения этой информации. Вы не хотите, чтобы с вашей файловой таблицы свисала куча столбцов, которые полезны только для определенного типа файлов.
Что касается вашего второго вопроса, грубый SQL основан на соединении между вашей таблицей родительских категорий и таблицами дочерних категорий.
Пример кода псевдо:
select p.userid, p.parentcategoryid,c.childcategoryid
from ParentCategory p INNER JOIN
ChildCategory c
on p.parentcategoryid=c.parentcategoryid
WHERE
p.userid = @UserID