When does the migration code run?

The documentation says that the migration runs when the feature is activated. I wanted to try this and disabled a feature then removed it's table from the database. Then after
I Enabled the feature again it was not created again. The Create() method isn't even hit in the debugger. So I'm wondering does it only run the first time that the feature is enabled? How can I make it create the missing table again?

It's run during the first time it is enabled, which can be during the original setup, or when you click on Enable. Then, whenever a change is detected in the migration classes, if a new
upgrade mehtod is available, you are warn in the admin, and can launch the new updates.

Thanks for the reply Sebastien. I noticed that even after I manually removed the database table for this feature (Orchard.Media), the feature is not failing, because it is not using the table at all. The table is Orchard_Media_MediaSettingsRecord.
So why is the table created at all? I see there are similar tables defined (mostly like settings records) which logically will get at most one row of data site-wide. Is this for consistency purposes, or will they actually get multiple entries in a multi-tenant scenario?

My second question is: Is there any way to re-initialize the module to Create the table again from the browser (like reinstalling the module)?