I can give a huge recommendation for Michael J. Hernandez's 'Database Design for Mere Mortals'. It's language agnostic and he's very clear in explaining everything he talks about without treating the reader like a retard like some books. It really goes though the steps of first how to even figure out what it is that will solve your requirement, and then how to implement it properly. Plus he actually explains why you shouldn't do things, with examples as to what hole you'd be digging yourself.