Database design tracking daily personal expense
I would use a variation of your second approach:

**Expense:**
id | date       | amount | category_fk  | description      |
------------------------------------------------------------
1  | 2014-12-01 |  1000  | 1            |                  |
2  | 2014-12-01 |  120   | 2            |                  |
3  | 2014-12-02 |  12    | 3            | Dinner at Arby's |
4  | 2014-12-02 |  10    | 4            |                  |

**Category:**
id | category_name |
--------------------
1  | rent          |
2  | parking       |
3  | restaurant    |
4  | entertainment | 


I don't think you need a separate table for dates. You gain nothing by doing that, unless you want to store extra information for that date, and even then, the date itself would be a natural key for that.

The description of a specific expense has a 1:1 relation with that expense, so it doesn't need a table of its own, unless you want to reuse descriptions (at which point you no longer have a 1:1 relation).

The category needs a separate table, since that will not have a 1:1 relation but a 1:n relation (a single category will be used on several expenses).



If you want to model a n:n relation, where an expense can belong to several categories as well, you will need a cross-reference table like so (removing the category_fk column from the expense table):

**Expense_Categories:**
expense_fk | category_fk |
--------------------------
1          | 1           |
2          | 2           |
3          | 3           |
3          | 4           |
4          | 4           | 


As you can see, the Dinner at Arby's is considered both 'Restaurant' and 'Entertainment'.