Click here to Skip to main content
15,902,836 members
Home / Discussions / Design and Architecture
   

Design and Architecture

 
AnswerRe: general advice on starting to work with DB programming ? Pin
cjb11011-Feb-15 6:59
cjb11011-Feb-15 6:59 
GeneralRe: general advice on starting to work with DB programming ? Pin
BillWoodruff14-Feb-15 11:26
professionalBillWoodruff14-Feb-15 11:26 
AnswerRe: general advice on starting to work with DB programming ? Pin
jschell12-Feb-15 11:17
jschell12-Feb-15 11:17 
GeneralRe: general advice on starting to work with DB programming ? Pin
BillWoodruff14-Feb-15 11:27
professionalBillWoodruff14-Feb-15 11:27 
GeneralRe: general advice on starting to work with DB programming ? Pin
jschell20-Feb-15 13:36
jschell20-Feb-15 13:36 
AnswerRe: general advice on starting to work with DB programming ? Pin
manchanx12-Feb-15 13:19
professionalmanchanx12-Feb-15 13:19 
GeneralRe: general advice on starting to work with DB programming ? Pin
BillWoodruff14-Feb-15 11:28
professionalBillWoodruff14-Feb-15 11:28 
AnswerRe: general advice on starting to work with DB programming ? Pin
Jörgen Andersson12-Feb-15 21:43
professionalJörgen Andersson12-Feb-15 21:43 
My first reaction when you say that you primarily want to work with C# and Linq, is that you should take a look at RavenDB[^]. I wouldn't say it's a mature product as it has a fair share of gotchas, but it's made for C# and linq.

But then I read that you want to work with multiple-references/linkages across categories/objects, and then there's no shortcuts to take anymore. You'll need to learn a proper RDBMS (or maybe a graph database as you already investigated). And the vast majority of those use SQL.

As a first read I'd recommend Sanders article[^], it's covering the query language pretty well in a structured manner while still being easy to read. DML, DDL and indexing can wait for later.
As you're coming from the third generation programming world you'll now you probably notice that SQL is a fourth generation language. You need to change your approach to programming and stop telling the program what to do, but rather telling it what you want. You also need to start thinking in sets rather than rows or objects. So you need to brush off your set theory[^] knowledge

As a second step I'd recommend to learn normalization[^]. Since the whole concept of normalization reeks of buzzwords, that makes the whole concept rather hard to grasp for a layman, I'd actually recommend an article that shows how to do it instead[^].

If I should address the discussion you refer to, I should say that one needs to use the right tool for the right job. And when people fail it's not on choosing the tools but rather on defining what the job is.
What a database is good at is to Store, Retrieve, Filter and Aggregate data, and it's normally much better than anything you can think up in the business layer, it's optimized for exactly that. But that's about it. (If I may oversimplify it)
Math's, presentation, formatting and more or less everything else should be done somewhere else.

A common problem with ORM layers is that people tend to do the filtering and aggregation in the business layer, sending huge amounts of data forth and back between the layers. This is not a problem with ORM, it's an architectural problem and people not knowing how to use the tools. Putting the business layer in the database is just as wrong.

The most common example is the N+1 problem. Assume you have a Master Detail grid where the master has 1000 rows. Most ORMs works well when you use lazy loading but if you've done it wrong and load all the Details at once you end up with 1001 queries to the database. If you use lazy loading it fetches the data for the detail when the user clicks on it and the chance that the user will click on all detail views are usually pretty small, but in this case you should use eager loading and create the SQL yourself.
Wrong is evil and must be defeated. - Jeff Ello

GeneralRe: general advice on starting to work with DB programming ? Pin
BillWoodruff14-Feb-15 12:42
professionalBillWoodruff14-Feb-15 12:42 
GeneralRe: general advice on starting to work with DB programming ? Pin
Jörgen Andersson15-Feb-15 10:51
professionalJörgen Andersson15-Feb-15 10:51 
GeneralRe: general advice on starting to work with DB programming ? Pin
BillWoodruff15-Feb-15 22:25
professionalBillWoodruff15-Feb-15 22:25 
QuestionBetter language for complex GUI and input/output devices? Pin
ai_mc9-Feb-15 14:38
ai_mc9-Feb-15 14:38 
AnswerRe: Better language for complex GUI and input/output devices? Pin
Pete O'Hanlon9-Feb-15 19:54
mvePete O'Hanlon9-Feb-15 19:54 
QuestionLookups Table Design Problem Pin
Kevin Marois8-Feb-15 8:29
professionalKevin Marois8-Feb-15 8:29 
QuestionBetter language for email polling, C# or C++? Pin
Member 84569711-Feb-15 12:07
Member 84569711-Feb-15 12:07 
QuestionRe: Better language for email polling, C# or C++? Pin
Richard MacCutchan1-Feb-15 22:30
mveRichard MacCutchan1-Feb-15 22:30 
AnswerRe: Better language for email polling, C# or C++? Pin
Member 84569712-Feb-15 0:03
Member 84569712-Feb-15 0:03 
GeneralRe: Better language for email polling, C# or C++? Pin
Pete O'Hanlon2-Feb-15 0:19
mvePete O'Hanlon2-Feb-15 0:19 
GeneralRe: Better language for email polling, C# or C++? Pin
Richard MacCutchan2-Feb-15 0:31
mveRichard MacCutchan2-Feb-15 0:31 
QuestionHow do I load a UI based on a user specific role Pin
phyxian29-Jan-15 2:13
professionalphyxian29-Jan-15 2:13 
AnswerRe: How do I load a UI based on a user specific role Pin
Eddy Vluggen29-Jan-15 3:15
professionalEddy Vluggen29-Jan-15 3:15 
GeneralRe: How do I load a UI based on a user specific role Pin
phyxian29-Jan-15 14:27
professionalphyxian29-Jan-15 14:27 
GeneralRe: How do I load a UI based on a user specific role Pin
Richard MacCutchan29-Jan-15 23:02
mveRichard MacCutchan29-Jan-15 23:02 
GeneralRe: How do I load a UI based on a user specific role Pin
phyxian30-Jan-15 0:10
professionalphyxian30-Jan-15 0:10 
GeneralRe: How do I load a UI based on a user specific role Pin
Richard MacCutchan30-Jan-15 0:13
mveRichard MacCutchan30-Jan-15 0:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.