I’ll get to #1 in a second.
#2 How important are the business requirements? They are probably the most important thing to me when doing a database design. If I don’t have the requirements down pat, or I don’t understand the requirements then I can’t put together a proper database design.
#3 What tool do you use to create the design, do you need it to diagram, do you even care about diagrams? I usually don’t care about the diagram to much. I can see that in my head when I’m coming up with it. I usually go directly into T/SQL creating tables after I’ve worked in through in my head. For a very complex database I’ll bust out Visio and use that.
#4 What’s your biggest pain-point about designing? That’s easy, the business giving me a moving target to hit. Sometimes the moving target doesn’t impact the database design, sometimes it does.
#1 What process do you follow?
I take the business requirements are translate them from useless marketing speak into something usable, then go back to the business and see if that’s what the actually want. After doing this three or four times I now have a usable set of requirements that I can work off of. I’ll take these requirements and use then to decide what needs to be stored where, and how it fits into the rest of the environment (we are an application developer so everything goes into our production database, or our shopping cart database).
From there I work with the .NET developers to determine how they will need to see/use the settings which will be saved for our WebUI and the .NET services which run in the background. Then I work with the C++ developers to see how the client which we deploy will need to see the data. From there I’m able to get a good idea of how the data needs to be stored.
Sometimes it is simply easier to store the data as an XML blob because the database doesn’t need to see or use the data, it is simply storing the data so an XML blob then becomes the most flexible way to store the information.
When ever possible I’ll use the natural key of the database table as the primary key. I’m not fond of identity values for the sake of having an identity column on a table. If the column won’t actually be used for anything there is no point in having it there.
Because of the nature of our system we usually end up with LOTs of composite keys in the database as we to many to many relationships between different tables to use as settings.
So that’s why basic process that I use. What do you use?
If you are on Twitter and you follow some of the more popular people on twitter (BrentO, PaulRandal, SQLInsaneo, myself, etc) you’ll probably have noticed a sh*t storm of tweets about a certain blog which was plagiarizing information from lots of places including places like Microsoft’s TechNet and MSDN sites, SearchSQLServer.com, and several blogs.
After the blogger in question (Peter) removed all his SQL content (no idea if it was all plagiarized or just some was and taking it all down was easier) everything settled down a bit.
Before I continue I want to say that I fully respect Todd and his opinions on the subject, even though I don’t agree with them. Anyone willing to sit around and write for other people’s education for little or no money deserves to be respected.
Now as for the DMCA style take down nasty grams (and I like that way better then take down notices for some reason) there are other issues at play than just our giving information away to everyone.
For example, if you dig through Microsoft’s TechNet and MSDN sites there’s plenty in there which says that you can’t republish the information posted without written consent.
As for my articles which were plagiarized, the company which paid for those articles to be written (I’m assuming that it comes as no shock to anyone that people are paid to write articles for websites and magazines) owns the copyright on those articles for as long as they choose to enforce them. Some companies hold a lifetime exclusive on the articles, while others hold a shorter one.
Either the blogger in question or not was aware of the law on plagiarism or not, but he states on his website that he’s a college graduate. Pretty much every college will toss you out for plagiarizing other peoples works, and the students are well aware of it. He should have assumed that in the professional world that plagiarizing was still unacceptable.
Unfortunately for Peter there is a lot of information out there which can be freely read and referenced, but not copied. This blog would be included in that. For those of you reading this on SQLServerPedia.com it took a decent amount of work to get permission to post my blog posts up on the SQLServerPedia.com blog feed. Why did it take so long? Well because I don’t own the copyright to these blog posts. I write on behalf of Tech-Target and they own the copyright to anything and everything which I post on my blog, unless I have posted it somewhere else first (and then they still own the rights to the version on their site).
Would I like to have everyone be able to read what I write? The big reason that I spend so much time writting (especially this last month) is so that people can read it. I have information to share, and hopefully people find the information that I have useful. But a the copyright ownership of information has to be respected for web based articles just like it does for SQL Server Magazine, TechNet Magazine, etc.
These are my thoughts and opinions, on today’s events. Take them for what they are worth, god knows I’m no copyright lawyer. Please feel free to post your own here, on twitter, on Todd’s post (no registration required on his blog, unlike here) or your own blog if you have one.
It being the new year (ok, so I’m a couple of weeks late) it is time to come up with my professional goals for the new year. Continued »
I’ve got a new article up on SearchSQLServer.com where I talk a bit about the new Parallel Data Warehouse edition of SQL Server 2008 R2.
For those of you in bigger shops you can probably ignore this. If you work in a smaller shop where everything in the datacenter has a public IP, this post is for you.
When you build a new Microsoft Cluster Server cluster always be sure to fail over all the drives between all the nodes before installing SQL Server on it and deploying the cluster to production. The first time that you fail over a cluster from one node to another the disks can take a very long time to fail over.
If you don’t test this fail over ahead of time your first production fail over could be quite a bit longer than you expect. Granted I’m only talked 30-60 seconds longer than expected, but your are clustering the SQL Server for the most possible uptime, and 30-60 extra seconds could be a big problem.
Do in other words test, then deploy.
No tech blog post today.
I just want to wish everyone a happy new year.
This question has come up a couple of times on various forums on the Inter-webs so I figured I’d write up something a little more in-depth than I’d be able to do on a forum.
There’s no way to easily flip a standalone SQL Server instance to a clustered instance. However moving a standalone instance into a clustered instance isn’t that tough, but it will require some down time to the clients. Continued »
Windows 2008 introduced us to code mode. It was great, an ultra thin server OS, with little overhead as there’s no UI. It was as awesome improvement to Windows, unless you actually wanted to use any other Microsoft technologies. There’s no .NET support so you couldn’t run .NET services, or ASP.NET websites. You couldn’t install SQL Server, or Exchange. If you wanted classic ASP, or PHP then you were set. Pretty must the only real use for these was as as domain controllers and other infrastructure users.
Windows 2008 R2 core mode is actually useful. Continued »
When I was at the Windows 2008 R2 release there was a ton of new information that was talked about. There are all new management tools for Windows 2008 R2. In fact there is an all new methology within Microsoft when it comes to building the management tools.