Personally I wouldn't include both. You can replace spaces with hyphens on the fly easy enough. However I would include the URI of each post in the database.
Then you're able to match the page they're on with the URI you have stored and if they do not match you can chuck an error. Thus preventing duplicate pages from poorly written code. (:
Simple solution is to redirect urls with spaces in to urls with the spaces replaced with hyphens (use a 301 header), and enforce that when users are entering slugs in the admin panel by doing a find/replace on spaces > dashes.