Slashdot Mirror


Good Database Design Books?

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."

291 comments

  1. A Few Suggestions by eldavojohn · · 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 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. If you consider the internals of Google, perhaps BigTable is the most prolific database implementation out there and while interesting, 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 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. That assumes you have all the basic database design practices covered.

    --
    My work here is dung.
    1. Re:A Few Suggestions by OneC0de · · Score: 2

      Thank you for the great and informative reply!

    2. Re:A Few Suggestions by RobertM1968 · · Score: 4, Informative

      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.

      eldavojohn makes some excellent points and gives some great suggestions. Keep in mind, like elda suggests, nothing is cut and dry. Configuration, resources, numbers of connections for specific data, etc; all will have an impact (or should) on what you should do and how you should design.

    3. Re:A Few Suggestions by Anonymous Coward · · Score: 0

      Beginning Database Design could be considered a 'lite' version of the above recommendations. Note that all three of these books tend to be heavy on UML and light on SQL statements. I suspect you are looking for a book titled 'Help me normalize/fix this here database' . I have not yet found that book either. That said, Beginning Database Design will give you enough of a taste of Data modeling to start thinking about your situation.

    4. Re:A Few Suggestions by hguorbray · · Score: 5, Informative

      http://www.amazon.com/Case-Method-Entity-Relationship-Modelling/dp/0201416964

      I used this book at Foothill college in an intro to data management class and it taught me more than any of the dozen oracle classes I took once I got past the terminology of tuples, etc

      this one is also well-recommended:
      http://www.amazon.com/Database-Systems-Design-Implementation-Management/dp/0760049041

      and this one is good for people without dba or architect background:
      http://www.amazon.com/Database-Design-Mere-Mortals-Hands/dp/0201752840/ref=sr_1_1?ie=UTF8&s=books&qid=1278629171&sr=1-1

      I would stay away from the vendor specific books as good database design s/b dbms agnostic

      -I'm just sayin'

    5. Re:A Few Suggestions by Anonymous Coward · · Score: 0

      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.

      eldavojohn makes some excellent points and gives some great suggestions. Keep in mind, like elda suggests, nothing is cut and dry. Configuration, resources, numbers of connections for specific data, etc; all will have an impact (or should) on what you should do and how you should design.

      Not to mention taking into account how the tables will be used and populated. If the database will be populated by the user, you can get more efficiency with greater amounts of normalization than you will if the database is being populated from an external source (which I'm doing now with text-based reports that are meant to be read by humans and not computers). You could normalize imported data, but this will cause a larger amount of processing to do lookups on the imported data to find the appropriate foreign keys (or add new rows to the foreign tables to accommodate new data).

      The general rule is that you want to have as little repeating data in your tables.

    6. Re:A Few Suggestions by fyngyrz · · Score: 1

      'Help me normalize/fix this here database'

      Oh, no. No. He should be looking for 'Help me normalize/fix that there database'

      Much more erudite presentation, start to finish. Recommended by Dale Earnhardt, so it must be fast, too.

      --
      I've fallen off your lawn, and I can't get up.
    7. Re:A Few Suggestions by cayenne8 · · Score: 1
      Hmm.....my quick reading of the topic for this thread, leads me to believe that this IT person started off database knowledge with [shudder]MS Access. Something that should have been BANNED from usage lest another PHB got ahold of it, designed a database for the team to use with 2 tables...that because the office and company standard until it became so unwieldy, that they turn it over to a DBA/Data Modeller type...and say "Hey, throw this on Oracle to make it better".

      And thus begins...the normalization nightmare.

      Or...am I the only one that not only had to unravel the mess, learn the company's business rules to find their true data needs, to then face the daunting task of cleaning the fucking data (don't ya love free form text fields complete with hard returns in them?)...and trying to load it into the proper database structure.

      Then...they complain they don't understand the SQL and need to join tables in a query...etc.

      PLEASE take these "database tools easy enough for the boss to use" out of circulation, can't someone please think of the childer....er....database guys?

      --
      Light travels faster than sound. This is why some people appear bright until you hear them speak.........
    8. Re:A Few Suggestions by postbigbang · · Score: 2, 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.

      --
      ---- Teach Peace. It's Cheaper Than War.
    9. Re:A Few Suggestions by tinkerghost · · Score: 2

      Or...am I the only one that not only had to unravel the mess

      Oh gods no. Though it's no so much the normalization - that's no different than starting from scratch anyway. The big problems are trying to explain to the people using the DB that 'canceled' isn't a valid integer and cleaning up the data that's been all dumped into text fields because those 'make it easy to change what they put in the field'.

    10. Re:A Few Suggestions by PenquinCoder · · Score: 1

      You must be new here. No one actually ever HELPS when it comes to 'Ask Slashdot' (Good post though, informative)

    11. Re:A Few Suggestions by MagikSlinger · · Score: 1

      Information Modeling and Relational Databases

      It's not just another database modelling book. It discusses in depth the object-role modelling (ORM) method of taking human ways of talking about data and turning it into a really well-modelled database.

      I stumbled across this book when looking for new data modelling books, and I was deeply impressed with the method.

      --
      The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
    12. Re:A Few Suggestions by t33jster · · Score: 2, Insightful

      "The best method" is probably a really vague concept.

      I disagree completely. The "best" method varies widely, because it is specific to the RDBMS you're using.

      OP says he understands how databases work, but it seems to be limited to how to put data in & get data out. A database is (or can be) more than a bit bucket. If it's taking too long to fetch records from a 10 million record table, there are some serious performance issues here. It could be any combination of bad data modeling, improper indexing, underpowered hardware, poorly configured concurrency/consistency controls, inefficient I/O subsystem, OLTP workload on a system configured for OLAP etc...

      Understanding concepts like transactions, locking mechanisms, disaster recovery, table structure (heap vs clustered), index structure, temp tables, stored procedures/packages/functions, data types, etc. is important, but it's equally important to understand how your chosen RDBMS implements these so that you can fully exploit them. Armed with this knowledge and the needs of your business, you'll be able to refactor your data and/or applications appropriately

      I think you can get at the concepts through practice - particularly since you're working with more than 1 RDBMS, but "getting" databases in general won't get you what you're looking for. Depending on the urgency here, you may find yourself hiring a gun to help sort out your situation, as the amount of research & testing required to get the knowledge you need to do this may not be practicable for an IT Director.

      I hope this helps!

      --
      Take off every 'sig' for great justice.
    13. Re:A Few Suggestions by garyisabusyguy · · Score: 2, Informative

      I agree with the CASE Method ER book, Barker is the king of data modeling. In the book he walks through some real world scenarios (airline ticketing, manufacturing bill-of-materials) that are fundamental to relation databases.

      You may find some implementation differences with SQLServer, like not using cursors (a common pl/sql construct in Oracle) and some limitation to using "join on" SQL syntax, but I used the book when I went from writing single user applications to enterprise apps.

      Whatever book you get, expect it to be a tedious learning experience. I had been working with relational databases (Dbase IV, Infos) for about five years at the time and it took some serious re-ordering of my brain to really "get it"

      Good Luck

      --
      Wherever You Go, There You Are
    14. Re:A Few Suggestions by Z00L00K · · Score: 1

      I suspect that the question wasn't about how to design a database engine, but rather how to model the data that is stored in a database for best consistency and performance.

      It's not easy to do a "perfect" model because one solution may be best for some use cases while another is better for other use cases.

      It's often a trade-off between versatility and performance. Databases also have a tendency to grow over time. But I think that the most critical part is to have a thorough understanding of what your application does and how it is used. Where is immediate response expected/needed versus when can the user wait for the data. Normalization of a database may mean that instead of one table with a lot of data you may also get support tables so that the main table has references to the support tables. This may or may not be good for the particular case.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    15. Re:A Few Suggestions by ishkan · · Score: 1

      I stumbled into this few years ago. It has served me well since.

      Data Modeling Essentials, Third Edition
      # Paperback: 560 pages
      # Publisher: Morgan Kaufmann; 3rd edition (November 18, 2004)
      # Language: English
      # ISBN-10: 0126445516
      # ISBN-13: 978-0126445510

    16. Re:A Few Suggestions by Anonymous Coward · · Score: 0

      Helpful info.
      If you wish to experience flying an aircraft, you can do so on your own pc. airplane simulation

    17. Re:A Few Suggestions by Splab · · Score: 1

      You had me all the way till you complained about hard returns in a form field - why on earth would that ever be a problem?

    18. Re:A Few Suggestions by Anonymous Coward · · Score: 0

      I develop databases for businesses freelance. I have used several good books, but I took on a company that found me and I charged them about 10% of what the big companies do. I was lucky in that there were allowances for the first year's activity to not be the best version. The next year I did it a little better, then the next, and so on. I have found that the database design depends greatly on the company and what they will do with the data. Mine just wanted useable reports where they would not have to design the query so much as keep the tables updated themselves and the reports would change as needed and all they had to do was print them out.
      As soon as you give them one good report they will want another that does something else. Then another, and another. Sometimes they want something that the database will simply not do.
      I use Access if they already have it installed and the data is not real big. I use MySql if it is big and they don't have any database. You can then use JAVA for the front end. I stay away from Oracle because it is the most expensive and away from MS Sql Server because of too many licensing issues. Then I get a book specific to that database. The least helpful books seemed to be written about Microsoft. I lucked out and found one by Robert P. George in bookstore in Alpharetta Georgia while visiting a friend.
      I sincerely hope they allow for the first version to not be the greatest.

    19. Re:A Few Suggestions by prlawrence · · Score: 1

      "The best method" is probably a really vague concept.

      I disagree completely. The "best" method varies widely, because it is specific to the RDBMS you're using.

      Tom Kyte makes an excellent case for this in chapter 1 of his book Expert Oracle Database Architecture. He says that treating the database like a black box (i.e. taking a database-agnostic approach) is the wrong way to go; that a lack of fundamental understanding about your db of choice will hurt your project. He goes on to give some great details starting here.

      If the OP had mentioned Oracle, then I would have recommend the whole book. Nonetheless, the first chapter might prove a beneficial read.

      Phil Lawrence

    20. Re:A Few Suggestions by t33jster · · Score: 1

      If the OP had mentioned Oracle, then I would have recommend the whole book. Nonetheless, the first chapter might prove a beneficial read.

      Absolutely. Excellent suggestion to check out chapter 1 for free.

      I'm an avid Tom Kyte reader, and I probably should have attributed my post as a paraphrase of that chapter. I sidestepped it simply because Oracle was not on the list of technologies the OP is interested in. I sincerely hope there are analogous books for other RDBMS's. That book sits on my desk, yet gathers very little dust.

      --
      Take off every 'sig' for great justice.
    21. Re:A Few Suggestions by Anonymous Coward · · Score: 0

      The CASE Method ER book is probably the best book to be found. The Mere Mortals book is a good introduction, but not very deep.

    22. Re:A Few Suggestions by RobertM1968 · · Score: 1

      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.

      People DONT need that... except a small subset doing small apps at home or for their small (and not going to get much larger) business. As for exporting Access tables... I have went that route, because two clients of mine hired someone who knew nothing about databases and used Access as their back-end. It was a nightmare, as what they were storing is a relatively complex data set. ONE HUNDRED TWENTY SIX tables (yes, 126) for what I have accomplished in 7 tables that actually store MORE data. He used Microsoft's design tools and built a custom program with them, and let it build the databases/tables.

      Performance was abysmal. Five to ten minutes for reports that, though complex, takes a back end WEB SCRIPT (back end - not client side) of mine 21 seconds to complete. What's worse is this, he had the data split by years, meaning while my web scripts were handling a 5 year data set to find records for a specific year and calculate reports from it (in 21 seconds or less), Access and his app were taking 5-10 minutes while looking at 1/8 the data (only one year (1/5 the data), and a smaller data set (the remaining difference in amount of data)).

      Simple reports we'd have to run (via Siebel and MSSQL and such) when I worked at CompUSA used to take so long that we'd start them, go for breakfast and come back to check to see if they were done.

      These tools "approachable by civilians" make a nightmare for those who need to write something with any form of performance while maintaining and importing the datasets created by said tools.

    23. Re:A Few Suggestions by postbigbang · · Score: 3, Informative

      Yeah, no one said that people can't strangle themselves and do foolish stuff. Big production apps need to be written by people that know what they're doing.

      But your citations are at the edge of the curve. You're a black belt, and your stuff better run fast and cleanly or your creds are dirt. These are civilians. They learn, and hopefully know when it's time to get a pro into the equation before they hurt themselves.

      Some won't, but the same can be said for car repair and even nuclear physics (viz the LHC forehead slappers).

      Your kewl self knows this stuff cold. Let other people learn, even if they get hurt. If they have to pay to get stuff fixed, it's a risk that they likely knowingly take from the onset.

      I wish there were real tools with real front ends that you could give to a civilian, knowing they couldn't hurt themselves. But like a chainsaw, you have to hope that when they fire things up, they know a little about what they're doing.

      --
      ---- Teach Peace. It's Cheaper Than War.
    24. Re:A Few Suggestions by ta+bu+shi+da+yu · · Score: 1

      If you think that they are good books, then I strongly recommend the book Applied Mathematics for Database Professionals. Should be easy to find on Google Books.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    25. Re:A Few Suggestions by RobertM1968 · · Score: 1

      Yeah, no one said that people can't strangle themselves and do foolish stuff. Big production apps need to be written by people that know what they're doing.

      But your citations are at the edge of the curve. You're a black belt, and your stuff better run fast and cleanly or your creds are dirt. These are civilians. They learn, and hopefully know when it's time to get a pro into the equation before they hurt themselves.

      Some won't, but the same can be said for car repair and even nuclear physics (viz the LHC forehead slappers).

      Your kewl self knows this stuff cold. Let other people learn, even if they get hurt. If they have to pay to get stuff fixed, it's a risk that they likely knowingly take from the onset.

      I wish there were real tools with real front ends that you could give to a civilian, knowing they couldn't hurt themselves. But like a chainsaw, you have to hope that when they fire things up, they know a little about what they're doing.

      LoL... agreed. Problem is people who claim to be experts in the stuff are using these things (yeah, I wasnt very good at making my point above) - like CompUSA and Siebel (who claims mastery of such things). Ah well...

    26. Re:A Few Suggestions by Unequivocal · · Score: 1

      Great post. In addition to those references, if someone is actually implementing SQL, I've found that Celko's SQL for Smarties is a great way to develop skills to turn good design into effective code.. http://www.amazon.com/Joe-Celkos-SQL-Smarties-Programming/dp/1558605762

      Just an addendum to your excellent post..

    27. Re:A Few Suggestions by Anonymous Coward · · Score: 0

      I am not sure about good resources for database design, but if you want a damn comprehensive book on MS SQL 2000, this book covers about everything possible.

    28. Re:A Few Suggestions by xiong.chiamiov · · Score: 1

      If you consider the internals of Google, perhaps BigTable is the most prolific database implementation out there and while interesting, it is sort of a very specific proprietary database implementation.

      There are, of course, a number of open-source clones, the most notable being Cassandra, developed primarily by Facebook.

    29. Re:A Few Suggestions by pawsitive · · Score: 1

      Database Design for Mere Mortals...had this as a textbook. If you're at the "I know there's a right way (at least one) and many wrong ways (lots, really) to go about this, but I'm not sure how to tell which is which"...this book is great. Clear, helpful, understandable, good.

    30. Re:A Few Suggestions by Bengie · · Score: 1

      "[...] pick up a book on database design and start to tinker."

      That's about it. You need to learn to think like the DB.

      3 things you need to know.
      1) What information you need to store
      2) How it related to each other
      3) What kind of queries do they need to run against it

      Table structure will affect what kind of indexes you can use, and the indexes will affect the performance of different queries in different ways.

    31. Re:A Few Suggestions by Hognoxious · · Score: 1

      Big production apps need to be written by people that know what they're doing.

      The problem is that big production apps sometimes grow out of small, simple tools built by end-users.

      I mean, it already does half of what we need ... surely it's be easy to just extend what's already there...

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    32. Re:A Few Suggestions by Hognoxious · · Score: 1

      Sometimes when you extract something as a CSV (say, to transfer it to another system) the returns can get interpreted as end-of-record.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  2. Somewhere, a coder is polishing his resume by RobertB-DC · · Score: 1, Insightful

    I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications.

    I'm sure I'm not the only code monkey who shudders at the implications of this statement.

    Some of us coders are well-nigh insufferable already, because they think they're Superprogrammer and can leap tall mainframes in a single bounds check. The problem comes when those types find themselves in management -- but won't let go of the programming reins. Now, the IT guy with a new idea doesn't just have to worry about it getting shot down by the hotshot who knows everything -- he has to worry about whether his *career* will get shot down by Mr. Hotshot Coder-Manager.

    There's a great chance that the article poster isn't like that. But I'm worried, because Ask Slashdot isn't who he should be asking... he should be asking the coders he manages how to design and/or restructure the database. The fact that he's asking Slashdot tells me that he's not comfortable letting someone else do the work, possibly because he's Superprogrammer and always knows what's best.

    But in case that's not the situation -- maybe he's in a company that simply grew faster than its staffing could handle -- I'll answer the question. He wants a good book to explain general database design techniques. My answer: buy a good book on management techniques, because *that* is your job. Let the people you manage come up with a database design, because that is *their* job.

    --
    Stressed? Me? Of course not. Stress is what a rubber band feels before it breaks, silly.
    1. Re:Somewhere, a coder is polishing his resume by Albanach · · Score: 3, Insightful

      I'm sure I'm not the only code monkey who shudders at the implications of this statement.

      Well, it depends on the size of the company does it not? Perhaps they employ fifteen to twenty staff with an IT department of 2 or 3, mostly focused on hardware and user support. Then it would be much more reasonable for the Director of IT to be a coder who is also taking management responsibility.

      You're right that if the company grows, management should be the focus and a decent DBA employed, but until then like many small companies the poster may have to be a jack of all trades. At least they're showing incentive in seeking to master at least one of their areas of responsibility.

    2. Re:Somewhere, a coder is polishing his resume by Anrego · · Score: 3, Interesting

      .. either that or he's the only programmer in the company and can thus effectively call himself whatever he wants.

    3. Re:Somewhere, a coder is polishing his resume by OneC0de · · Score: 5, Informative

      I'm the article poster. Our company is relatively small, with an IT staff of less than 5, and total company size less than 50. I write all the code, simply because none of our other IT pros are comfortable enough writing it. If there were "coders" under me to ask, please believe I would use them as a resource first.

    4. Re:Somewhere, a coder is polishing his resume by m509272 · · Score: 1

      "I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications"

      Translation - I'm a one man IT department

      Bud, start with the truth. A "Director of IT" does not write code. You could have equally said you were CIO, just as truthful.

    5. Re:Somewhere, a coder is polishing his resume by DragonWriter · · Score: 2, Informative

      There's a great chance that the article poster isn't like that. But I'm worried, because Ask Slashdot isn't who he should be asking... he should be asking the coders he manages how to design and/or restructure the database.

      Why assume that there are any coders that OP manages? He's "Director of IT" for a "small/medium" company that isn't a software (or even technology) company. It's quite possible that OP manages, if anyone, a handful of desktop support technicians that aren't programmers.

      In fact, I would hope that something like that is the case, as that's really the only explanation for a Director of IT that, as OP describes, personally "writes the code" (note: not "writes some of the code") for a company's applications, since otherwise he is managing coders that don't actually write any code, which would be unimaginably wasteful.

      Certainly, I've known of small companies in non-computing fields where the "Director of IT" was also the whole IT department.

    6. Re:Somewhere, a coder is polishing his resume by kramulous · · Score: 2, Informative

      I would say you are being a little paranoid. There is such a thing as a good boss, you know. I find that these are the guys who are still heavily involved in some sort of 'research'. Which is probably what he/she is doing. Probably a smart cookie, does some coding but by no means all of it. Knows enough to recognise a good text to buy for his group so they can all learn together.

      I put it to you that I'd prefer to work with this guy than with your paranoid self. Do you have meetings of the secret type?

      --
      .
    7. Re:Somewhere, a coder is polishing his resume by m509272 · · Score: 2, Insightful

      Does and doesn't. Shouldn't be making up titles that don't fit an IT department size of 2 or 3. How about "I run the IT department". That's like me in my one-person company calling myself CEO, COO, CIO, Chairman, etc. It's BS. Someone asking for help should leave out the fake title crap and avoid these type of responses.

    8. Re:Somewhere, a coder is polishing his resume by obarthelemy · · Score: 0, Offtopic

      +1

      --
      The Cloud - because you don't care if your apps and data are up in the air.
    9. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 5, Insightful

      He was asking for a book, not your stupid criticism.

    10. Re:Somewhere, a coder is polishing his resume by rainmayun · · Score: 1

      I wish I still had my mod points from yesterday, and I don't use them on ACs often. Titles are irrelevant. He didn't say anything about having a staff to manage - he might be the only person at the company who's capable of that kind of software development AND responsible for managing their network, desktops, phones, etc. And he may have no authority to hire anyone else. Sometimes you get stuck in a situation where you have to do what you can.

    11. Re:Somewhere, a coder is polishing his resume by Snap+E+Tom · · Score: 0, Flamebait

      2010 and we still have the "I'm a Programming God So Get Out of my Way, Managers" mentality. Great.

    12. Re:Somewhere, a coder is polishing his resume by IICV · · Score: 1, Insightful

      Shouldn't be making up titles that don't fit an IT department size of 2 or 3. How about "I run the IT department". That's like me in my one-person company calling myself CEO, COO, CIO, Chairman, etc. It's BS. Someone asking for help should leave out the fake title crap and avoid these type of responses.

      Although I agree that if he's asking for help he probably should have gone for the more humble "I'm a one-man IT department" approach, but I just wanted to point out that quite frequently when it's a small company and there isn't much money coming in people get "paid" with lofty titles. "Sure, it may only be a 10 person company, but I'm the Director of IT!" sort of thing. If nothing else, it looks good on your resume when the company folds.

    13. Re:Somewhere, a coder is polishing his resume by Albanach · · Score: 2, Interesting

      Does and doesn't. Shouldn't be making up titles that don't fit an IT department size of 2 or 3.

      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.

    14. Re:Somewhere, a coder is polishing his resume by emurphy42 · · Score: 1

      You're ass-u-ming that "Director of IT" means he manages other coders. He may be a one-man department, or may manage people in any number of other IT roles.

    15. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      Agreed. Know how many companies I've seen with a "Director of Engineering", a "VP of Engineering", or a "CTO" with one or two direct engineering reports? I'd love to say that most of them were honest-to-goodness humble people who didn't let their titles go to their heads. Sadly, that often was not the case.

      The OP is a Sysadmin who also codes some of the time. It's not about embarrassing you or debating your salary; it's about telling the truth of the matter.

      Otherwise, I'm the CTO/IT Manager/Sysadmin/DBA/UED/Customer Service/Frontend/Midend/Backend ninja/wizard/jedi of my company. I do all those things, but I don't deserve those titles because I am not the same as someone hired to do those tasks. Otherwise, it's technically true. Especially the Jedi part.

    16. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      your manners are poopy, and I'm not going to check this thread again, so you'll have to deal with me thinking that, and you not being able to change my mind with a scathing quip.

    17. Re:Somewhere, a coder is polishing his resume by martin-boundary · · Score: 5, Insightful
      When you post a question on Slashdot, you have to expect teenagers who comment from their parents' basement to call bullshit on you based on their own extensive 30+ years of experience dealing with fortune 500 companies.

      HTH.

    18. Re:Somewhere, a coder is polishing his resume by sgbett · · Score: 1

      In those situations one might do well to still call oneself 'code monkey', I know I do.

      --
      Invaders must die
    19. Re:Somewhere, a coder is polishing his resume by DragonWriter · · Score: 1

      Shouldn't be making up titles that don't fit an IT department size of 2 or 3.

      If the person has similar budgetary independence and authority within the organization, e.g., over cross-cutting concerns as other "Directors" within the organization, the title is appropriate even if the person has no subordinate staff.

    20. Re:Somewhere, a coder is polishing his resume by afidel · · Score: 2, Informative

      Huh? I'm employed by an S&P 500 and director is the title above manager and below VP. Looking at the definition of IT Director in the first dozen hits on Google seems to match that.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    21. Re:Somewhere, a coder is polishing his resume by bsDaemon · · Score: 1

      Is that one of those "i think its ok when they say it" things?

    22. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      Hire a data analysis consultant to take a look at your data and come with some suggestions. A couple of days work that can save you weeks/months of headaches == money well spent.

    23. Re:Somewhere, a coder is polishing his resume by rcrow490 · · Score: 1

      You are an idiot!

    24. Re:Somewhere, a coder is polishing his resume by Nutria · · Score: 1

      he should be asking the coders he manages how to design and/or restructure the database.

      Hah!!!

      Most (and I mean most) coders are HORRIBLE database designers. H-O-R-R-I-B-L-E.

      That's why they're called code monkeys: because all they're good at is banging out mediocre code.

      --
      "I don't know, therefore Aliens" Wafflebox1
    25. Re:Somewhere, a coder is polishing his resume by sgbett · · Score: 1

      Don't ask me, I'm just the code monkey! ;)

      --
      Invaders must die
    26. Re:Somewhere, a coder is polishing his resume by Albanach · · Score: 2, Informative

      In a small a Director is usually someone who sits on the board.

      In a large company like an S&P500 one, a director is usually a management position with responsibility for a specific business area.

      The titles are the same but the meaning different. I'm assuming from the size of business the poster described (50 employees) that he is in the former category of Director.

      http://en.wikipedia.org/wiki/Corporate_title describes both types of director.

    27. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      One other suggestion...
      Look for user groups in your area for the brand of database that you're using. They can be a very valuable resource.

    28. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      "When you post a question on Slashdot, you have to expect teenagers who comment from their parents' basement to call bullshit on you based on their own extensive 30+ years of experience dealing with fortune 500 companies. "

      Yeah, sure, 30+ years of experience that are not enough neither to know quite a basic answer for quite a basic question nor how to search for it by himself.

      No wonder others less fortunate not holding an "IT Director" title and wages will call "bullshit" and "if you don't know how to do your job, others like me will be glad to do it properly".

    29. Re:Somewhere, a coder is polishing his resume by turbidostato · · Score: 1

      "And he may have no authority to hire anyone else"

      An "anything" Director without the authority to hire? He either has the authority to hire or he is not a Director.

    30. Re:Somewhere, a coder is polishing his resume by RyuuzakiTetsuya · · Score: 4, Funny

      He's lame then.

      If I had the flexibility to call myself whatever I wanted, I'd make damn sure that my business cards all said, "Batman" on them.

      --
      Non impediti ratione cogitationus.
    31. Re:Somewhere, a coder is polishing his resume by JWSmythe · · Score: 2, Informative

          Actually, that's rarely the case. Even as Director, or even VP, you usually can't just say "I want to hire someone", and then go do it. Does your budget allow for hiring another employee? Would another employee on staff change the company position for taxes, insurance, or regulatory concerns?

          A decision such as that usually goes up to the COO or CEO (depending on the company structure). Upon tentative approval, it would go to accounting to ensure the budget is available to sustain the prospective employee, and then over to human resources.

          It can be that a Director or VP already has the authorization to add employees, which simply means it's already gone through the other steps, and then he or she can hire as needed. It would be very reasonable to believe that a Director or VP would have authorization to hire X employees as needed.

          Maybe your company works in such a loose manner that the brass can hire and fire at will, but a well run organization will actually plan for such changes.

      --
      Serious? Seriousness is well above my pay grade.
    32. Re:Somewhere, a coder is polishing his resume by Fluffeh · · Score: 1

      --
      I don't break for ACs

      Do you mean "brake" rather than "break"?

      Cause if you don't, you might want to say you don't break for anyone. I haven't seen anyone just break for someone else before :)

      --
      Moved to http://soylentnews.org/. You are invited to join us too!
    33. Re:Somewhere, a coder is polishing his resume by obarthelemy · · Score: 1

      Corrected, thanks, non-native speaker (writer ?) here

      --
      The Cloud - because you don't care if your apps and data are up in the air.
    34. Re:Somewhere, a coder is polishing his resume by Orestesx · · Score: 0, Troll

      Good for you that you earned the title, but you are not a director. A director has multiple managers, who each has his own staff. You are a supervisor. And you work for a small business.

    35. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      You have proven why you will always be the guy designing a database instead of the guy telling you that your next job will be to design a database.

    36. Re:Somewhere, a coder is polishing his resume by six11 · · Score: 4, Insightful

      The fact that he's asking Slashdot tells me that he's not comfortable letting someone else do the work, possibly because he's Superprogrammer and always knows what's best.

      The fact that he's asking Slashdot tells me he's willing to listen to the lunatic ravings of people on Slashdot (such as myself), indicating that he's aware that he doesn't know best. If he thought he knew best, he wouldn't ask.

    37. Re:Somewhere, a coder is polishing his resume by Lord_Frederick · · Score: 3, Informative

      Our CIO has a programming background and once fixed some database code we were having problems with. This is a 10,000 person organization with an IT staff of around 300. It's not hard to imagine a small company where the IT director takes on some programming tasks.

    38. Re:Somewhere, a coder is polishing his resume by DuckDodgers · · Score: 1

      I work at a really small company and can have just about any title I want. Thanks for the idea, maybe tomorrow I'll ask the company president if I can be Batman.

    39. Re:Somewhere, a coder is polishing his resume by anotherzeb · · Score: 1

      Would a rose by any other name not smell as sweet? Who cares what the poster says their job title is - they're not trying to use it to get your credit card number or bank details. If it's about polishing a resume - haven't we all done that? If it's a problem, surely that's for the next employer (or the poster if it results in being laughed out of interviews), not /.

      --
      Good luck sometimes arrives disguised as bad
    40. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      Epic Fail. In a corp, a director is a particular type of officer, regardless of how many employees there are (even just 1 employee is ok).

    41. Re:Somewhere, a coder is polishing his resume by Zerth · · Score: 1

      It's the same at my company: anybody that reports to the COO is a Director of "Whatever", even if they have no subordinates. Maybe 1/2 of the directors don't need employees to perform their tasks.

      They all, however, can draft employees from other departments E.g. the director of process improvement can ask for time from the people who are performing the tasks he is studying.

    42. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      Awww, are you a director too? It's ok, I'm sure you're doing a great a job managing your 1 employee, don't let anyone tell you that you aren't a real director.

    43. Re:Somewhere, a coder is polishing his resume by bsDaemon · · Score: 1

      Well, I suppose it's good to see you taking it back.

    44. Re:Somewhere, a coder is polishing his resume by Nadaka · · Score: 1

      And that is what he (or at least someone claiming to be the author of the post, I didn't verify) mentioned in a post.

      He has 5 IT/networking guys under his management out of a 50 man company.

    45. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0
      I'm a director. At least that's the title the UK government gives to people like me who have particular legal responsibilities for running a company. And I have no employees.

      Company directors' responsibilities

    46. Re:Somewhere, a coder is polishing his resume by lonecrow · · Score: 1

      Hi, I have been a database developer since ~1984. How about you contact me via http://www.lonecrow.com/.

      Perhaps I can have a look at one or two of your queries and offer ways to improve their performance. If your happy with the results then maybe you can contract me for more help.

    47. Re:Somewhere, a coder is polishing his resume by TooMuchToDo · · Score: 1

      Director of IT looks way better on the resume and commands a much higher salary when you're job searching than "code monkey".

    48. Re:Somewhere, a coder is polishing his resume by Fluffeh · · Score: 1

      Neither am I and I, like you, find the number of identical sounding words that are spelled differently really annoying.

      --
      Moved to http://soylentnews.org/. You are invited to join us too!
    49. Re:Somewhere, a coder is polishing his resume by turbidostato · · Score: 1

      "Maybe your company works in such a loose manner that the brass can hire and fire at will, but a well run organization will actually plan for such changes."

      I didn't say "at will", I said a Director "has the authority". Hummm... and probably even "at will" is true if only for a while: if it's its dept. and it's within his budget, then here it go. Of course, for a Director either results show his value or he'll go to be a Director not so much time.

    50. Re:Somewhere, a coder is polishing his resume by Hognoxious · · Score: 1

      where I personally write the code that runs our applications.

      he should be asking the coders he manages

      Comprehension fail.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    51. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      A "Director" is generally a member of the board of directors. A "Director of" a given function is generally the person in charge of that department within a specific business unit of a larger company. Back in the early history of corporations, before the split between management and ownership became entrenched, the Directors were often major shareholders and also worked in the business in charge of major areas, hence you'd have a director of the board who was in charge of some management aspect inside the company. It still happens, but generally in smaller firms. You still often have VPs who also sit on the board in larger corporations. You won't find a "Director of" on the board of directors in a large company any longer, since that title in a managerial context evolved down to a lower level in the managerial hierarchy over time and directors of the board no longer engage in direct management. In fact, board directors generally have no formal role outside the context of a board meeting, unless they are designated to also be officers with specific legal obligations. Directors of the board only "exist" with any kind of authority in the chain of command when a board meeting is in session and can only act through their votes on board resolutions--i.e., they only "manage" as a group through voted-upon resolutions during meetings that are then executed by the managers through the chief executive officer they select.

      In my experience, smaller companies that don't want to have too many people with a VP title use "Director of" interchangeably with VP, simply to mean that person is in charge of a given function within the business. In a small organization with few layers of hierarchy, CIO, CTO, DirIT, VP/IT, IS Mgr all basically mean the same thing: the big cheese in charge of information systems. I'm the Director of IT in a 50-person organization with a staff of 4. On the org chart, I'm at the same level as the VP of Marketing and the VP of Operations. They just weren't consistent with the naming, and the IT department is a smaller department so they thought it needed a smaller job title. *grin* If the company grows to 200 people, it'll get tweaked. At 50 it really doesn't matter unless you need to stroke someone's ego. Interestingly, after I've talked about how "Director of" and "Director" are different in most companies, I actually happen to sit on the board of directors as well, along with the VPs and members of the family that owns the business.

      And yeah, since I'm the expert at certain kinds of programming, I directly code on certain systems in our company as well, even though I wish we had the budget to add another programmer so I didn't need to. :)

    52. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      In the UK, Director has legal significance. You cannot call yourself a Director unless you are one, and are listed at Companies House. It makes you legally responsible for the companies actions.

    53. Re:Somewhere, a coder is polishing his resume by Doctor+O · · Score: 1

      I was just writing a reply to someone else guessing your situation, and seeing this response of yours, I was right.

      I was the CTO of a 40 people company in print media production, so I know exactly where you're coming from. If your IT guys don't feel comfortable with writing database applications, you should really consider getting other people. Really. If you need 1 or 2 coders instead of helpdesk monkeys (which is what you appear to have if they refuse to write DB code), you should consider exchanging parts of your team. It might not be nice, or easy, but as Director of IT it's your job to provide the IT your company needs. That includes layoffs and hiring if necessary.

      If it's a one-shot project, however, you may want to consider using a freelancer. There's many really good ones (and also pretty bad ones), so be sure to have an in-depth conversation and insist on having code and live projects shown.

      Other people might want to add some questions to ask in that talk, I don't have the time now. But asking "what is 2NF and 3NF" and how s/he models DB's is a good start. It's also a good thing if you understand the code without being a DB specialist. In fact, that's the best sign you've good a good freelancer.

      --
      Who is General Failure and why is he reading my hard disk?
    54. Re:Somewhere, a coder is polishing his resume by Hognoxious · · Score: 1

      Yeah, all those so-called "directors" of itty bitty companies. Bill Hewlett, David Packard. Steve Wozniak. That Gates dude.

      They'll never amount to anything.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    55. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      In a small-medium non-IT company it's quite likely that the director of IT manages a couple of network engineers and desktop maintenance guys, and handles the budgeting/purchasing for all HW/SW; most of such companies wouldn't have any programmer positions in their payroll.

      Also, there is a big difference between an "it department of one" as a codemonkey, and an "it department of one" as an IT director - the first would spend most of his time on IT tasks around the office, the second would spend most of his time on IT planning and handling outsourced contractors who periodically install or develop stuff for the company, instead of supporting in-house staff.

    56. Re:Somewhere, a coder is polishing his resume by L0rdJedi · · Score: 1

      Perhaps they employ fifteen to twenty staff with an IT department of 2 or 3, mostly focused on hardware and user support. Then it would be much more reasonable for the Director of IT to be a coder who is also taking management responsibility.

      IT department of 2 or 3 to manage 15-20 staff?! I wish I was that lucky. I've had to fight tooth and nail (and even take some emergency vacation because of my stress level) just to get one extra person added to IT in a company of just over 50 people. And yes, I know my manager's an ass.

      I think they finally decided that maybe IT does need another person (total of 2 now) to not only help everyone, but to be able to move forward on all the projects that seem to have completely stalled.

    57. Re:Somewhere, a coder is polishing his resume by L0rdJedi · · Score: 2, Insightful

      Yeah, until he's asked how many people he managed and the answer is "Well, it's really just me". He could lie, but without actual management experience, he'll fall flat quick.

    58. Re:Somewhere, a coder is polishing his resume by roman_mir · · Score: 1

      IT staff of less than 5, and total company size less than 50.

      - I have less than 5 heads on me and I do have fewer than 50 fingers as well. Sounds about right.

    59. Re:Somewhere, a coder is polishing his resume by L0rdJedi · · Score: 1

      It's irrelevant on your resume when the company folds. The only thing that'll matter at that point is your skillset and experience. Since there's no way to validate whether you worked there or not, your title won't mean shit. It could say CEO and it wouldn't matter at all.

    60. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      If you're the only developer you should consider using a RAD tool like servoy (servoy.com for free download) to develop your apps with. It doesnt require you to know much about your table structures.

    61. Re:Somewhere, a coder is polishing his resume by Kjella · · Score: 1

      It can almost be that easy. Many large companies I know operate with a headcount, if you're below your headcount you can pretty much hire at will. HR is just doing the practicalities, much like IT will get you into the IT systems. Fortunately my country is anything but fire at will, but that's got nothing to do with the corporate structure...

      --
      Live today, because you never know what tomorrow brings
    62. Re:Somewhere, a coder is polishing his resume by ralatalo · · Score: 1

      >> I am the Director of IT for a small/medium sized marketing company, where I
      >> personally write the code that runs our applications.
      >
      > I'm sure I'm not the only code monkey who shudders at the implications of this statement.

      Which part of small/medium marking company did you miss? I worked for one of those and the IT department was 3 guys, The Unix Guy (me), The Novell Guy, the Desktop Guy...eventually we grew and got a technical manager who rose in ranks, but as we moved to NT we all got training (no new hires) and I went on to be DBA, they replaced me with a new Unix Guy... they did have a programmer staff of 3 people which we all worked with, more so perhaps in my DBA role but their experience was working with unidata database (not SQL) and we moved to (surprise) MSSQL. The role of the database was also changing from mail list management to full campaign management including responses and outcomes.

      If it helps, forgot his statement about manager and focus on just:"... 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."

      So, he is one of those programmers who is moving into database design..he's moving up in the world.

    63. Re:Somewhere, a coder is polishing his resume by owlstead · · Score: 1

      Many of these teenagers have grown up by now. I've seen correct answers on complex questions regarding cryptography that I've even have trouble understanding, let alone answer. And you can rely on the mods to do a relatively good job of refining the answers (even though many good answers posted too late get lost, and even though once the complexity goes up, the quality of modding goes down).

      Look at the post by hguorbray for instance. Now that seems to me like a well thought out answer. Way better than going into a bookstore and pick up DB books at random.

    64. Re:Somewhere, a coder is polishing his resume by daffmeister · · Score: 1

      My answer: buy a good book on management techniques, because *that* is your job. Let the people you manage come up with a database design, because that is *their* job.

      Did you miss the bit about "I personally write the code that runs our applications."?

      He doesn't have any coders in the people that he manages (presumably they do IT support, not development).

    65. Re:Somewhere, a coder is polishing his resume by ZWoz_new · · Score: 1

      My department boss (consists of 2 sections and over 20 people) does sometimes coding. This is not exactly in job description, but sometimes manager needs some nice and interesting stuff to work. Especially if guy comes from trenches.

    66. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      I used to teach a db class for a buncha years, and... I don't practice what I preach. The most successful databases I've seen are designed counter to pretty much any database book you'll encounter.

      In the "real world" (non-book-world) redundancy is denormalization is *good*; anything that lets you avoid joins is great. Consider the choice of getting data from 1 ugly table, vs a join of 5 very clean tables. This becomes even more important with more data---I maintain a database that gets 200million additional records per-day---joins on such tables are infeasible; so gotta ensure everything is do-able via table-scans.

      Look into "data partitioning" (oracle partitions). These are similar to child tables in postgresql. Never worked with SQL Server, but I'm sure they got something similar. If your corp has millions to spend, look into Netezza (it really is amazing what you can do with 800 computers performing every query).

    67. Re:Somewhere, a coder is polishing his resume by Xest · · Score: 1

      Well he said small/medium sized. There's no room for medium in the equation if they only have a couple of IT staff so I'd wager it's either as the GP says, or he's overstating his company's size.

    68. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      He was asking for a book, not your stupid criticism.

      He deserves criticism.

      First of all, he STARTS OUT claiming that he's a so-called "Director of IT". That was not something that should be spouted off if you're too lazy to do a goddamned Google/Amazon.com search for a good db design/theory book. He should've kept that to himself and just asked the fucking question.

      Secondly, this idiot went to Slashdot, for crying out loud. Then goes on to say "Oh, I'm going to be doing database design, an' I'm only thwee years old!" Meaning, someone with no experience is in charge of something that should've been contracted out (databases are the lifeblood of many, many businesses). If the company can't afford a six month contract for something as important as a fucking database, then maybe they should drop this so-called "Director of IT".

      And third, he reminds me that there are plenty of people out there with jobs that they don't deserve, claiming titles that they don't deserve (as opposed to someone who actually IS a 'Director of IT', and even then, may not deserve it).

      If you can't do any simple research for a simple book, how the fuck does any company trust you with DIRECTING anything?

    69. Re:Somewhere, a coder is polishing his resume by Xest · · Score: 1

      I'd say part the reason you got this response was because your mention of small/medium. I'd say 50 staff is firmly in the realm of a small company so I think it's fair to excuse people for thinking you would have the resources to delegate.

      But to answer your question really depends on how well you really want to get to know database design. If you just want working knowledge then any number of good books here have been mentioned, however if you want a solid grounding and understanding then you should probably look into learning relational algebra too. Of course, Wikipedia has reasonable coverage of the topic:

      http://en.wikipedia.org/wiki/Relational_algebra

    70. Re:Somewhere, a coder is polishing his resume by mbourgon · · Score: 1

      One night, while working with my boss on a Lotus Notes upgrade, I asked something about email aliases, and he said "you could even be godofthunder for all I care". So we set up that alias. Had that email address several years, and the autocomplete would pop up my name whenever you typed "god".

      --
      "Sometimes a woman is a kind of religion, she can save your soul & set you free from all your sins" - Bad Examples
    71. Re:Somewhere, a coder is polishing his resume by digitalsushi · · Score: 1

      When I ask questions on slashdot, I know 99% of the answers will not pertain or be useful. It's that beauty of an answer, that soul tuned into the same station, that gets what you're after and leads the way through the darkness.

      --
      slashdot: where everyone yells sarcastic metaphors to themselves to understand the issue
    72. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      That, or the "Director of IT" is the only person in the IT department.

    73. Re:Somewhere, a coder is polishing his resume by ElizabethGreene · · Score: 1

      error.

      Job titles are fatally flawed by inconsistent expectation and application. That said, they ARE used to form opinions about one's work history in the thirty seconds it takes to review a resume.

    74. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications.

      I'm sure I'm not the only code monkey who shudders at the implications of this statement.

      Some of us coders are well-nigh insufferable already, because they think they're Superprogrammer and can leap tall mainframes in a single bounds check. The problem comes when those types find themselves in management -- but won't let go of the programming reins. Now, the IT guy with a new idea doesn't just have to worry about it getting shot down by the hotshot who knows everything -- he has to worry about whether his *career* will get shot down by Mr. Hotshot Coder-Manager.

      There's a great chance that the article poster isn't like that. But I'm worried, because Ask Slashdot isn't who he should be asking... he should be asking the coders he manages how to design and/or restructure the database. The fact that he's asking Slashdot tells me that he's not comfortable letting someone else do the work, possibly because he's Superprogrammer and always knows what's best.

      But in case that's not the situation -- maybe he's in a company that simply grew faster than its staffing could handle -- I'll answer the question. He wants a good book to explain general database design techniques. My answer: buy a good book on management techniques, because *that* is your job. Let the people you manage come up with a database design, because that is *their* job.

      What an insufferable prick you are.

      I'm glad you finally got around to answering the fucking question although your answer is a pile of shit.

      You obviously have no experience of the real world. I would guess that you work in academic. And I use the word "Work" with reservations.

    75. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      If I had the flexibility to call myself whatever I wanted, I'd make damn sure that my business cards all said, "Batman" on them.

      Loser.

      If I had the flexibility to call myself whatever I wanted, I'd make damn sure that my business cards all said, "Capt. James Tiberius Kirk" on them.

    76. Re:Somewhere, a coder is polishing his resume by Anonymous Coward · · Score: 0

      I'm the article poster.

      I write all the code, simply because none of our other IT pros are comfortable enough writing it.

      If there were "coders" under me to ask, please believe I would use them as a resource first.

      I am available for hire. EeVv679@NnCcFf.CcAa - I think you are intelligent enough to be able to pull out the actual email address from the preceding.

    77. Re:Somewhere, a coder is polishing his resume by TomV · · Score: 1

      In my last job, the IT team of two developers and a sysadmin reported to the IT Director. He was quite clearly a Director insofar as he owned 40% of the company and was legally liable for its actions, regardless of the number of people reporting to him. He was a Director from the day he and his two partners set up a limited liability company, even if at the time he was the sole developer.

    78. Re:Somewhere, a coder is polishing his resume by RobertB-DC · · Score: 1

      What an insufferable prick you are.

      I'm glad you finally got around to answering the fucking question although your answer is a pile of shit.

      You obviously have no experience of the real world. I would guess that you work in academic. And I use the word "Work" with reservations.

      I'd have to say, this AC comment pretty well sums up the responses to my post! Which is, itself, now modded down to AC level.

      But my comment -- intended to be "brash and bold" but instead coming out "rash and old" -- does seem to have been the origin of several interesting threads on management. What more can an "insufferable prick" like me hope for?

      I guess, in a way, I'm a victim of too little "experience" -- I've worked in IT for my entire career, since hacking TRS-80s in high school, but I've only worked *at* a handful of companies. That likely gave me too little perspective, especially since I've never worked at a startup, and I've been at my current Big Company employer for almost 15 years. My viewpoints were limited and apocryphal; my comments apparently inaccurate and incendiary. Thanks yet again to the Slashdot community for yet another healthy helping of Clue.

      --
      Stressed? Me? Of course not. Stress is what a rubber band feels before it breaks, silly.
    79. Re:Somewhere, a coder is polishing his resume by RobertB-DC · · Score: 1

      I'm the sad fool who posted the inflammatory, accusatory comment.

      I posted pretty much a full retraction at the bottom of a thread, in response to an AC who called me out in a crude, factually inaccurate, but rather effective way. Short version: I extrapolated big-company experiences down to a smaller organization, and made sweeping, invalid assumptions. But in the process, I started a wide-ranging discussion of startup-company management, and learned a lot... so thanks for your patience!

      --
      Stressed? Me? Of course not. Stress is what a rubber band feels before it breaks, silly.
  3. This is by Anonymous Coward · · Score: 1, Informative

    Don't be afraid of older books.. database theory really hasen't evolved that much.

    For a good general overview you might check out "Database Design for Mere Mortals".

    I'd also recommend you find a few books on specific areas

    You'll probably want a book on normalization (preferably one not written by a normalization fanboy... there are times when de-normalized designs make sense) for sure as this speaks almost directly to the goal you described.

    You'll probably want one on SQL tuning as well.. and one on modeling and documentation / diagramming.

    1. Re:This is by OneC0de · · Score: 1

      I actually had that book in my Amazon cart. I did see the publish date 10+ years ago though.

    2. Re:This is by digitig · · Score: 4, Interesting

      At very least you need an understanding of what normalisation gives you, particularly in terms of ensuring data consistency, before you should consider denormalization. I see all to many database "designers" bad-mouthing normalisation when i suspect they simply can't be bothered to normalise, so they go on not to bother thinking about data consistency either. Yes, there are cases where denormalization is an advantage, but there are a lot more cases where denormalization is laziness that leads to database problems.

      --
      Quidnam Latine loqui modo coepi?
    3. Re:This is by DarthVain · · Score: 1

      I was recently at a design workshop for a very large database. They were looking to denormalize, ALOT. I know went I took CompSci it was all about normalization, however in this case it made sense. (They called it flattening)

      In any case the DB was terribly complex, with many of those normalized tables not really being used anyway. Even with my background I agreed with what they are doing, with the only cravat being to be careful how the output was implemented. That is to say, when a user gets say 10-12 fields to deal with it is manageable, outputting like 30-40 fields to a table is just cumbersome to the user. All the design should be hidden anyway, and the user should only see what they need to see.

      Anyway I just thought it was neat to see a large corporate DB go "backwards" and denormalize. Funny thing is I bet if I was interviewing for a job there a year ago, and designed some tables like that in the interview written component, I would likely get a negative score, as most are educated to normalize, normalize, normalize... :)

    4. Re:This is by Anonymous Coward · · Score: 0

      The ONLY time a denormalized design makes sense is when you have certain performance constraints that are addressed by denormalization. The fact that you can raise the very idea of "normalization fanboys" tells me that you should NOT be giving people advice on database schema design.

  4. Database in Depth by Anonymous Coward · · Score: 5, Informative

    Database in Depth: Relational Theory for Practitioners
    Publisher: O'Reilly Media; 1 edition (May 1, 2005)
    Language: English
    ISBN-10: 0596100124
    ISBN-13: 978-0596100124

    Best DB book i have ever owned/read/seen!

    1. Re:Database in Depth by Anonymous Coward · · Score: 3, Informative

      I agree wholeheartedly that Database In Depth is one of the best DB books in print - but would recommend for this reader instead Date's slightly later book SQL and Relational Theory, which replaces the Tutorial D examples with SQL and goes more in depth into how to use SQL relationally.

    2. Re:Database in Depth by harlows_monkeys · · Score: 2, Informative

      That's been updated and replaced by SQL and Relational Theory: How to Write Accurate SQL Code .

    3. Re:Database in Depth by Anonymous Coward · · Score: 1, Informative

      Here's the link to the book in O'Reilly's catalog. It's 240 pages and priced at $29.95USD for print, $23.99 e-book (PDF). The author is C.J. Date.

  5. associative property of good by Anonymous Coward · · Score: 0

    A book about good designs or a good book about database design? Some meet one criteria but not the other.

  6. Data Model Patterns: Conventions of Thought by Anonymous Coward · · Score: 0

    This is my all time favorite book on database design.

    http://www.amazon.com/Data-Model-Patterns-Conventions-Thought/dp/0932633293

  7. O'Reilly by JWSmythe · · Score: 3, Informative

    O'Reilly books are your friend. The "... in a Nutshell" books are a good place to start, and then proceed into the more advanced books. They have 25 titles related to MySQL and 53 titles related to Microsoft SQL. There are usually a few to browse through at the large chain book stores.

    --
    Serious? Seriousness is well above my pay grade.
    1. Re:O'Reilly by Anonymous Coward · · Score: 0

      Mod this up. O'Reilly are a little less dry than most books on relational databases. I used those books in school and I haven't come across anything I haven't been able to handle with the knowledge I've gained (and referenced!) from those books.

    2. Re:O'Reilly by Ethanol-fueled · · Score: 1

      Compared to the vast tutorials and examples found on the internet, O-Reilly books are relatively useless.

      Buying them is like buying forty-dollar training wheels for the bike you learned to ride years ago.

    3. Re:O'Reilly by i.r.id10t · · Score: 1

      And, your local library may have a Safari subscription available for you, so you can get them *all* online (mine does, aclib will in theory cover anyone in Florida...)

      --
      Don't blame me, I voted for Kodos
    4. Re:O'Reilly by JRHodel · · Score: 1

      Books on MySQL and MS SQL and DB2 and Oracle aren't what he needs. He needs modeling theory to get the table design right first. Then the implementation becomes relevant.

      --
      Think of the Irony!
    5. Re:O'Reilly by Anonymous Coward · · Score: 0

      O'Reilly shoves out books a dozen a day that are barely edited not to mention proofread. I'm very careful before deciding to buy anything from them. Nore on topic: there is a great book on databases by Kemper and Eickler, but I don't know if there is an edition in any language other than German. BTW it's currently the 6th edition so it is many times more polished thananything you get from O'Reilly.

  8. A Director that still codes? by kramulous · · Score: 1, Interesting

    A director that still codes? What a novel concept. Good for you.

    --
    .
    1. Re:A Director that still codes? by obarthelemy · · Score: 1

      is it ? reallllllly ?

      --
      The Cloud - because you don't care if your apps and data are up in the air.
    2. Re:A Director that still codes? by bojangler · · Score: 1

      The "for you" is the important thing there. It may be good for his own practice and to stay fresh, but is good for the company?

    3. Re:A Director that still codes? by phyrexianshaw.ca · · Score: 1

      An IT director should remain comfortable covering any job position under himself, IMHO.

      the day you try hiring a kid for his wonderful fiber terms and the kid stops showing up half way through a big rewire, without experience in the field you have a problem. when deploying a nation wide network covering the country on links with SA's longer than a roll of toilet paper, the IT director better damn well be comfortable working at the low level to troubleshoot and service that network.

      putting a person in charge of IT for a company should NOT be a simple "tell these people what to do" it should be a position with delegation responsibilities. if the director doesn't keep up with the technologies he sells, how is he ever supposed to know how any of it works?

      I make a guess and assume that any IT department you've ever had didn't have an R&D dept? nobody can progress forward if they only think they know how things work.

    4. Re:A Director that still codes? by kramulous · · Score: 1

      My assistant director and director barely know how to turn on a machine.

      Not that they really need to know; Their job is more of people management. Making sure that departments talk to each other (and nicely) and that friendship bonds are formed and not destroyed. Conflict resolution, etc.

      That is why I was surprised.

      --
      .
    5. Re:A Director that still codes? by kramulous · · Score: 1

      I work in an area that is 100% R&D (along side twenty other coders).

      IT departments really do vary in size. Ours is easily over 150 people.

      My boss is still a coder and occasionally puts out a paper. He reports to the director who is a people manager and not an IT expert. And he shouldn't be one. He has 6 managers under him who know their stuff to give the directions. The director makes sure that everybody talks nicely to each other.

      --
      .
    6. Re:A Director that still codes? by OneC0de · · Score: 1

      lol

  9. re: good db design books by Anonymous Coward · · Score: 0

    >"We have some tables that have million of rows, and I'd like to know the best method of designing these tables."

    fantastic. If you ever decide to get into house-building, send me pictures.

  10. Can you be more precise ? by obarthelemy · · Score: 3, Insightful

    I'm a bit unclear about what you want to achieve:
    - easier end-user interface
    - more reliability (backups, journalling, redundancy...)
    - more speed
    - more security
    - more complicated data massaging (multi tables, statistics...)
    - better vizualization (reports, graphs...)

    I'm not sure a single book can cover all that.

    --
    The Cloud - because you don't care if your apps and data are up in the air.
    1. Re:Can you be more precise ? by phyrexianshaw.ca · · Score: 1

      I'd have to agree. it's hard to make a recommendation on what you should look at until we know what it is you want to accomplish?

      if you're unhappy with your database, what about it are you unhappy with?

    2. Re:Can you be more precise ? by Ruke · · Score: 1

      Maybe he can't - I can use databases, but I don't KNOW databases, and to be honest, I probably should. I don't know where the trade-offs lie in design and configuration, or even what I can really accomplish by tweaking them. If I had a million-row table, I'd just be concerned that, while it works right now, it may break due to a lack of foresight on my part, which is never a comfortable place to be in.

    3. Re:Can you be more precise ? by OneC0de · · Score: 1

      I'm looking to make sure our databases are configured for continuous growth. Our larger tables, I'd like to learn how to increase query time. I know how to create a table. I know how to run a query. I want to know, that I'm doing it right. ;)

    4. Re:Can you be more precise ? by OneC0de · · Score: 1

      Exactly! I want to know, that if the business continues to boom for the next five years, my software won't fall apart, because of bad database design.

    5. Re:Can you be more precise ? by JWSmythe · · Score: 1

          You should make friends with some good DB folks. :) I know my early database work was rough, but it improved over time, both through my own mistakes, and learning everything I could from others.

          I mentioned above (which you may not have noticed) to go pick up some O'Reilly books. They're a good reference, and have some very good information in them.

          With practice, you'll see what works, and what doesn't. And some things we just screw up. Slashdot had an error several years ago, where an auto-incrementing number exceeded the size for the column. I believe it was the column for the comment id was too small.

          People sometimes look at me like I'm nuts when I use a bigint for an auto-incrementing column. Will it hurt anything to do it? Not really. Will it matter if the application doesn't get a lot of use? Nope. Will it save my ass if the application becomes really big? Definitely. I worked for a big site for a while, so it wasn't unreasonable for pesky things like comments to end up having millions of records. Sometimes they did. Sometimes they didn't. Sometimes I'd have to fix or tweak stuff down the line. Sometimes it's something as stupid as "what do you mean there's no index on that?" :)

      --
      Serious? Seriousness is well above my pay grade.
    6. Re:Can you be more precise ? by HornWumpus · · Score: 0

      Test the damn thing.

      What's stopping you from hammering your dev server with 50 million bogus records then testing with your standard fake max load test (perhaps scaled to expected growth).

      You do have a dev server and a bunch of standard test sets don't you?

      Database design can be as complicated as you make it.

      As long as you treat the tables as spreadsheets you can only get it so fucked up. KISS.

      Normalization is a fancy word.

      You only need to worry about the first three (if you worry about them at all.)

      I'm assuming you are using the 'spreadsheet model' of database design.

      I'm no expert on mySQL (I'd rather not, been there, done that, in the '80s, when we ran dBase etc. Re-index often, backup. Make sure the backup is good. Restore to the dev server as a routine.)

      Write a program to sift through your data for consistency if you get fancy (joins and stuff). As you find new ways for data to be fucked up add new tests to you data checker (if you can't get the db engine to enforce the rules).

      Consider switching to a better database engine. I know you can make it work (/. runs on it), but you have to be dedicated and expect occasional fucked indexes on live data.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    7. Re:Can you be more precise ? by plover · · Score: 2, Informative

      Exactly! I want to know, that if the business continues to boom for the next five years, my software won't fall apart, because of bad database design.

      In that case you want to always be on the look out for scalability and maintainability topics. Today's million row database might need to be tomorrow's 50 million row database, and you may have to change engines to something more performance oriented.

      Something you need to learn is not simply how to model your data, but how to access it through an abstraction layer (such as views or stored procedures) that will allow you to replace the database engine without rewriting the software calling it.

      This practice can also help you keep you safe as learn and grow. If you always access your data through the use of stored procedures, you effectively hide your database table schema from your application. So if tomorrow you figure out that by extracting Zip Codes to their own table you can save on postage, you can rearrange the data in the tables, yet still call the old stored procedure SP_GET_CUSTOMER_ADDRESS as long as you keep the signature of the stored procedure the same. You'll be able to reap the benefits of postage savings with no application code changes required.

      Other things that aren't always taught include practical data access from within your code. My favorite is seeing something like "select * from MY_TABLE where KEY_VAL=2". This is a trap when it's embedded in your code or your SQL. The asterisk will always return all data columns in schema order. If you try to rearrange the order of columns in your schema (perhaps your modeling method or modeling tool encourages keeping primary key fields in sequential order, and you add a new key field, for example) you will break any code or stored procedures that use the "select *" query. "Select *" is fine for browsing a database by hand, but it doesn't belong in the code as it introduces this hidden dependency.

      You also need to learn how to develop a "versioning" convention for naming your stored procedures, so you can continually update them in a backward compatible manner. I haven't seen that kind of advice in the books I've read, but maybe I'm just not reading the right books.

      You'll also want to understand the differences between your chosen flavor of SQL and some of the big players, such as Oracle and SQL Server. There are a few annoying syntactical differences in the languages that can make porting between different vendors' databases difficult, and you may be able to avoid future update problems by avoiding certain language features.

      To solve some of these problems, consider accessing the data from your application through a mapping library such as iBatis or LINQ. That way you're not writing the application portion of the SQL at all, and differences can often be resolved by updating a value in a configuration file.

      Finally, you need to consider security. Unless the database is never actually used by anyone, it's very easy to write code that is vulnerable to SQL injection attacks.

      --
      John
    8. Re:Can you be more precise ? by itwerx · · Score: 2, Funny

      Here, let's just give him some answers:
      - normalize everything for consistency
      - denormalize everything for performance
      - index only key fields for performance
      - index everything for performance
      - date index everything for logging purposes
      - don't date index anything for performance reasons
      - sanitize your inputs at the db level instead of the client for security and performance
      - sanitize your inputs at the client level instead of the db for security and performance
      - use Postgresql because MySQL sucks
      - use MySQL because Postgresql sucks
      - use [favorite db engine] because [some other engine] sucks

      There, HTH!

    9. Re:Can you be more precise ? by Anonymous Coward · · Score: 0

      You actually write application code that depends on the order of the columns in the result set?

      Thanks for letting me know that I should never, ever hire you.

    10. Re:Can you be more precise ? by shmlco · · Score: 1

      If, as you say, you really have the companies best interests at heart... then forget the book and hire an expert to come in, look things over, and make suggestions. If not do most of the work.

      The "what book should I read" method has no business whatsoever in business. You're practically guaranteed at some point to piss off your boss, or lose your job, or, worse case, kill the company. ("What do you mean, our only backup of the customer database is corrupted???")

      --
      Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
    11. Re:Can you be more precise ? by owlstead · · Score: 1

      - make design choices *and write them down*
      - yea gods, why the hell didn't he index?

    12. Re:Can you be more precise ? by gparent · · Score: 1

      My favorite is seeing something like "select * from MY_TABLE where KEY_VAL=2". This is a trap when it's embedded in your code or your SQL. The asterisk will always return all data columns in schema order. If you try to rearrange the order of columns in your schema (perhaps your modeling method or modeling tool encourages keeping primary key fields in sequential order, and you add a new key field, for example) you will break any code or stored procedures that use the "select *" query.

      What the fuck?

    13. Re:Can you be more precise ? by StuartHankins · · Score: 1

      There are many facets to good vs bad DB design. As the DB grows you make changes to accommodate that growth, because you can't always plan far enough ahead to handle every type of expansion.

      You also have to think about where your DB platform is going. Staying on an older DB platform isn't always a bad thing if you have good reason(s). For instance, we're still using SQL Server 2000. I didn't like 2005's restrictions but 2008 looks better so I plan to test that in the coming months. Staying with SQL Server 2000 meant doing things such as logical partitioning (where you create multiple filegroups, host segments of a larger table group in these filegroups, and combine them with a view). Some of my split tables have 300 million rows and splitting them up made the indexes significantly smaller and table access faster. Combined I've got something like 3 billion records in that one view, and most reports using this data return data in under 3 seconds. That's more of a DBA than developer activity.

      We use MySQL where it makes sense. One of our RHEL hosts a proprietary DB and MySQL to get data imported quickly, because it's so much faster and more reliable than the other DB. Using the right tool for the job is very important.

    14. Re:Can you be more precise ? by plover · · Score: 1

      You actually write application code that depends on the order of the columns in the result set?

      No, I don't actually write application code like that. I do, however, work with some people who write code like that; and then I have to go in and fix it. But it's something that isn't apparent to a beginner, and I considered it something the OP ought to learn, before he starts doing it himself.

      --
      John
    15. Re:Can you be more precise ? by OneC0de · · Score: 1

      This is a great answer. I appreciate the informative reply.

  11. Take a university class by cduffy · · Score: 2, Informative

    I'm not sure I'd trust a book to teach this subject as comprehensively as a good university course on the subject. Frequently, you can sit a class quite inexpensively if you're not going for credit.

    For that matter, isn't MIT or someone allowing free not-for-credit access to their eLearning materials?

    1. Re:Take a university class by Anonymous Coward · · Score: 0

      http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-830-database-systems-fall-2005/index.htm

  12. Good SQL design books: by 8282now · · Score: 5, Informative

    IMHO: Joe Celko's SQL for Smarties (http://www.amazon.com/Joe-Celkos-SQL-Smarties-Programming/dp/0123693799/ref=sr_1_2?ie=UTF8&s=books) has shown itself to be very nice book when the need to go beyond the basics to a little deeper understanding of SQL is needed.

    There are many other books on the subject all the way to source material from Date and Dodd but Celko seems to be well informed and writes fairly well, I think.

    1. Re:Good SQL design books: by 8282now · · Score: 1

      .... Sorry book!

    2. Re:Good SQL design books: by Jason+Earl · · Score: 1

      I was curious to see how far down I would have to read before Celko was mentioned. That's the book I would recommend.

    3. Re:Good SQL design books: by 8282now · · Score: 1

      I've enjoyed his book on trees and hierarchies in sql as well. Nice discussion of topics not often touched on in a lot of introductory db literature.

    4. Re:Good SQL design books: by TrueKonrads · · Score: 1

      I think it should be mandatory reading for any DB designer. One thing I miss not taking from my last job was Celko's books I had ordered.

      --
      Lone Gunmen crew.
    5. Re:Good SQL design books: by Anonymous Coward · · Score: 0

      I'd recommend reading Joe Celko's "Data & Databases" before "SQL for Smarties". I've picked up on both books relatively late, but I must admit - they are an eye opener, beyond the usual materials on the topic, in a sense that his books really teach you how to think, and that in turn allows to accomplish tasks you'd previously think of monumentally difficult.

  13. Newer Only Matters a Little by j_f_chamblee · · Score: 1

    Basic relational database design is about logic and structure. When compared with other areas of computing, I would argue that the the original materials worked out by Codd and Date have not changed nearly as dramatically. There are certainly exceptional sub-areas where there have been major changes (e.g. the introduction of the object model and development of XML and RDF, to name but two prominent examples), but if I were you, I would suggest doing two things:

    1. Do some research into existing relational database platforms (e.g. SQL Server, Oracle, PostGRES), figure out which model will ultimately work best for you, and get a book on that implementation of SQL and RDMS. Every intro to databases book has a chapter on relational database design. That will get you started. You can also skip the platform selection process if you are already stuck with a database.

    2. Read this: Date on Database: Writings 2000-2006 by C. J. Date

    Codd (now deceased) and Date are still the authorities, IMHO, and this latter book will give you a good overview of major conceptual issues in relational database design.

    --
    The first principle is that you must not fool yourself - and you are the easiest person to fool. -Richard Feynman
  14. Best method by Anonymous Coward · · Score: 0

    MS Access has design wizards BUILT IN! Why would you need to ask /.?

  15. Best book on the subject by DeAgua · · Score: 1

    The best book I know of on the subject is SQL Server 2008 Relational Database Design and Implementation by Louis Davidson. It's a complete reference for how to approach database design, with practical exmaples.

  16. What's a book ? by furgle · · Score: 1

    What is this book you speak of? Is it a new development platform? If so it must be new I haven't heard of it before. Is there a online tutorial on how to develop for this "book" technology?

  17. Learn about database normalization by luis_a_espinal · · Score: 5, Insightful

    "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."

    There is more to RDBMS than tables and SQL. Your developers should understand data normalization first and foremost, at least 1NF, 2NF and 3NF.

    http://en.wikipedia.org/wiki/Database_normalization

    http://en.wikipedia.org/wiki/First_normal_form

    http://en.wikipedia.org/wiki/Second_normal_form

    http://en.wikipedia.org/wiki/Third_normal_form

    The examples in the URLs above should suffice for getting a general understanding on how to start with a relational model. As for books, I'd suggest these:

    http://www.amazon.com/Relational-Database-Design-Implementation-Third/dp/0123747309/ref=sr_1_4?ie=UTF8&s=books&qid=1278630155&sr=8-4

    http://www.amazon.com/Information-Modeling-Relational-Databases-Management/dp/0123735688/ref=sr_1_3?ie=UTF8&s=books&qid=1278630306&sr=1-3

    I would also suggest C.J. Date's "Database in Depth: Relational Theory for Practitioners", but I can imagine the local penny arcade l33t-hax0r-wannabe crowd going batshit crazy about studying relational algebra and relational database theory in depth. To each his own. Most problems that arise in poorly designed relational database models arise from not understanding data normalization

    :

  18. All you need to know about DB design... by Anonymous Coward · · Score: 0

    6 easy steps.

    1) normalize 2) normalize 3) normalize 4) denormalize 5) denormalize 6) denormalize

  19. OMG by noz · · Score: 2, Informative

    If you are designing anything bigger than a couple of gigabytes, you are in for some fun (or your users are). ;-)

    To be a good designer, there is no substitute for a thorough understanding of the subject matter. And you are a self-confessed n00b. Get an expert. Or study. Hard.

    Database in Depth: Relational Theory for Practitioners.

    1. Re:OMG by OneC0de · · Score: 1

      One of our databases is 5GB in size, and gaining about 1GB every 2 months. I have gotten a few recommendations for the book you referenced, and I think it's only I'll be getting to "study hard"

  20. Apprentice & dismissing the "normalization fan by tlambert · · Score: 1

    Apprentice & dismissing the "normalization fanboy"

    -

    As the head guy, it would probably be worthwhile for you to hire a skilled database person to sit down with you and pair-program over at least one design for a small project with you; this type of thing is the sort of thing you can pretty easily learn by doing/osmosis. Hiring a guy for a day is pretty cheap, as long as he understands he's there to help you get your sea legs, and that if you get really stuck, there might be a future day or so of work in it for him. In the long run, this will be better than a book.

    -

    When someone talks about normalization, they generally really mean "3rd normal form", i.e. without replication of non-key field data between records, or to put it in Bill Kent's words: "non-key fields in a record must provide a fact about the key, the whole key, and nothing but the key".

    However, when you start talking about denormalization, you are actually probably talking about use of fourth and sometimes fifth normal form instead of third normal form. Unless you are data warehousing, you're not going to see any utility in sixth normal form.

    This is still normalization, so you can't throw out the baby with the bathwater if third normal form doesn't apply to your problem.

    Unless a database design book describes at least first through fifth normal forms, it's not a database book you want to buy. Scan the index of any book you might think you want to buy using Amazon or Google books, and if there isn't a section on 1NF-5NF normalization, then that book is not a candidate for you.

    -- Terry

  21. slashdont. by juuri · · Score: 1

    Make the data type as precise as possible.

    Now, try to make it more precise.

    Indexes are like friends, you can have too many.

    Don't do * querys.

    If user MYSQL do everything in a view.

    --
    --- I do not moderate.
    1. Re:slashdont. by Anonymous Coward · · Score: 0

      and normalize. Normalize. Normalize. ER modeling exists for a reason. Use it. It may be tempting to just stick everything into a single table with various columns stuck on to indicate relationships, inheritance etc, but then you might as well have a spreadsheet....

    2. Re:slashdont. by garaged · · Score: 1

      That is a great point, people dont read small notes on contracts, it's boring, but programmers should read pros and cons of techniques they use, i'm not a good programmer but I'm a practical person and I can easily detect when a new normalization will be very clever and really bad for performance, same problem with OOP overusage, people should be more analytic on the programming field

      --
      I'm positive, don't belive me look at my karma
    3. Re:slashdont. by Kjella · · Score: 1

      What I've found is that normalization and denormalizing triggers are a wonderful combination. Sure I can store ten addresses for you, but for practical purposes one will be the primary address and denormalized into the contacts table. Too bad that triggers are written a little bit differently in every database.

      --
      Live today, because you never know what tomorrow brings
    4. Re:slashdont. by he-sk · · Score: 1

      That depends on the workload.

      I recently had a use case where the data did not change after an initial import. The normalized schema prevented us from building the dedicated indexes we wanted containing constraints on columns in two or more tables.

      Denormalizing the five source tables into one huge materialized join table improved the performance of our system by factor 10-1000 (depending on query) after we had built our indexes. (I should mention that for some of our queries -- those containing unanchored regular expressions -- the performance decreased by factor 2-4. In our case this was sensible, but YMMV.)

      --
      Free Manning, jail Obama.
    5. Re:slashdont. by Joey+Vegetables · · Score: 1

      I rarely see a benefit to normalizing less or more than 3NF. I very often do see benefits to creating views that look like denormalized data, and, on RDBMSs that support it, indexes on those views so as to minimize any performance issues caused by normalization. But in database design, as most other engineering disciplines, there is no Pareto-optimal, "one size fits all" approach. Every application and every situation differs.

  22. Um, dude, this is common at early-stage startups. by Estanislao+Mart�nez · · Score: 1

    It's not uncommon for the chief of IT at a very early stage startup to be very technical and do a significant amount of coding in addition to management. At my company, the first chief of IT was one of the founders, along with two full-time programmers (though an extra two were hired a few months later). He coded less than the full-time coders, but he still wrote some key pieces of the early codebase, plus took care of a bunch of tasks like getting the first automated build system going so that the full-time developers could concentrate on other stuff.

  23. Manga Guide to Databases. by MattBD · · Score: 3, Interesting

    I did an exam on SQL and database design recently and used The Manga Guide to Databases as part of my studies. If you don't want something too rigorous it's very good indeed - I found it a lot better at making stuff sink in than a dry, stuffy book. It gives a reasonably good idea of things like the first, second and third normal forms. Don't be put off by the fact that it looks a bit childish - the storytelling idea really works well. It probably won't work for everyone, but it did work well for me (I passed the exam with flying colours).

    1. Re:Manga Guide to Databases. by xiong.chiamiov · · Score: 1

      Oddly enough, when I flipped through that book at a bookstore, my biggest complaint was that it read left-to-right. American comics and manhwa may be ltr, but manga sure as hell isn't.

  24. MOD PARENT UP by Vellmont · · Score: 1

    I couldn't agree more. Database design isn't something you should learn from a book. You CAN of course, and it might work out, but you'd be much smarter to just take a class.

    Let me put it this way. Programming is really mostly about data structures. Database structure tends to live for DECADES. Screw up the initial design, and you'll be hurting the business for decades to come. This isn't something to be taken lightly. A good DB design can pay off huge returns in the future when you have to add feature X. A bad design can be extremely expensive when you either can't implement whatever the new feature they want is, or to do so would be so difficult and compromise so much of the design and capabilities as to be useless.

    --
    AccountKiller
    1. Re:MOD PARENT UP by Anonymous Coward · · Score: 0

      Or you could learn about database refactoring, and not go through life so fearfully.

    2. Re:MOD PARENT UP by DuckDodgers · · Score: 1

      Knowing how to refactor a large production database and getting permission and the resources you need to pull it off are two different things.

    3. Re:MOD PARENT UP by Vellmont · · Score: 1

      Yes.. and one of the better ways to learn something is through someone that already knows it. Books can help, but having access to a real person in a environment that's geared towards that is helpful. This isn't about fear, it's about humility.

      --
      AccountKiller
  25. Do you know relational algebra? by Cyberax · · Score: 3, Informative

    Do you know relational algebra? If you don't, then I highly recommend:

    Codd, E.F. (1990). The Relational Model for Database Management (Version 2 ed.). Addison Wesley Publishing Company. ISBN 0-201-14192-2.

    It's MUCH better to know the fundamentals of database systems and then try to figure out details than vice-versa.http://ask.slashdot.org/story/10/07/08/2142211/Good-Database-Design-Books?art_pos=1#

    1. Re:Do you know relational algebra? by Anonymous Coward · · Score: 0

      instead of paying 169$ for a book that will not help you, you could take that 169$ and buy 3 books that do. Codd writes a great book and i have it on my shelf, but I have never (usefully)referenced it once since reading it in university in the 90's.

    2. Re:Do you know relational algebra? by Cyberax · · Score: 1

      Codd's book is not really a reference book, it's more like a textbook.

      That's why it's much better to read it in a library.

  26. Normalized vs Denormalized by Anonymous Coward · · Score: 1, Informative

    Depends on what you want to do with your database. You have two broad options:

    Normalized database:
    Application developers prefer this because you'll design your database where every discrete list has its own table. The main benefits are performance and maintainability. For example, if you are tracking a list of marketing promotions and they each have a status of "Started" or "Finished", the statuses "Started" and "Finished" would be in one table and the table holding the promotions would have foreign key relationships to it. Your developers could then, instead of using string matching for "Started", filter on the foreign key of 1 (or whatever the integer key is). There's a big performance boost there. Also, you'll be able to rename and/or add to those statuses without affecting the underlying data.

    De-normalized database (data warehouse):
    If you are talking about 1 million+ rows you're probably going to be interested in doing analytics and reporting. The data warehouse (look for Kimball: The datawarehouse toolkit) is designed for report writers and analysts in mind. For a marketing example, perhaps you have a Promotions "Dimension" where all the attributes about a certain promotion are described (region, name, type, current status, client, etc) and one or more "Fact" tables that describe the metrics you want to measure about Promotions. For example, length of promotion, units sold, etc. This type of database structure makes it easy for people who are not SQL experts to explore and analyze the data. Data warehouses are usually produced out of an ETL (extract, transfer, load) process that copies data for a normalized database (usually because that is what the application is using).

    Hope that helps.

    1. Re:Normalized vs Denormalized by Hecatonchires · · Score: 1

      +1

      Normalised is normally used for applications in use

      De-normalised (flattened) is used for historical (trend) reporting

      --

      Yay me!

  27. Text Book by pgn674 · · Score: 2, Informative

    My university course on databases used the text book A First Course in Database Systems by Jeff Ullman and Jennifer Widom. I rather enjoyed the book, and plan to have it above my desk in case any sort of database design or maintenance project comes up for me. The book's page is here; links to purchase are at the bottom.

  28. forget DB books by stanlyb · · Score: 0, Flamebait

    My experience shows that when you are dealing with very big tables, or very frequent requests, or whatever else extraordinary, then all the "standard" advises are simply NOT WORKING. The only solutions is to see how the other are doing it, or to hire some DB guru, even if it is for 3-6-12 months contract, and let him rearrange and restructure your DB. Just for example, if have very very big tables, the only working solutions that i am aware of is to forget about CONSTRAINS, FOREIGN KEYS, or whatever little else convenient extra that every db book could have advise you. In fact, you should use ONLY PRIMARY KEY. Also, you should use physical partitioning, based on some criteria (like Oracle is doing it), and finally, you should have some temporary tables, containing some useful pre-calculated data.

    1. Re:forget DB books by afidel · · Score: 1

      A few million rows is a small database to a RDBMS like SQL Server, Oracle or Postgres.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    2. Re:forget DB books by TimSSG · · Score: 1

      The size of the table is NOT a great reason to NOT use foreign keys. The large size combined with the need to do fast updates or inserts can sometimes be a good reason to NOT use foreign keys(DRI). Tim S.

  29. Mr. Projection by luis_a_espinal · · Score: 2

    "I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications"

    Translation - I'm a one man IT department

    Bud, start with the truth. A "Director of IT" does not write code. You could have equally said you were CIO, just as truthful.

    That's an stupid, novice assumption. I've seen smaller operations with an IT director having to get down and dirty because of downsizing or lack of resources. Coding is done on top of the functions of IT managements.

    So before you let your projecting ego go about correcting people's titles without knowing the specific circumstances, maybe you can try something more useful, like, oh I dunno, maybe answer the question and suggest a good relational modeling book. Crazy, I know!

    1. Re:Mr. Projection by Anonymous Coward · · Score: 0

      Your manners are excellent and chivalrous. You have inspired a new race of knights. They shall congregate at a large round touchscreen, and chastise the infidels.

    2. Re:Mr. Projection by Anonymous Coward · · Score: 0

      "That's an stupid, novice assumption."

      Is it?

      "I've seen smaller operations with an IT director having to get down and dirty because of downsizing or lack of resources."

      Of course, sure. But do you know what's been downsized there? The title: in that situation he is IT director no more but "IT guy" or "code monkey".

      "Coding is done on top of the functions of IT managements."

      Managing exactly what? You did say he is coding because due to lack of staff there's nothing to manage now. You can't get it both ways.

      " maybe you can try something more useful, like, oh I dunno, maybe answer the question and suggest a good relational modeling book."

      So you ask for someone to do the job for somebody that because of his high title should accumulate enough experience and knowledge to be utterly ashamed not having the answer directly from top of his head or, at the very least, have the acumen to know how to get it fast?

      Being a high rank manager he should know by now at least how to manage people: it's not the best approach tactic to present pompous titles when asking a question which answer he should know offering... well, nothing in exchange.

  30. the wrong model by FranTaylor · · Score: 0

    For many aspects of coding, you are barking up the wrong tree. You should really concentrate your design thinking at the object persistence level instead of the database level. Use Hibernate or something similar to hide the database from your code.

    Then you can take a critical look at your choices of database vendors, and you will be easily able to migrate your code the one whose product best fits your needs. You will be able to run your own benchmarks with your own data and see what will work best for you. You may even find that an object-based database will give you far better performance for the same coding effort.

  31. Would you like to reduce your development time?.. by meburke · · Score: 3, Informative

    ...and improve your quality and maintainability?

    Back in the 70's and early 80's we learned a methodology called, "Data Structured Systems Design" and the fundamental presupposition was that everything could be expressed logically and accurately by describing it as relationships in set theory. I have not seen anything since that surpasses the quality and maintainability of database applications and systems.

    Someone already mentioned Joe Celko's book "SQL for Smarties" and I would recommend you first read his, "Thinking in Sets" before any of his other books.

    I would also suggest some earlier books by Ken Orr and Jean Dominique Warnier. If you learn the Warnier-Orr approach to DESIGNING the system before doing any coding, you will reduce the time necessary for maintaining the system. I have seen hundreds of small IT shops like yours, and much of the time Systems Analysis and Design is neglected and performed "off-the-cuff" by programmers who can't wait to get to the coding. I didn't originally believe Ken Orr's assertion that spending twice as much time designing the system would result in a sharp time reduction for overall project completion, but through experience and observation I became a believer.

    --
    "The mind works quicker than you think!"
  32. Get involved in PASS... by misfit815 · · Score: 1

    ...and other like-minded groups. You're going to learn more from interactions with other DBA's than from any book. I'm a dev at a place that can measure db growth in TB/week, and have learned a tremendous amount just from working with DBA's in our organization.

    --
    Jesus told him, "I am the way, the truth, and the life. No one can come to the Father except through me. - John 14:6 NLT
  33. Look at PPDM for real-world huge designs by Anonymous Coward · · Score: 0

    Take a look at Professional Petroleum Data Management (PPDM). They are a consortium of over 100 companies who created data models used throughout the petroleum industry. Their documentation and standards are top-notch:

    http://www.ppdm.org/standards/model/lite_v1/archive.html
    http://www.ppdm.org/standards/model/lite_v1/documentation/html/index.html

  34. Database Design for Mere Mortals by condition-label-red · · Score: 1

    I found "Database Design for Mere Mortals" (ISBN 0-201-69471-9) to be an good/easy entry point for good database design methodology.

    --
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
    1. Re:Database Design for Mere Mortals by KFW · · Score: 1

      I second that. Not extremely technical, but a good first read about relational databases, normalizing, etc. /K

    2. Re:Database Design for Mere Mortals by dsoltesz · · Score: 1

      I third it. Excellent book for getting started, and interesting to read.

  35. Good Database Design by mosb1000 · · Score: 1

    I work with databases a lot, and while I've read books on design, I don't think it's complex with a relational database since most of the design has already been done for you. The guiding principles I follow are simple:

    1) Don't over-complicate your database. Only store data that you plan on using or you need to store, stay away from adding unnecessary tables or data. Don't try to build a fancy user interface with lots of code unless you expect the database to be used by a layperson, and only build such interfaces with a specific scope in mind. If the user wants to do something more complex, let them come to you. A knowledgeable user should be able to understand and use your database without an interface. If they can't you've probably done something wrong.

    2) Don't abbreviate your field names. A modern relational database can handle spaces and long names. But a modern user still can not guess what your abbreviation meant. Yes, it makes the code a little longer, but you're better off in the end.

    3) Don't use an arbitrary primary key unless you have a good reason to. If you are storing data that is meaningful, it will also be unique, so you may be able to find one or two fields that can serve as a primary key on their own. This makes it easier for people to navigate/maintain/update the database later on because it keeps the number of fields down.

    4) Don't store data in more than one place, that way if you need to update it you only have to change it once.

    5) Lock down your data. Have a good idea about all the possible data and potential field values and don't let people enter data that your database isn't designed to handle. If there's a field with a finite number of possible entries, store those possible values in a separate table and require the field to draw it's value from that table.

    1. Re:Good Database Design by Tablizer · · Score: 1

      Don't abbreviate your field names. A modern relational database can handle spaces and long names. But a modern user still can not guess what your abbreviation meant. Yes, it makes the code a little longer, but you're better off in the end.

      I have to disagree. Long column names result in the column headings in typical table browsers being truncated unless you make them too wide to be useful. And when you work with SQL directly, long names can make the code bloated and hard to read. Many RDBMS come with a description area/attribute that can be used to document the fuller name or description. The column name shouldn't take on the entire burden of describing itself fully.

  36. Denormalization by DragonWriter · · Score: 1

    However, when you start talking about denormalization, you are actually probably talking about use of fourth and sometimes fifth normal form instead of third normal form.

    No, denormalization usually refers to the use of something that isn't 3NF (which rules out 4NF and higher normal forms, all of which are also 3NF), and often non-1NF schemas like star schemas.

    4NF, 5NF, DKNF, 6NF are further normalizations beyond/within 3NF, not denormalizations.

  37. modeling is even more important by FranTaylor · · Score: 0

    In the modern days of cheap disk, big disk caches, and large ram, proper modelling is more important than strict normalization.

    Back when those books were written, disk was expensive and not cached, RAM was very expensive, and machines had terrible I/O bottlenecks.. Normalization is critical under these circumstances for maximum performance.

    Today, these normalization techniques will increase performance but not as much as you might think. Really it is best to concentrate efforts elsewhere, especially for a one-person shop.

    All of that normalization work requires coding changes and it will undoubtedly make the code much less readable and maintainable.

    1. Re:modeling is even more important by luis_a_espinal · · Score: 3, Informative

      In the modern days of cheap disk, big disk caches, and large ram, proper modelling is more important than strict normalization.

      Back when those books were written, disk was expensive and not cached, RAM was very expensive, and machines had terrible I/O bottlenecks.. Normalization is critical under these circumstances for maximum performance.

      Today, these normalization techniques will increase performance but not as much as you might think. Really it is best to concentrate efforts elsewhere, especially for a one-person shop.

      All of that normalization work requires coding changes and it will undoubtedly make the code much less readable and maintainable.

      <facepalm/> Performance? I wasn't even thinking of that as a reason to understand normalization. I'm thinking data integrity at least in the conceptual model.

      The value of normalization is not so much in performance but in considering and planning what a decent data/information model should look like.

      You normalize your *model*, your blueprint, and de-normalize as you see fit with the resources available. The actual tables and tablespaces might not (will not) look 1-to-1 to the model, but you still have a model of information.

      And when you do deviate from your model, you do so consciously; you know exactly where you are deviating from the model; and you know why. Without a model, or worse, with a badly crapped model, you don't know what you have.

      It is good to exploit the hardware capabilities we have now, BUT without at least having a conceptual understanding of normalization, this is almost always a sure way to get into a corner where the only option is to throw more hardware to the problem.

      The distinction here now is that people deploy hardware strategically, but because they have no choice: shit won't run without. Hardware is cheap. Operational costs are not. Understanding normalization is to (relational) data modeling and building what modularity and structure are to OO design (and software building in general.)

      Normalization is not about performance (even if its immediate effects in the past were performance related.) It is about reduction of unnecessary data redundancy that compromises data integrity.

      Not performance. Data Integrity.

      Even with the hardware that we have today, I still have to see a well-designed model that does not in great part enforce the 2nd normal form and most attributes of 1st normal form (in particular about avoiding duplication of rows and maintaining regular columns.)

    2. Re:modeling is even more important by XSpud · · Score: 4, Insightful

      Back when those books were written, disk was expensive and not cached, RAM was very expensive, and machines had terrible I/O bottlenecks. Normalization is critical under these circumstances for maximum performance.

      Normalization has _nothing_ to do with performance. In relational DB design, performance is usually considered only after you have a normalized model at which point you it's common to denormalize for performance and other implementation-specific reasons.

      The parent's first link gives a good description of the purposes of normalization.

      Today, these normalization techniques will increase performance but not as much as you might think. Really it is best to concentrate efforts elsewhere, especially for a one-person shop.

      As the submitter looks to be using RDBMSs, a knowledge of normalization and relational database design should be required I 'd have thought. However, if their systems were designed around ORDBMS (your posts hint that this is your background) the DB design issues would be different, but the summary doesn't suggest this is the case.

    3. Re:modeling is even more important by plover · · Score: 2, Insightful

      The one that I find still surprises people is actually 1NF. 2NF and 3NF are pretty easy to recognize. But think about CUSTOMER(CUST_ID, NAME, STREET_LINE_1, STREET_LINE_2, CITY, STATE, ZIP). Is it really in 1NF? Sure, if you're printing on envelopes. But maybe you need the customer's first name for a personalized letter. Maybe you need the house number and street separated for a GPS application. Or maybe you need the ZIP and ZIP+4 broken out separately for your postage software.

      Any time you have the external application parsing your data fields into component values, you've failed at 1NF. But where do you stop? First and last names? Middle initial? Title? Honorific? Nickname? Pronunciation key? Phonetic spelling? You can go ape over-analyzing the data, and still easily miss something your users encounter the first week you deploy; effectively denormalizing the table simply by adopting a convention such as sticking "MR/MS/MRS" as the rightmost characters of the last name field.

      I don't have an answer, it's just not fair. :-(

      --
      John
    4. Re:modeling is even more important by Splab · · Score: 1

      Other way around mate.

      Denormalization will give you performance, but constrain your ability to model data.

    5. Re:modeling is even more important by mofojones · · Score: 1

      I never had a good understanding of normalization until I had to build reports. Only when you run into brick walls imposed by your data, do you really see the value.

    6. Re:modeling is even more important by luis_a_espinal · · Score: 1

      But think about CUSTOMER(CUST_ID, NAME, STREET_LINE_1, STREET_LINE_2, CITY, STATE, ZIP). Is it really in 1NF? Sure, if you're printing on envelopes. But maybe you need the customer's first name for a personalized letter.

      For your CUSTOMER example, I'd say this. It is 1NF for printing envelopes. It is not for customized personalized letters.

      Maybe you need the house number and street separated for a GPS application.

      Then your example is not 1NF for this requirement. Apples and oranges.

      Or maybe you need the ZIP and ZIP+4 broken out separately for your postage software

      Ditto here. These are four different sets of requirements, each requiring a different relational model AND application software model.

      In other words, it depends on your domain (which is true with anything built with software). What does a "name" means in your business domain, in your requirements? To normalize, you have do define (or at least manage) your requirements first.

      Ultimately, your functional requirements drive how you normalize your conceptual model. Then your operational requirements will drive how you actually implement it on hardware.

      I don't have an answer, it's just not fair. :-(

      That's why they pay us the big bucks :) I can understand your point, though. Over analyzing is also a mistake.

    7. Re:modeling is even more important by XSpud · · Score: 1

      This is a very relevant point. I think the answer is that you can only tell whether your data is normalized after referring to the system requirements, and even then 2 designers will come up with 2 different models.

      For example your design for customer may be fine if you will only envisage selling to individuals in the US, but what if you are dealing with corporations? Do you need to be able to separate out billing, delivery addresses or people? To what extent do you need to model the organizational structure within your customers? Do you need to hold a history of customer information or is it OK to overwrite the address with the current address if someone moves house? What happens if someones name changes e.g. through marriage or obtaining a doctorate degree? And if you need to send out invoices, you'll probably need an immutable version of customer data for legal audit purposes.

      In my experience, the answers to some of these questions will not necessarily be clear initially and typically a client will not be able to specify all these requirements without help. It also requires making judgment calls. Which is where we come in as database designers and IMO makes it a fascinating role.

      Of course we can go too far and come up with a design such as thing (id, thing_type_id, name, value) thing_type (id, name, value) etc, or even store all the business logic in the database. This can be perfectly valid 3NF and satisfy all business requirements, but there might be one or 2 implementation issues ;-)

      I don't have an answer, it's just not fair. :-(

      Yes, it's not fair. But it can very satisfying.

    8. Re:modeling is even more important by DarthVain · · Score: 1

      Agreed. I am aware of a large corporate DB design project that actually plans to denormalize to increase performance, as how the primary searches are done currently is much slower.

  38. Hm. by fyngyrz · · Score: 1

    As far as I'm concerned, if you wear the hat, you're entitled to the position. The entrepreneur who successfully pulls off multiple roles has hugely outperformed a company that requires a unique person in all of them. And s/he probably has a terrible headache, too, even if s/he loves the work, but that's a separate issue.

    --
    I've fallen off your lawn, and I can't get up.
  39. Three practical lessons by Invisible+Now · · Score: 5, Informative

    These three lessons may not all be in any one book, but they can help in the real world:

    1) Learn what SQL Injection is and how to defend against it. It will ruin your day and could severely damage your current employment situation.

    2) Abstract your schema from your front-end applications. Stored procedures are easy to write and can provide security and if well written stop injection attacks. They will let you change your database design without breaking your deployed apps. Just update the internal code in the P. Middleware and objects can do this, too.

    3) Bergstrom's law of sailing says: "You can get away with anything in less than 5 knots of wind." Similarly, any little box or blade with 2 to 4 gs of RAM can easily handle 5 to 10 million row tables. Dedicate the server to MySQL or MS SQL so they can cache and buffer efficiently and they will outperform much bigger boxes trying to run too many schemas and DBs concurrently. Learn to index. Don't be too puritanical about normalization. Returning a customer address should require 6 joins. And remember that moving that moving large recordsets across the LANWAN may take much more time than the server query.

    You probably already know all this... but maybe someone else reading this doesn't.

    --

    "Knowing everything doesn't help..."

    1. Re:Three practical lessons by Invisible+Now · · Score: 1

      "Returning a customer address " SHOULDN'T "require 6 joins."

      My bad!

      --

      "Knowing everything doesn't help..."

  40. Date by Obfuscant · · Score: 1
    An Introduction to Database Systems, C.J. Date.

    He's like the grandfather of relational database systems. Quel truly is the language of the Gods.

  41. The Answer by Anonymous Coward · · Score: 0

    How to build a database?

    1. Hire database guys.

  42. think like an it director by Anonymous Coward · · Score: 0

    hire a dba.

    if you cant then you're not an it director, my friend.

  43. Two books "for Mere Mortals" by croftj · · Score: 1

    Database design for Mere Mortals

    http://www.amazon.com/Database-Design-Mere-Mortals-Hands/dp/0201752840/ref=sr_1_1?ie=UTF8&s=books&qid=1278637201&sr=8-1

    and

    Sql Queries for Mere Mortals

    http://www.amazon.com/SQL-Queries-Mere-Mortals-Hands/dp/0321444434/ref=pd_bxgy_b_text_b

    Bothe are really good books! They take you from start to finish on SQL databases and good design principles

    -joe

    --
    -- Many men would appreciate a woman's mind more if they could fondle it
  44. Some suggestions by Luminescence · · Score: 1
    This all really basic. A few million rows assuming the rows aren't really long is no problem for a home pc to handle. Some hints.

    You have to make sure you aren't doing full table scans on any big table. Indexes are your friend.

    Sql hasn't changed much in say, the last ten years. Newer books aren't going to help more than older ones.

    The less joins the better without taking other things into consideration.

    Duplicating data in tables is a bad idea. Not necessarily for performance reasons, but because every time you change that data you will have to remember to change it in more than one place.

    There are other databases out there other than mssql and mysql that may improve your performance more than what you can change with schemas and sql querys.

    Finally, if it is fast enough just leave it. There is a big difference between queries that get hit once a minute and a thousand times a second.

  45. Joe Celko Books are Good by aunchaki · · Score: 1

    Joe Celko writes fabulous SQL/database books! They are a joy.

  46. The Folks from ErWin by CharlieG · · Score: 2, Informative

    Back in the day when they were their own company they used to recommend

    Designing Quality Databases with IDEF1X Information Models

    I found the book VERY informative

    --
    -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
  47. Check out this book by BigThor00 · · Score: 2, Interesting

    Check out Database Design for Mere Mortals... It's a pretty good book for beginning database design.

  48. The Data Warehouse Toolkit: The Complete Guide to by patrick_leb · · Score: 1

    One book that blew my mind was "The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling" by Ralph Kimball. It's pretty easy to read and offer some very interesting techniques for designing data warehouse schemas.

  49. Database Design for Mere Mortals by triple.eh · · Score: 1

    This is a great book that is platform agnostic: Database Design for Mere Mortals. It goes through each phase of developing a database using an evolving project from conception to final product. It focuses on design and less on SQL and specific database software. Highly recommend!

  50. Just remember - use the right tool for the job by scum-o · · Score: 1

    The best advice that I can offer is:

    * Use the best tool for the job (don't use SQL for everything, key/value DBs are better for *many* tasks)
    * Index smartly (don't index on the whole string if needed, try just the first few chars sometimes)
    * Make sure your indexes fit in memory
    * Other than that, just log long-running queries and optimize those.

    - Steve

  51. Re:Would you like to reduce your development time? by phantomfive · · Score: 1

    What books do you have in mind? I did a search for Ken Orr and Jean Dominique Warnier, and neither of them seemed to have a book that was 'best.'

    --
    Qxe4
  52. Fundamentals of Database Systems by Anonymous Coward · · Score: 0

    Fundamentals of Database Systems by elmasri, navathe. Very detailed book on the theory and design of databases.

  53. One of my favorite books by ffoiii · · Score: 2, Informative

    The Data Modeling Handbook : http://www.amazon.com/Data-Modeling-Handbook-Best-Practice-Approach/dp/0471052906/ref=sr_1_58?s=books&ie=UTF8&qid=1278645029&sr=1-58 It is not new, but relational theory hasn't changed much in the last 20 years either. I have been designing, developing, implementing and fixing relational databases and data warehouses for the last 15 years. The book above was one of the most useful things I read early on in my career. In my opinion, data integrity is one of the most valuable functions that a database can provide, and a high quality data model is the most important first step in ensuring that. Understanding tuples, understanding relationships and understanding how to translate your business model and business requirements into a functional and correct data model is a very valuable process. Skipping this step, or attempting it with a limited understanding of the theory behind it is a major mistake.

  54. Database Modeling and Design: Logical Design by bigtrike · · Score: 2, Informative

    Database Modeling and Design: Logical Design, 4th Edition. Its ISBN is 0126853525. It taught me a lot about how databases work "under the hood". If you want to know the performance implications of a b+ tree index vs. a b-tree, this book will help.

  55. Comment removed by account_deleted · · Score: 2, Interesting

    Comment removed based on user account deletion

  56. Look up keys in the index. by Ukab+the+Great · · Score: 1

    Open a database book's index. Look up "natural key". If the author presents natural keys as a viable alternative to surrogate primary keys, then the author doesn't know what he or she's talking about and you should move on to the next book. Especially if they pull the whole "meaning" schtick.

    On the other hand, if the author gives you great real-world examples as to why you should use surrogate primary keys over natural keys in ever possible situation, then you've got a winner.

  57. Why new? by sootman · · Score: 3, 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/
    http://philip.greenspun.com/panda/
    http://philip.greenspun.com/wtr/

    Lots of the core stuff about RDBMSs goes back decades and even old stuff like this is still very relevant. Try reading this page (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.

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
    1. Re:Why new? by Anonymous Coward · · Score: 0

      Was looking for this as a suggestion. The man's brilliant, funny and has a really pragmatic approach to databases.

      A++++ would recommend again

  58. db4o by PimpDawg · · Score: 0, Interesting

    Skip the database part altogether. Just focus on the domain model. Why do the work twice.

  59. SQL Antipatterns: Avoiding the Pitfalls of Databas by Anonymous Coward · · Score: 0

    http://www.amazon.com/dp/1934356557?tag=intltechventu-20&camp=14573&creative=327641&linkCode=as1&creativeASIN=1934356557&adid=1DHT9ZQAG96YQNE50MNV&

  60. And by mahadiga · · Score: 2, Insightful

    Since you're Director of IT, I'd recommend you to start from http://en.wikipedia.org/wiki/Database_normalization

    --
    I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
  61. I was there once, by JRHodel · · Score: 2, Informative

    the 3rd member of the staff, hired by a friend who was the second member of the staff. Eventually we wound up with nearly 2 dozen people, many better than me or my friend.

    But even when I was Application Development manager, I designed table structures and wrote custom queries to reply to FOIA requests for data.

    I took some graduate school classes after getting my BSCS, so as to have access to a computer while looking for my first job, which tells you something about when this was. The best class was Relational Data Base using "An Introduction to Database Systems" by C. J. Date. ISBN 0-201-14471-9.

    Mr. Date, along with Mr. Codd, invented relational calculus, including normal forms. In later classes at work we were strongly advised to use 3rd normal form, as even mainframes of the day couldn't really support 4th or 5th. That instructor had participated in a project to rebuild a 5th normal form system into 3rd for Westinghouse, whose mainframe choked on the small (low column count) tables
    and huge keys required by 5th normal form.

    The book covers other styles of databases, network and hierarchical, but both are antique now. So I'd skip or at most skim those chapters. They show how Relational DB design grew out of experience with shortcomings of Multics and IMS, early network and hierarchical DBs, respectively.

    Other commentors are correct, which DB software you use isn't terribly important for good table structure design. Learning how to select keys for uniqueness and design tables to be non-redundant are not database-specific solutions.

    Do good backups, and practise restoring from them regularly, it doesn't matter how well-deswigned a DB is if the hardware fails and you can't recover the data.

    --
    Think of the Irony!
    1. Re:I was there once, by grahammm · · Score: 1

      I too learnt databases from Date's excellent book. I believe (though I have not actually seen them) that the later editions have dropped most of the material on 'historic' systems and cover relational databases almost exclusively.

  62. Wow. by Estanislao+Mart�nez · · Score: 2, Informative

    Basically, none of your comment is right.

    1. The point of normalization has never been performance. The point of normalization is logical data integrity--primarily through the prevention of modification anomalies.
    2. If anything, a normalized physical data layout on disk tends to hurt performance for any application that requires joins between the normalized tables.
    3. By the same token, today's more powerful hardware, if anything, allows you to go for a normalized solution where yesterday you couldn't.
    4. Thanks to views, normalization does not in general require code changes. Clients that execute queries against the old schema can be pointed at views that join the new normalized tables. The only cases where code changes are required are when there are clients that perform inserts or updates to a table that, after normalization, corresponds to a set of tables that are not in a a non-one-to-one relationship--which really just serves as a cautionary tale to try and get the schema right in the first place.
  63. Here's a few books that I would strongly recommend by dpranke · · Score: 1

    I've read a lot of database books in my time, and been around some of the biggest rdbms instances on the net. Here's probably my top three:

    1) If you don't know SQL, O'Reilly's _Learning SQL_ is the best intro I've seen. This doesn't sound like what you're looking for, though.

    2) If you know SQL reasonably well, but you want to get much better, I can't recommend O'Reilly's Theory In Practice book _The Art of SQL_ highly enough. I don't have it in front of me to remember precisely why I liked it so much, but it's outstanding. If you're going to get one book, get this one.

    3) To really get the theory of databases, one of CJ Date's books is good. Someone else recommended _Databases in Depth: Relational Theory for Practitioners_, and I recall that looking pretty good when I skimmed it once. I would also recommend _Foundation for Object / Relational Databases: The Third Manifesto_, which I found to be very educational. You need to be careful with Date, though, because he tends to advocate how things "should work", not how databases actually work, and so you may find him advising you to do things that are actually bad ideas on your database of choice, so balance this off against good books for your specific DB

    Also,

    4) If you need to build large data warehouses (doesn't sound like you, yet), then Ralph Kimball's _The Data Warehouse Toolkit_ is all you will need to understand the theory. Unfortunately, effective warehousing is especially tied to your database of choice, so you'll want to hit the product manuals even harder here.

    5) If you need to do OLAP (also not likely), there's only one generic book that's particularly good at all for the concepts, _OLAP Solutions_ by Erik Thomsen, and even that is not that generic. Unfortunately most OLAP and BI stuff is highly vendor-specific.

    Joe Celko's books are also pretty good, in my experience, but I wouldn't buy them before the above.

  64. A book only goes so far so... by FlyingGuy · · Score: 1

    A lot of responses are referencing some good books and you should give them due consideration.

    One post spoke of set theory. Definitely look into that.

    ...

    Now for the real world. DB Theory is great, it is a base of knowledge that needs to be obtained and digested. You should understand 1st norrnal form all the way to 6th normal form and that will take a bit to wrap your head around

    Now that you have accomplished that, it is time to start breaking those rules and get some work done. Databases do one thing and ONE thing only, they store data for later retrieval and analysis, ie: reports. Now you can normalize your brains out and that will end you up with a database that it is close to impossible to write reports against without using the most insane joins that you have never even thought about..

    Start with your most common report and start looking at how the data breaks out. Does it fit in an ultra normalized model or a hybrid model. Understand the differences between OLTP and OLAP ( if you don't know what those acronyms mean, loook them up it's important.

    Database modeling is not an exact science and sadly much of it is inherent in a certain type of mind, some gots it, some don't. It is a lot like a puzzle, you look at it and then you have that "aha!" moment and start re-arranging tables and columns and suddently everything works correctly, which is to say you get your data out with a reasonable amount of effort instead of having to have roll-up tables and so forth and so on.

    Lastly, you as a programmer should know better then anyone else that you can't proof your own work as effectively as someone else can so I suggest you hire in a database guy or gal to look over your shoulder now and then to give you a reality check.

    Best of luck!

    --
    Hey KID! Yeah you, get the fuck off my lawn!
  65. Get a book to help you use the features of each by brandond1976 · · Score: 2, Informative

    Disclaimer: I'm a developer on the SQL Server team at MS. You can get a lot more out of SQL Server and MySQL if you tailor your design to take advantage of the features that each has to offer. Properly tuning your database can help you avoid having to throw more hardware at the problem. I'm not sure what the best books are for MySQL, but for SQL Server be sure to check out the "Inside SQL Server 200?" series (there are editions for 2005 and 2008). If you read and understand those 5 books you will understand the best practices for designing SQL Server databases.

  66. performance tuning by beleriand · · Score: 1
    SQL Server Query Performance Tuning Distilled, by Sajal Dam

    This book doesn't teach you what to put in each table and how to put them together. But, when you have large tables it's very important to have good indexes, and to know how to evaluate that your queries are using them correctly. There is a good explanation of using the Profiler here, as well as a nice tutorial-style approach which explains how to improve your indexes based on the execution plans that the Query Compiler spits out.

  67. I wish I had mod points by Kupfernigk · · Score: 1
    This post is insightful and informative, and explains why reading books about database design is largely a waste of time. I started in the days when a database join was done by running two magnetic tapes in parallel, and I can really only add two lines to your post:
    • Log everything for data recovery reasons
    • Don't log anything so you don't run out of disk space and lose data.

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
  68. Art of SQL by Xaroth · · Score: 1

    This one was reviewed by /. some time back ( http://news.slashdot.org/article.pl?sid=06/06/07/1458232 ), and I've found it to be an invaluable tool for tackling precisely the sort of problems you're describing. It's a book on how to think about SQL, with a lot of good insight into how the DB engine will be doing it (so you can plan accordingly for the shortcomings). After reading this book, I felt much better prepared to tackle schema and query design, including all the big questions that come with large tables and projects such as "Should I denormalize this?" or "Should I add more indexes to this already heavily indexed table?" I found the writing to be quite accessible, and recommend it highly to others.

  69. Database Managment Systems by konmpar · · Score: 1

    i would suggest http://books.google.com/books?id=3MxQAAAAMAAJ&dq=ramakrishnan%20database%20managment&source=gbs_slider_thumb. I have read the second edition volumes A&B, but now i see there is a third edition too. Great book by great authors. cheers

    --
    //LIFE WOULD BE EASIER IF I HAD THE SOURCE CODE!
  70. This by Anonymous Coward · · Score: 0

    http://www.amazon.com/Database-System-Concepts-Abraham-Silberschatz/dp/0073523321/ref=sr_1_2?ie=UTF8&s=books&qid=1278670370&sr=1-2

  71. An Agile Approach by Mad+Hamster · · Score: 1

    "Agile Database Techniques" and "Refactoring Databases" by Scott Ambler (et. al) both discuss how to augment & maintain existing databases without breaking them and how to incorporate lessons learned as you go. This is good if you need to modify or improve what you already have, and also if you have a megalithic up front data model which turns out to be flawed these techniques can help you avoid having to start all over again.

    Link to Ambler's book page: (http://www.ambysoft.com/books/). For the record I have never had dealings with Ambler, I'm merely a dev who found some of his works useful

    You'll probably still need a good relational db fundamentals reference. I found Date's book (mentioned in posts above) useful but your mind may not agree with his style, which is mathematician-like.

    --
    Yandelvayasna grldenwi stravenka
  72. Software Trainers recommendations by mofojones · · Score: 2, Informative

    Get books with lab materials. Element K has some great stuff, and Axzo press has good supporting materials, and publishes previews of their books online. Email either one of these publishers, tell them you are considering using their materials for in-house training. They'll send you an evaluation copy for free. The stuff we use in our classes works because after spacing out to what I say for an hour, the participants then have to build it using supporting activities. Reference books, or even college texts don't typically include that. Grab a lab manual on MS Access and skip all the access-specific stuff. Every training guide starts with the fundamentals of DB structure and normalization.

  73. "Bergstrom's Law"? by Dammital · · Score: 1

    OT, but can you provide a citation for Bergstrom's Law? (I think it's clever, but a casual googling doesn't turn up a source. Is it yours?)

    1. Re:"Bergstrom's Law"? by Invisible+Now · · Score: 1

      I crewed on SF Bay, where it's often very windy, with a guy named Emmanuel. Emmanuel vacationed on the East coast, where winds are often lighter, with his friend Bergstrom. I'm not sure about the spelling of his name, but I thought he deserved credit for his law ( which we used to quote frequently... )

      --

      "Knowing everything doesn't help..."

  74. DB Design and Cubes by omsoft · · Score: 0, Offtopic

    To extend the original question, how do the cubes fit into data modeling and database design? Any comments would be greatly appreciated. Thanks.

  75. Almost no really good books by Maury+Markowitz · · Score: 0

    All big-iron database engines that most people are familiar with were written in an era when 210 MB was a large HD and 2 MB was a lot of RAM. As a result, they make many design decisions that are simply not useful any more -- the very idea of an index makes very little sense if the entire table fits in RAM.

    In spite of five or six doublings of Moore's Law, every DB book I've seen is still written as if it were the 1990s. They'll tell you to normalize your tables, never use insert-time as an index, use multi-part indexes, etc.

    All of it is wrong. Generally speaking, on any normal data problem you can simply insert every single object into a single large table in the order they are created and that will be the most efficient way to get the data back. That's because the DB designers have spent the last 20 years making their DBs work the way most DB programs use them.

    I experiment with every design decision. With modern tools I can built a temp table, populate it with millions of rows, index it, benchmark it and drop it again in a few minutes. When that doesn't tell me what I want to know, I go to the forums.

    Don't be afraid to experiment!

    Maury

    I use forums when I run into particular problems. I

    1. Re:Almost no really good books by butlerm · · Score: 1

      the very idea of an index makes very little sense if the entire table fits in RAM

      You really think it is a good use of your CPU to scan through several GB of data to do a single row lookup?

  76. Sparse data sets by Kupfernigk · · Score: 1
    Indeed, if your data set is growing fast it is quite possible that the issues you need to address are not around database design but around business model design. We have an application which can get installed on shitty VMs (by Microclods who think that installing things on VMs is somehow way cool...even when it would be cheaper and easier not to) and minimising storage is rather important. We do this by rigorous analysis of when we actually need to store data and when we can use a relatively sparse data set and update it. OK this treads on the toes of normalisation, but it is driven by the business logic rather than the relational model.

    To give a small, simple example, consider a sales database. You have customers, you have products, you have invoices, but mainly you have items sold (simplifying.) A relational db designer might, without thinking, use the product object's primary key as a foreign key in the sales item list. That is sparse but omits the consideration that you sell the same product at different prices at different times. So, for speed of reporting, without growing the tables too fast, you would store the invoice number,despatch note number,product object's primary key, the selling price, and the sales tax rate. When you warehouse the data, you add indexes for fast retrieval. But your fastest growing table - items sold - remains very compact because it has only 5 elements, all numeric.

    I hope this isn't just a ramble and is of some use, but I've been in your position - in a fast growing company - and you have my sympathies.

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
    1. Re:Sparse data sets by OneC0de · · Score: 1

      I appreciate the response. You make some very good points, that I have no thought of before. I will take your opinions in consideration, and pass it off to boss man.

  77. Some genereal rules by DoChEx · · Score: 1

    The smaller the data set the more Normalize the database can be structured without a noticeable loss in performance. Large data, (what large is depends on the DB software) lets say 10+ million, then the less normalization the better.

    Come up with a naming convention and stick to it. Include a description of the table/fields use in the data dictionary, helps to keep stuff documented.

    All tables should have a unique primary key.

    Only use a single field as the primary key so table join are fast. Reverse order number PK indexes if the DB supports them.

    Only add indexes based off real SELECT statements and not just for the sake of it.

    Store the data and indexes on different drives, the same with the undo files or archive logs. This will help load balance IO performance.

    Archiving is the key to keeping large data sets manageable.

    Figure out the average size of a record in a table then configure the block storage to hold the most amount of them without creating fragmented records. Meaning a record stored in 2 db blocks is very cost to look up when it should be stored in just one. You also want to minimize the white space in a DB block so it doesn’t waist space.

    Rebuild indexes regularly for tables that change a lot

    Indexes on fields with low cardinality doesn't help much, unless you have bitmap indexes.

    1. Re:Some genereal rules by XSpud · · Score: 1

      Indexes on fields with low cardinality doesn't help much, unless you have bitmap indexes.

      This is a misunderstanding that often seems to be repeated - what is more important is the distribution of values, so for example select * from foo where status = 'UNPROCESSED' will make efficient use of a standard b-tree index on status even where status can only be PROCESSED|UNPROCESSED, _if_ the number of rows returned is small compared to the total number of rows in the table. If the field has low-cardinality and an even distribution of values you are correct.

  78. I'm sure it's been mentioned, but... by AskFirefly · · Score: 1

    "Database Design for Mere Mortals" by Michael Hernandez and "SQL Queries for Mere Mortals" by Hernandez and John Viescas. These are excellently written books that really do a great job of covering the essentials, but are suitable even for non-technical folks. They are extremely approachable, and if you're starting to look at theory, I would highly recommend you put these books near the top of your start list.

    --
    I'm not a human, but I play one on T.V.
  79. Excludes MySQL by Zemplar · · Score: 0, Flamebait

    "Good Database Design Books?"

    So you're certainly not looking for anything about MySQL.

  80. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  81. The best handbook by judoguy · · Score: 2, Informative

    The Handbook of Relational Database Design, ISBN 0-201-11434-8, by Candace C. Fleming and Barbara von Halle is superb. A step by step handbook that tells you what to do and why.

    --
    Peace is easy to achieve, just surrender. Liberty is much harder get/keep.
  82. Data Model Resource Book by minstrelmike · · Score: 1

    If you already understand the essentials of data modeling, then all you need is the Data Model Resource Book by Silverston, Inmon and Graziano.It has the ERD models with explanations for all typical processes found in a company.

    For basics, here is a page: http://moxcey.net/mike/pgm/dbs_design/01_intro.html

  83. Database Management Systems (3rd Edition) by Anonymous Coward · · Score: 0

    I learned dbms from:

    Database Management Systems (Third Edition)
    by Raghu Ramakrishnan and Johannes Gehrke

    The book has a bunch of cows on the cover.

    It definitely has its limitations, and will not teach you advanced topics in DBMS, but based on your post it sounds like this is where you should be starting. It will teach you relational algebra, how to make advanced SQL queries, about the physical properties of a hard disk, and how to organize the tables and use the most efficient sorting and search methods to optimize your database.

    A large portion of the book is also dedicated to teaching you how to program everything you've learned, but for the sake of practicality you might want to ignore these sections.

    Good luck.

    -Keith

  84. All-in-One by Anonymous Coward · · Score: 0

    Database Systems: Design, Implementation and Management 9th Edition by Carlos Coronel

    ISBN: 978-0-538-4698-5

  85. Hire a good Data Archtitect (Contract or Perm). by Ixitar · · Score: 1

    The way that your data is modeled will have a great influence on systems performance, maintainability, growth potential, etc. Find someone who is versed in several database technologies and not just one database system. When your only tool is a hammer, everything begins to look like a nail.

    Find someone who is versed in at least two RDBMSs, at least one XML database (I prefer eXist-db and Marklogic), LDAP, etc. That person has the experience to help you avoid problems and to develop a better solution.

    In the long run, a good Data Architect will save you money!

  86. Is it just me... by DarthVain · · Score: 1

    or how the hell are you Director of IT without any background in DB design.

    Anyone who has taken the first couple years of a Computer Science degree, should have a handful of expensive books on their bookshelf collecting dust.

    Also if your looking for a "New" book, you are interested in particular implementation of modern software. Get My/MS SQL for dummies or something. The basic principles of how to design optimal relational databases hasn't changed all that much in the past decade that I am aware of.

    About the only thing that has changed other than the software with some nice new tools, is scale in that Databases are continually getting larger over time, which may influence how you design things for optimal performance depending on what/how you use your DB for. Modern Databases also allow for more than just text and numbers now, and you can now store things like media and various other constructs, how these are organized may have more a function of the software you are using, and design may impinge upon application design which is something else entirely.

    Also the type of book you need depends on the type of DB you plan on designing as well. My advice is to take some DB courses at your local university or online. If you don't have the prerequisites for those, I would argue you have no business trying to do this work yourself, and to hire a Computer Science Grad. They are a dime a dozen now, and will likely be happy just to have a job in his field when he graduates.

    1. Re:Is it just me... by sco08y · · Score: 1

      or how the hell are you Director of IT without any background in DB design.

      Anyone who has taken the first couple years of a Computer Science degree, should have a handful of expensive books on their bookshelf collecting dust.

      Bullshit. I did, in fact, encounter database design in my coursework, but in a senior year elective. I've since taken an interest in relational theory, and I'm doubtful of the coverage of relational theory in undergraduate coursework.

      Many CS academics view RDBMSs as an afterthought. I think it's because the industry is settled on SQL, and because SQL is pretty ugly as languages go, most academics don't want to get familiar with any relational theory. Unfortunately, most IT folks also skim over relational theory because they don't want to be tarred as being "purists."

      If the OP is interested in that, CJ Date's Introduction to Database Systems is an outstanding book to learn the theory. Much of the book may be overkill, but the first third of it is broadly relevant, especially in clearly explaining basic theory and practice, and dispelling some very persistent myths.

      My advice is to take some DB courses at your local university or online. If you don't have the prerequisites for those, I would argue you have no business trying to do this work yourself, and to hire a Computer Science Grad. They are a dime a dozen now, and will likely be happy just to have a job in his field when he graduates.

      There is so much flatly wrong information about databases that many courses are pretty suspect. Most CS grads don't have much useful experience with databases and are about as useful as any code monkey.

  87. Anti-patterns by cutshade · · Score: 2, Informative

    Lots of good suggestions on how to learn what to do.

    This is a good book to show you common ways you can get yourself in trouble and how to avoid them: http://pragprog.com/titles/bksqla/sql-antipatterns

    J

  88. Wisdom from a 1980 DB Design Course by Anonymous Coward · · Score: 0

    1. If you ask it to retrieve a million records, it will.

    2. After you design a database, toss the whole thing and start over. Repeat until done.

    3. (Borrowed from project management) You can have it fast, cheap, or good. Pick any two.

  89. High Performance MySQL by PowerVegetable · · Score: 1

    Check out High Performance MySQL by Schwartz, Zaitsev, Tkachenko, Zawodny, Lentz and Balling

    http://oreilly.com/catalog/9780596101718

    A couple of the authors are the guys that run http://www.mysqlperformanceblog.com/, which is itself a good resource for MySQL scaling.

  90. I was about to create a DB by Anonymous Coward · · Score: 0

    I was going to compile a searchable DB containing a list of good DB books but I didn't know where to start.

  91. DB - non DBA by visionbeyond · · Score: 1

    I started my illustrious career in the IT world as a system administrator until shifting into programming, which I like much better and has remained my focus for the last 10 years. That's not to say I still don't get sucked into doing the sys admin work and even that of what should be a DBA.

    Being as such, I've had to learn some things through the school of hard knocks, others by trial and error, and more through the vast abundance of resources and printed texts. While you can't go wrong by reading any O'Reilly publication, and I am a devout fan of always reaching for the O'Reilly book on any topic first (and they do have a book on virtually everything technical you could want to know), they still cannot cover everything. Any database is vast in it's complexity and configuration settings to optimize it's performance. Each has advantages over other DB's, like the fact that MySQL has virtually no overhead in LEFT JOIN statements, making it smarter to break tables down into chunks of data used for various purposes and split each into it's own table. Of course each DB also has it's handicaps, using MySQL again as an example, the fact that MyISam tables don't play well with InnoDB tables. MyISam tables are amazing for full text index and searching, but have no foreign key referencing ability like the InnoDB, so your left making a choice of data integrity or searchability.

    I've found that the O'Reilly books are a great start, but for the neurotic programmer always reaching for improvement, I really think the best resource is in reading the full documentation provided by the DB. MySQL has a wealth of information in their on-line documentation, as well as PostgreSQL, including user feedback and comments. You will end up reading 100 pages for that one page that gives you the answer you wanted, and some pages may take you re-reading it 10 times to understand their way of explaining something, but they provide information I haven't seen in any other resource. While they don't have a "design" section, they do give tips throughout the entire content scattered. Like MySQL recommends tables to contain less than 15 columns, or how to define a column with the correct and most efficient data type and size, such as a column for a zip code. Would you use an integer? Valid only for US and wouldn't cover hyphenated additional 4-5 digit entries, but you could - and making it unsigned can reduce the size you need. If using a varchar column, it's no advantage limiting it to 10, as 16 takes up the exact same amount of memory by how MySQL allocates space. It's the little things like that which are handy, but more than a pain to have to read through the docs. Luckily that's where O'Reilly should come first and fills those gaps first, then torcher yourself with the documentation for the little improvements over time. 8-)

    -Davey

  92. An Actual...Book Recommendation by StewartBell · · Score: 1

    Wow, Slashdotters, ask a simple question, get a hundred flames in response. Yes, I know he should have seen it coming, but hopefully he'll be able to locate some decent information in the midst of most of your garbage. Go flame about something actually controversial for Pete's sake.

    Data Modeling and Database Design (amazon.com) by Umanath and Scamell - Excellent resource that covers several levels of data modelling, including conceptual schemas and logical schemas as well as normalization, relational algebra and quality/efficient SQL design.

  93. Re: Good Database Desing Books? by Anonymous Coward · · Score: 0

    If you have a table with lots of entries (millions of rows), then the best thing you can do is to use any tools that will tell you what are the most frequently requested entries, and then reorder the table on that basis, especially if the table is sequentially scanned - no one needs a book to figure this out. I would expect a table that big not to be ordered sequentially, but hashed in some way to lower the scan time.

    I once worked for a local university's administrative computer group that used an IBM Database, and a brand new hired project leader came in and re-ordered one of our most frequently referenced (small) tables into alphabetical order. We informed him that he had unilaterally slowed down our system by at least an order of magnitude - and the table was put back from a restore operation.

  94. Design for what kind of database application? by Anonymous Coward · · Score: 0

    Different types of applications use data (and hence databases) in very different ways. The above posts have done a good job of covering books about design for OLTP type databases and fundamental theories, but there's a whole other world of design when it comes to reporting and data warehousing. For DW type applications, the book you want is The Data Warehouse Toolkit by Kimball. There's a version of this book that is MSSQL specific which you probably want to go with. You'll also find that MSSQL does a pretty awesome job of supporting DW and OLAP. For OLTP, MSSQL is decent, but I'd strongly recomment checking out PostgreSQL if you're looking for a free db.

  95. Elmasri & Navathe by PensivePeter · · Score: 1

    I'm surprised that nobody has mentioned Ramez Elmasri & Shamkant Navathe's "Fundamentals of Database Systems". It is a weighty academic tome but it is thorough and likely to rid you of many bad design habits. I have many gripes with it, but principally - as far as your issues are concerned - that it should have dealt with normalisation at an earlier stage and pulled the whole issue more clearly out from the wider discussion on functional dependencies.

  96. Maybe you should try Oracle Express by garyisabusyguy · · Score: 1

    It is a free (to develop, deploy and distribute) database.

    There are some limitations; "Oracle Database XE can be installed on any size host machine with any number of CPUs (one database per machine), but XE will store up to 4GB of user data, use up to 1GB of memory, and use one CPU on the host machine."
    http://www.oracle.com/technology/products/database/xe/index.html

    IMHO, it is vastly superior to Access, and because I am familiar with pl/sql and DBA actions, it is much simpler to me than either MySQL or PostgresSQL

    If you are really comfortable with Access's data modeling capability, you can also download (and 'evaluate') Oracle Designer, which can generate table create statements and appplications based on data you enter through BPM and ERD diagrams

    --
    Wherever You Go, There You Are
  97. Great post, Invisible Now... apk by Anonymous Coward · · Score: 0

    See subject-line above... says it all!

    APK

  98. Good database design books? by Anonymous Coward · · Score: 0

    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(sic.) at our office, the majority of which rely on MS-SQL and MySQL databases. I am familiar with a number of jargon words which convinced my supervisor to hire me, and have a general understanding of what someone might want me to do. What I'm looking for is a good book, particularly a newer book, to explain generally what I actually need to type into my computer to make it happen. We have some software that is broken, and screaming users, and I'd like to know the best method of disposing of them.

  99. Data side by Wardish · · Score: 1

    Much good advice here but before you go to far you need to understand your data.

    Understand your data.
    How you use it.
    How it changes.
    Why it changes.

    Once you get a handle on the data then do a risk assessment.

    Then you are ready to begin.

    --
    Ward

    . Silence! Be thankful thy species is unpalatable! .
  100. Books on DB Design by softcoder · · Score: 1

    James Martin used to be considered an authority on this stuff back in the days of Big Iron.
    He has written a couple of books on DB design, including relational DB design.
    Having said that, there has been a huge advance in technology, and in the SQL language since his day.
    The principles remain sound, especially for Relational DB's but the implementations may be different.

    There is one other thing to consider. What type of queries will you be making against the million row tables?
    OLTP queries where you expect to get one or two records back, or Decision Management queries where you will get several hundred or thousand rows back that
    will then be summarized in some sort of report/spreadsheet/graph?

    In the first case traditional relational DB design with SQL is probably still OK. In the second case there are new ways to approach this, with the table designs being based on columns
    and not on rows.
    softcoder.

  101. Re:Would you like to reduce your development time? by meburke · · Score: 1

    Unfortunately you might have to read them all in order to get a complete picture. On the positive side, they are all easily read books. Look up books from Ken Orr and Associates; some of the best books were written by others in his company. It may look like the subject matter is systems and program design plus requirements definitions, but it is ALL database driven and data-oriented.

    --
    "The mind works quicker than you think!"