Пусть имеется таблица, содержащая статьи, которые планируется разбить по категориям. Самый очевидный для меня способ хранения тэгов - отдельная таблица для категорий и общая таблица содержащая id статьи и id всех ее тэгов. Но эта таблица как мне кажется будет огромной, когда количество новостей станет достаточно большим. Есть ли другой способ, позволяющий обойти описанную проблему?
То, о чем вы говорите, называется "перекрестными таблицами" или "кросс-таблицами". Насколько я знаю, это подход широко распространен и гибок, а бояться больших размеров служебной таблицы не стоит.
Вот вроде неплохая ссылка http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html , там описаны три способа хранения информации о тегах с нарисованными схемами БД. А в разделе "Further reading" есть еще ссылки на разные интересные вариации.
На самом деле, выбор неочевиден. Четко определите, что вы с тегами будете делать. Может подойдет и решение попроще.