Good Database Design Books? 291
OneC0de writes "I am the Director of IT for a small/medium sized marketing company, where I personally write the code that runs our applications. We use a variety of technology at our office, the majority of which rely on MS-SQL and MySQL databases. I am familiar with tables, SQL queries, and have a general understanding of how the SQL databases work. What I'm looking for is a good book, particularly a newer book, to explain general database design techniques, and maybe explain some relational tables. We have some tables that have million of rows, and I'd like to know the best method of designing these tables."
A Few Suggestions (Score:5, Interesting)
We have some tables that have million of rows, and I'd like to know the best method of designing these tables.
I'm a developer, not a database expert. But it seems that every now and then I have to get my hands dirty with data modeling. "The best method" is probably a really vague concept. If you have serious hardware constraints than the best method changes from an easily maintainable system to something more complex. There's give and take in database design and I guess a million rows is really something that a traditional relational database should be able to handle. So I'd suggest any book that teaches data modeling will suit you here. I happened to learn on Data Modeling Essentials [amazon.com] which was decent but not great. I have heard good things about Len Silverston's growing series that concentrates more on patterns. But really what you're going to want is a book on data modeling or analysis that teaches you the orders of normal form, when to use cross reference tables, etc so you can get a better idea of good modeling standards. At a million rows, you might not find the need to refactor if you read about the new best practices but perhaps you could make a business case to eventually migrate.
Now there are other topics that require entirely separate books because they are such a diverging path from relational databases. It's not common but your database can be based on something other than an object or table [wikipedia.org]. If you consider the internals of Google, perhaps BigTable is the most prolific database implementation out there and while interesting [google.com], it is sort of a very specific proprietary database implementation. You could take this approach to tailor your company's database to be precisely what you need but this would clearly be overkill in your case. You don't talk about any bottlenecks or impending loads that need to be carefully considered so instead of treading down this path, I suggest you first take a course on MySQL or get the de facto book on whatever database you use [amazon.com] and play around with fine tuning on a test system. A lot of DBs out there allow you to tune them through a configuration file so that your particular needs are met more closely. If you're looking for this sort of continuing education just out of curiosity, pick up a book on database design and start to tinker. But it requires a lot of knowledge and effort to start a database technology from scratch and compete with vanilla out of the box technologies like MySQL and PostgreSQL.
From what information you provide in your question, I'd suggest this book to help you understand database designs more via industry proven patterns [amazon.com]. That assumes you have all the basic database design practices covered.
Re: (Score:2)
Re:A Few Suggestions (Score:5, 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.
Re: (Score:2)
And thus begins...the normalization nig
Re: (Score:3, Interesting)
One advantage of Access is that you can export its tables to something else more rational. Unless you were weaned on Codd and Date, then you learn one step at a time. Yes, there are messes. That's what backups are for. Soon people learn what real data processing is, and how to protect data, make it usable, and deal with its maintenance.
The thing about Access that it, plus HyperCard and other junior RDBMS apps is-- they're approachable by civilians. People need that.... as well as training and experience.
Re:A Few Suggestions (Score:4, 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.
Re: (Score:3)
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'.
Re:A Few Suggestions (Score:5, Informative)
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'
Re: (Score:3, 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, e
Re: (Score:2)
Information Modeling and Relational Databases [amazon.ca]
It's not just another database modelling book. It discusses in depth the object-role modelling (ORM) [wikipedia.org] 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.
Re: (Score:3, 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 concur
Re: (Score:2)
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.
Database in Depth (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!
Re: (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.
Re: (Score:3, Informative)
O'Reilly (Score:4, 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 [oreilly.com] and 53 titles related to Microsoft SQL [oreilly.com]. There are usually a few to browse through at the large chain book stores.
Re: (Score:2)
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...)
A Director that still codes? (Score:2, Interesting)
A director that still codes? What a novel concept. Good for you.
Re: (Score:2)
is it ? reallllllly ?
Re: (Score:2)
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.
Re: (Score:2)
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.
Can you be more precise ? (Score:4, 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.
Re: (Score:3, 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 b
Re: (Score:2)
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 s
Re: (Score:3, 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
Take a university class (Score:3, 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?
MOD PARENT UP (Score:2)
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 featu
Re: (Score:2)
Good SQL design books: (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.
Re: (Score:2)
I was curious to see how far down I would have to read before Celko was mentioned. That's the book I would recommend.
Newer Only Matters a Little (Score:2)
1. Do some research into existing relational
Learn about database normalization (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 [wikipedia.org]
http://en.wikipedia.org/wiki/First_normal_form [wikipedia.org]
http://en.wikipedia.org/wiki/Second_normal_form [wikipedia.org]
http://en.wikipedia.org/wiki/Third_normal_form [wikipedia.org]
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 [amazon.com]
http://www.amazon.com/Information-Modeling-Relational-Databases-Management/dp/0123735688/ref=sr_1_3?ie=UTF8&s=books&qid=1278630306&sr=1-3 [amazon.com]
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
:
Re: (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
Re: (Score:3, 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
Re:modeling is even more important (Score:5, 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.
Wow. (Score:2, Informative)
Basically, none of your comment is right.
OMG (Score:3, 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 [amazon.com].
Manga Guide to Databases. (Score:3, Interesting)
Text Book (Score:3, Informative)
Would you like to reduce your development time?.. (Score:4, 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.
Re: (Score:2)
Get involved in PASS... (Score:2)
...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.
Database Design for Mere Mortals (Score:2)
Re: (Score:2)
I second that. Not extremely technical, but a good first read about relational databases, normalizing, etc. /K
Good Database Design (Score:2)
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 suc
Re: (Score:2)
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 desc
Three practical lessons (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.
Date (Score:2)
He's like the grandfather of relational database systems. Quel truly is the language of the Gods.
The Folks from ErWin (Score:3, 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
Check out this book (Score:2, Interesting)
One of my favorite books (Score:2, Informative)
Database Modeling and Design: Logical Design (Score:3, 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.
Look up keys in the index. (Score:2)
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.
Why new? (Score:4, Interesting)
Database fundamentals haven't changed much. I don't know how much you know so far but this guy is pretty smart:
http://philip.greenspun.com/sql/ [greenspun.com]
http://philip.greenspun.com/panda/ [greenspun.com]
http://philip.greenspun.com/wtr/ [greenspun.com]
Lots of the core stuff about RDBMSs goes back decades and even old stuff like this is still very relevant. Try reading this page [greenspun.com] (just a dozen printed pages) and see what you think. He covers a lot of the fundamentals well and his style of writing is pretty entertaining.
And (Score:2, Insightful)
Since you're Director of IT, I'd recommend you to start from http://en.wikipedia.org/wiki/Database_normalization [wikipedia.org]
A book only goes so far so... (Score:2)
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
Re:Somewhere, a coder is polishing his resume (Score:4, Insightful)
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.
Re:Somewhere, a coder is polishing his resume (Score:4, Interesting)
.. either that or he's the only programmer in the company and can thus effectively call himself whatever he wants.
Re: (Score:2)
In those situations one might do well to still call oneself 'code monkey', I know I do.
Re: (Score:2)
Is that one of those "i think its ok when they say it" things?
Re: (Score:2)
Don't ask me, I'm just the code monkey! ;)
Re: (Score:2)
Well, I suppose it's good to see you taking it back.
Re: (Score:2)
Re: (Score:3, 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.
Re:Somewhere, a coder is polishing his resume (Score:5, 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.
Re: (Score:2)
Re: (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.
Re: (Score:2, Insightful)
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 co
Re: (Score:3, Interesting)
I see no evidence that he made up a title. Typically in business, Director has a meaning - that the holder is on the board responsible for running the company. In a small business they will often be one of the shareholders too.
Titles like CIO would indeed be superfluous in a small company, but Director has a specific meaning and its use could be entirely appropriate.
Re: (Score:3, Informative)
Re: (Score:3, 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 [wikipedia.org] describes both types of director.
Re: (Score:2)
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.
Re:Somewhere, a coder is polishing his resume (Score:5, Informative)
slashdont. (Score:2)
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.
Re: (Score:3, Interesting)
Re:Somewhere, a coder is polishing his resume (Score:5, Insightful)
HTH.
Do you know relational algebra? (Score:4, 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#
I was there once, (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 Relati
Re: (Score:3, Informative)
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 h
Re: (Score:2)
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.
Re: (Score:3, 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?
Re:Somewhere, a coder is polishing his resume (Score:5, Insightful)
He was asking for a book, not your stupid criticism.
Re: (Score:2)
Re: (Score:2)
"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.
Re: (Score:3, 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 s
Re: (Score:2)
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.
Re: (Score:2)
Re: (Score:2)
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.
Re:Somewhere, a coder is polishing his resume (Score:5, 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.
Mr. Projection (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!
Re:Somewhere, a coder is polishing his resume (Score:4, 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.
Hm. (Score:2)
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.
Re: (Score:2)
--
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
Re: (Score:2)
Corrected, thanks, non-native speaker (writer ?) here
Apprentice & dismissing the "normalization fan (Score:2)
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
Denormalization (Score:2)
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.
Re:This is (Score:5, Interesting)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
+1
Normalised is normally used for applications in use
De-normalised (flattened) is used for historical (trend) reporting