Bueno, es de esperar esa redundancia de datos. Te recomendaría replantearas tu modelo de BD, será mejor que cambies el sentido de tu relación, es decir, si revisas
restaurante es una entidad más fuerte que las
categorías, por ello deberías cambiar a que el restaurante tenga categorías y NO las categorías a los restaurante. Lo segundo, si insistes en continuar que este tipo de modelo te recomiendo el operador MySQL
Distinct.