Foreign keys can reduce redundancy.
Before: entity attribute value
------ --------- -----
1 name Fred
1 age 51
1 sign Scorpio
2 name Mary
2 age 43
2 sign Leo
3 name George
3 sign Scorpio
After: base_table | attr_lookup | val_lookup
---------------------- | ------------ | ---------
entity attr_id val_id | id attribute | id value
------ -------- ----- | -- --------- | -- ------
1 1 11 | 1 name | 11 Fred
2 1 12 | 2 age | 12 Mary
3 1 13 | 3 sign | 13 George
1 2 14 | | 14 51
2 2 15 | | 15 52
3 2 16 | | 16 53
1 3 17 | | 17 Scorpio
2 3 17 | |
* Useful pivot table will hide the joins.