I'm new to database design, and I haven't found a definitive way to structure my vocabulary database. Irrelevant fields aside, the data I want to store is conceptually something like this:
Word 1
- Meaning 1 (1-n of these)
- Example 1 (0-n of these)
- Example 2
- ...
- Meaning 2
- ...
Word 2
...
Now, a Word is identified by three attributes: Wordname, Language, and POS (part of speech). I've set this up as a compound key. From what I've read, I gather that the meanings and examples should be in separate tables, perhaps something like this:
Word table
- Key
- Wordname
- Language
- POS
- ...
Meaning table
- Key
- Wordname
- Language
- POS
- Meaning (1-n rows per key)
Example table
- Key
- Wordname
- Language
- POS
- Meaning
- Example (0-n rows per key)
But this strikes me as a horrific amount of data duplication. Would it be better to abstract out the wordname-language-POS key into a separate table and give each row a single unique key? Is there some approach that's altogether better?
Thanks much.