I like to refer to $question->id rather than $question->questionid. Similarly $module->course worked better for me than $module->courseid at the time, though probably if I was doing it again I might do this differently.
So, yes, almost every table has a unique "id" field, and foreign tables reference that field using the plain name of the table, usually.
An exception is userid, which had to be changed from "user" because it's a reserved word in non-MySQL databases. That was enough of a pain to change at the time - so I'm not anticipating any more changes for a while.