views:

97

answers:

6

I am new to programming (1 year of C#-winforms) and am from a non CS background. I have not worked with databases yet. As an application programmer, how much should I know? and where should I start from?

EDIT: Specific topics, books, tutorials, blogs would be appreciated.

A: 

Start by learning SQL language. Install a database engine and create/query tables. Then, you could learn how to use an ORM, but only once you know how sql language works.

Begginers tutorial

http://www.w3schools.com/SQl/default.asp

Some orms for .net

http://social.msdn.microsoft.com/Forums/en-US/architecturegeneral/thread/84229d82-1065-4c56-bd12-e95f5a545a02

Tom
Starting out SQL may be a bit much, it would seem just working with a db first would be the simpler approach, due to there being so many ORM solutions now.
James Black
@James, I see your point, but i think is debatable.IMO Knowing how an orm works is important, and postponing it for later may translate to "whenever i got time, or never"
Tom
@James (cont): Though i reckon that things like linq or hibernate fill a resume much better than plain sql.
Tom
A: 

If you just want to get some experience with databases you may want to download and install postgres, and try designing a simple database to use that.

If you don't want to learn SQL then you could get a good book on LINQ, or some tutorials, on DLINQ, aka LINQ to SQL and just start to work with your database that way.

Basically, just install a database, come up with a simple project and start working with it. There are several frameworks you can use, but LINQ may be the easiest to start with.

James Black
I would strongly recommend against learning LINQ-to-SQL or any other ORM tool before learning how to write SQL by hand. When something breaks or just doesn't perform well, you need to see *exactly* what SQL statements your application is generating in order to debug it -- if you can't read the code, then you're SOL. Think of it as learning to crawl before you can sprint.
Juliet
Once you have some basic experience with an ORM tool, then, when you encounter problems, you can learn SQL, but SQL can start to get complicated, depending on how complex you want to get. The question was on just starting with databases so my approach would be the simplest to get your feet wet.
James Black
A: 

At the very least, familiarize yourself with relational databases and SQL syntax. Later, learn about stored procedures and advance data manipulation techniques. The internet is full of tutorials and sample code. install (the free) Sql Server 2008 Express for best .Net integration, or MySql if you're Linux-inclined, and start playing. Good luck!

Traveling Tech Guy
+1  A: 

Introduction to Databases course: http://infolab.stanford.edu/~widom/cs145/

and this textbook: Introduction to Database Systems, An (8th Edition)

vehomzzz
+1 Date's book is still the foundation for everything else. Understand relational theory and SQL is a breeze; skip it and it can be a nightmare!
Steven A. Lowe
A: 

Best place you can start is here: http://www.w3schools.com/sql/default.asp

Since you're new to C#, it probably means you'll be doing a lot of work in the future using .NET and SQL Server, so you'll want to download SQL Server Express: http://www.microsoft.com/express/sql/default.aspx

And finally, you should start a pet project to develop your skills. I recommend writing a blog, message board, or version control system from scratch. The idea here is not to produce a commercial product, but to learn the ins and outs of SQL Server, database normalization, and common data modeling problems you'll encounter in the real world.

Good luck!

Juliet
A: 

Start by understanding how databases are structured! Skip SQL for now, just work with the designer of your DB of choice.

  • One-to-many relationships
  • Many-to-many relationships
  • Keys (primary, surrogate, candidate, compound)

Afterwards you can move onto the bible of good database design: Normalization. Learn 1-3rd normalization-form.

Now, you can design a db (yay), and throughout those learning hours I'm sure you've seen some SQL syntax. If you want you can learn SQL here, or you can just sit back and have an ORM do your dirty work (personally, I'm not really good at SQL, I got that "I know what this does"-feeling, which is the bare minimum. I'm doing alright using NHibernate though :) )

cwap