Вы подразумевали, что ограничение внешнего ключа столбца "роль" будет использовать имя вместо идентификатора? Это выглядит как следующая строка (строка 43):
FOREIGN KEY (role) REFERENCES role(name)
должно быть:
FOREIGN KEY (role) REFERENCES role(id)
Это выполняется без ошибок.
В качестве альтернативы тип данных столбца staff.role (строка 40, роль INT NOT NULL) можно изменить на CHAR (30) NOT NULL.