1) rozlišovat klíče a indexy. Primární klíč souvisí s logikou věci – identita záznamu. Zatímco indexy jsou technická pomůcka pro zrychlení přístupu, k nalezení daného záznamu, řazení atd. Databázový systém sice typicky vytváří index při vytvoření PK, ale není dobré tyto pojmy slučovat. Indexů si můžu vytvořit kolik chci, bez ohledu na to, jaké mám nebo nemám PK – můžu si udělat třeba index nad jedním sloupečkem, který už je součástí složeného PK.
2) V tvém případě se jedná o normální vazební tabulku → složený primární klíč je zcela na místě, neboj se ho :-)
3) Cpát automaticky do každé tabulky umělé číselné ID jako primární klíč je s prominutím hloupost. Umělým PK je lépe se vyhýbat a používat je jen když je to nutné – když neexistuje nějaký přirozený identifikátor. Případně tehdy, pokud k tomu máme nějaké vážné důvody (např. výkonnostní). Ale to není tento případ. Je dobré se zamyslet, jestli budeme někdy potřebovat adresovat konkrétní řádek na základě toho umělého ID. Budeme? Povede odněkud odkaz na toto umělé ID? Nebo naopak povedou odkazy na ty složky složeného PK? I kdybychom tam totiž to umělé ID jako primární klíč „napchali“, bude nám na nic. Všechny JOINy se budou dělat přes jiné sloupečky. Nebo když např. budeme chtít nějaký záznam smazat, budeme vědět, že chceme smazat záznam, kde a=123 AND b=456, nikoli záznam kde id=234. Takový primární klíč je zbytečný.
Tohoto zlozvyku bych doporučoval se zbavit :-) Primární klíč nemusí být jen číslo a už vůbec nemusí být tvořen jen jedním sloupečkem. A jsou dokonce i tabulky, kde primární klíč nemusí být vůbec (byť je to celkem vzácné).
4) Tohle „idDoTbl1, idDoTbl2 vchnakejTextik“ měly být názvy sloupečků, nebo je to jen nějaký příklad? Trochu mi to připomíná maďarskou notaci ;-)