I use tinyint. The reason I'm not hot on the NULL and Y method is that if you have a char(1) column and use a query like
SELECT * FROM table WHERE NOT flagged;
Then columns with Y in will still appear, and the opposite with WHERE flagged. And you'd have to construct your query as
SELECT * FROM table WHERE flagged IS NULL;
All easy of course, but I know I'd end up doing
SELECT * FROM table WHERE flagged = 0;
And for that Y would appear.