Good Database Design Books? 291
OneC0de writes "I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications. We use a variety of technology at our office, the majority of which rely on MS-SQL and MySQL databases. I am familiar with tables, SQL queries, and have a general understanding of how the SQL databases work. What I'm looking for is a good book, particularly a newer book, to explain general database design techniques, and maybe explain some relational tables. We have some tables that have million of rows, and I'd like to know the best method of designing these tables."
A Few Suggestions (Score:5, Interesting)
We have some tables that have million of rows, and I'd like to know the best method of designing these tables.
I'm a developer, not a database expert. But it seems that every now and then I have to get my hands dirty with data modeling. "The best method" is probably a really vague concept. If you have serious hardware constraints than the best method changes from an easily maintainable system to something more complex. There's give and take in database design and I guess a million rows is really something that a traditional relational database should be able to handle. So I'd suggest any book that teaches data modeling will suit you here. I happened to learn on Data Modeling Essentials [amazon.com] which was decent but not great. I have heard good things about Len Silverston's growing series that concentrates more on patterns. But really what you're going to want is a book on data modeling or analysis that teaches you the orders of normal form, when to use cross reference tables, etc so you can get a better idea of good modeling standards. At a million rows, you might not find the need to refactor if you read about the new best practices but perhaps you could make a business case to eventually migrate.
Now there are other topics that require entirely separate books because they are such a diverging path from relational databases. It's not common but your database can be based on something other than an object or table [wikipedia.org]. If you consider the internals of Google, perhaps BigTable is the most prolific database implementation out there and while interesting [google.com], it is sort of a very specific proprietary database implementation. You could take this approach to tailor your company's database to be precisely what you need but this would clearly be overkill in your case. You don't talk about any bottlenecks or impending loads that need to be carefully considered so instead of treading down this path, I suggest you first take a course on MySQL or get the de facto book on whatever database you use [amazon.com] and play around with fine tuning on a test system. A lot of DBs out there allow you to tune them through a configuration file so that your particular needs are met more closely. If you're looking for this sort of continuing education just out of curiosity, pick up a book on database design and start to tinker. But it requires a lot of knowledge and effort to start a database technology from scratch and compete with vanilla out of the box technologies like MySQL and PostgreSQL.
From what information you provide in your question, I'd suggest this book to help you understand database designs more via industry proven patterns [amazon.com]. That assumes you have all the basic database design practices covered.
A Director that still codes? (Score:2, Interesting)
A director that still codes? What a novel concept. Good for you.
Re:Somewhere, a coder is polishing his resume (Score:4, Interesting)
.. either that or he's the only programmer in the company and can thus effectively call himself whatever he wants.
Re:Somewhere, a coder is polishing his resume (Score:3, Interesting)
I see no evidence that he made up a title. Typically in business, Director has a meaning - that the holder is on the board responsible for running the company. In a small business they will often be one of the shareholders too.
Titles like CIO would indeed be superfluous in a small company, but Director has a specific meaning and its use could be entirely appropriate.
Manga Guide to Databases. (Score:3, Interesting)
Re:This is (Score:5, Interesting)
Re:A Few Suggestions (Score:3, Interesting)
One advantage of Access is that you can export its tables to something else more rational. Unless you were weaned on Codd and Date, then you learn one step at a time. Yes, there are messes. That's what backups are for. Soon people learn what real data processing is, and how to protect data, make it usable, and deal with its maintenance.
The thing about Access that it, plus HyperCard and other junior RDBMS apps is-- they're approachable by civilians. People need that.... as well as training and experience.
Check out this book (Score:2, Interesting)
Comment removed (Score:3, Interesting)
Why new? (Score:4, Interesting)
Database fundamentals haven't changed much. I don't know how much you know so far but this guy is pretty smart:
http://philip.greenspun.com/sql/ [greenspun.com]
http://philip.greenspun.com/panda/ [greenspun.com]
http://philip.greenspun.com/wtr/ [greenspun.com]
Lots of the core stuff about RDBMSs goes back decades and even old stuff like this is still very relevant. Try reading this page [greenspun.com] (just a dozen printed pages) and see what you think. He covers a lot of the fundamentals well and his style of writing is pretty entertaining.
db4o (Score:0, Interesting)