Klucz obcy można utworzyć tylko w jednej tabeli, który odwołuje się do klucza w innej tabeli. Ten konkretny problem polega na tym, że memberid nie jest kluczem dla groupmembers lub rolemembers tabele. Po prostu dodaj KEY (memberid) do tych stolików i będziesz gotowy.
Kolejna sprawa, że typy kluczy obcych muszą się zgadzać. eventgroup ma groupid varchar , ale odwołuje się do groups tabela, która ma groupid INT . Popraw to.
Jeśli chodzi o sugestie, bardzo mocno zalecam, aby każdy klucz podstawowy był tylko jedną kolumną:kluczem zastępczym automatycznego przyrostu. Powinieneś także zrobić te liczby całkowite bez znaku.