I have a large library (50K+ songs and growing). I use Genre as broad categorization and for situations (iPod) where it's the only categorization available. Just a few major Genres similar to how CDs might be organized in a retail store: Rock, Pop, Country, R&B, Folk, Jazz, Showtunes, Classical, Easy Listening, etc.
But my main goal is to build smartlists for all types of situations, and for that I use my real system, keywords -- dozens of them. For me this is the most powerful library feature of MC -- the main reason I use it. Almost every song gets multiple keywords because the song can be considered from various perspectives.
What keywords to use? Think about how you'd like to RETRIEVE the song later, and give it the keywords that will let you grab it. In other words, what's your reason for building a database of your music?
My keywords define music types, but also moods, and eras. So I have keywords such as "1960s", "1980s", etc, and also "dinner" (music), "piano", "guitar", "surf", "summer", "tropical" (my wife's favorite), plus "rock", "jazz", "folk", "reggae", "tv", "movies", "disco" -- whatever seems to be a useful way to locate it and similar music later. It doesn't matter that the keywords are not all of one semantic, because their only purpose is to allow selection for smartlists. For a party the other night where conversation was more important than loud music, I selected everything with keyword "dinner" and got lots of complements on the wonderful background music.
Keywords can also handle special cases. In my library, all Beatles songs have "beatles" as a keyword, applied to every song that the Beatles performed, but also to other performances of songs the Beatles wrote. All songs from the many Motown performers (record company, not town) have keyword "motown".
I also use two other fields to provide the smartlist control I need: Performance for me is "v" vocal, "i" instrumental, "t" talk. Tempo is "b" ballad, "m" medium, "u" up-tempo/lively.
Because I was a radio station programmer, I use several other fields that might not be useful to anyone else, including Recording (Stereo, Mono, Rechanneled), Year, Chart Position. I use Rating to identify each song's "desirability to hear".
My final "trick" is really a workaround, necessary to handle so many songs (and again replicating radio station cataloging): I use Artist for lastname, firstname. Then I use views organized by Artist. I put the normal form of the artist name, whatever it might be, in Album Artist, so I don't lose the information.
The key to any database design is, focus on what you want to do later, when there's too much of it to plod through manually. Work backwards from your goal(s) and you'll see how you need to structure the data to get what you want.