Domain names are very important for websites since they are the link between website and visitors. Most people do not want to include generic terms but instead want a brandable name. Popular sites like Google, Yahoo etc are not representing their brand in their domain name. Hence using brandable terms as domain name alone will not help to develop brand.
The words which you use to connect with a website through search engine are known as anchor text or link text. Most people use words from your domain name as anchor text. So search engines consider anchor text as important factor.
Using dashes in your domain name is not much good. Including brandable generic terms in your domain name will help to get more inbound links as anchor text which enhances ranking for that word phrase. For example, you can choose domain name as WebDesign499 for your eBook for web design. This helps to get better ranking if you visit this site right here.
If the domain name is already in use, you can include some other terms along with keyword phrase in your domain name. For above example, alternate domain name could be webdesigntips.com or webdesignbook.com.