Use case of DB design - database

I wondered if there is any site out there with some detailed examples of normalization and DB design in general. Any comments are welcome.

Wikipedia page and this Dev Shed page should give you a good start.
The following blog page has some links to some good articles on general database design.
The first about the "10 Common Database Design Mistakes" has a good outline of some common pitfalls
and problems seen when database design is not thoroughly planned.

Related

Please suggest some resources from which explain silver-light business application in detail

http://msdn.microsoft.com/en-us/library/ee796239%28v=vs.91%29.aspx#Y3078
but, i am hobbyist (small time :) ) i dont understand every thing provided in these tutorials,
please suggest some online links which explain each and everything used in great and simple detail.
please provide some references to good books which also do the same
This book is a good reference for business applications developers with Silverlight

any practices ,samples for ERD?

Q:
I want any web sites or books just for training on ERD and normalization. I want a lot of sample, practices, and case studies with recommended answers, to strengthen my skill in database design and avoid the poor database designs I've made.
Note: I don't need books to explain the concepts, what I need is practices, examples, and case studies with recommended answers.
Thanks in advance.
I would consider Object Role Modelling over ERM using NORMA or some such.
There is small group on linkedin about ORM, as well a short discussion over on dbaspot.
For normalization, I'd start with Wikipedia and then search
Database Design Using Entity-Relationship Diagram by Sikha Bagui and Richard Earp should be a good starting point.
The Database Management System lecture series, published by the Indian Institute of Technology (IIT), is another good resource.
I think the Database Programmer blog is worth reading. It's got some nice stuff on normalization, but I'm sure any tutorial that Google brought back would be sufficient.

How to make a scaling project using CakePHP?

I wanto to know if there is some tutorials, books etc.
that explai how to make a scaling project using CakePHP
Here is a good article on how to speed up cakephp performance. Also take a look at the comments after the article.
http://www.pseudocoder.com/archives/2009/03/17/8-ways-to-speed-up-cakephp-apps/
I would look first at optimisation over scalability. CakePHP is very able to handle large applications and databases. But in answer to your question...
Try Googling "Cakephp scalability"
http://philip.greenspun.com/seia/scaling
http://www.rawseo.com/news/2009/06/25/better-ways-to-improve-php-application-performance/

Are there any good resources/idioms for visually designing business applications?

I think we're all aware of what "your company's line-of-business software" looks like.
(source: glompix.com)
Are there any resources, rules of advice, or general tricks to visually taming applications like this? Our business's domain is pretty complex, as most are, and our customers demand a great amount of flexibility. Tracking a boatload of fields on each object isn't exactly avoidable.
Besides general advice, I'm also interested in usage and tools specific to WinForms. If there are any examples of (visually) well-designed software of this type, that would help as well.
There is a site that I visit every now and then to be reminded of what not to do:
Interface Hall of Shame.
A quick googling turns this up, which goes more into detail of the most common UI mistakes, which boils down to:
Non-Standard GUI Controls
Looking Like a GUI Control Without Being One
Inconsistency
No Perceived Affordance
Tiny Click Targets
No Feedback
Out to Lunch Without a Progress Indicator
Bad Error Messages
Asking for the Same Info Twice
No Default Values
Dumping Users into the App
Not Indicating How Info Will Be Used
System-Centric Features
There are some books that you should read too:
(source: mac.com)
(source: mac.com)
(source: mac.com)
Mainly, try to use the platform standard widgets, guidelines and rules.
I'm a programmer who used to work in a publications department. My advice is: Use a graphic designer; trust their opinions; and know if you are not one.
Here at the office, where we don't have a graphic designer, we have a bi-weekly "interface meeting" with a few developers and a few non-developers to hammer out these sorts of problems and develop design rules we can follow.

Characteristics of a good UI designer

What are the characteristics of a good UI designer? How much does one have to have graphical design abilities these days as opposed to interaction design abilities. I see this of growing importance with the advent of WPF and Silverlight.
I personally consider myself good at interaction design, but would like to strengthen my skills in the graphical design area. Is it even possible to learn these skills or are you born with them? Can anybody recommend any good books or resources that would help?
Thanks,
Craig
Try the Non-designer's design book.
In my experience, interface design is a skill all in itself. Graphic designers are good at making wonderfully beautiful but completely confusing and unusable interfaces.
I have a few tricks I use but they mostly involve stealing design elements from well designed apps and websites.
In my experience, the hallmark of a good UI designer isn't necessarily a snazzy, do-it-all, isn't-that-cool solution, but generally one that's almost invisible because it just works with very little help from the user:
Controls and information are laid out logically, intuitively, and consistently.
The ease of accessing a feature is proportional to its frequency of use.
The user finds it almost impossible not to use the product correctly.
It breaks the "rules" when doing so increases its usability.
It's attractive in a "girl (or guy) next door" sort of way. Pleasant to look at, but not distracting.
I would look at any of the edward tufte books.
Jakob Nielson is a good author also.
Most people can look at user interfaces (like they look at anything graphical) and say "that looks good" or "that doesn't look good". What usually makes a graphics person able to produce good-looking material is a willingness to change and tweak things near-endlessly, and even throw out entire lines of effort, until something that looks good emerges. Most programmers do not have the patience for this kind of thing, so their user interfaces look like they were designed by someone who didn't much care what they looked like.
On a deeper level, the concept of "talent" or "innate ability" is most often used as an excuse not to even try something (e.g. "I'm not musically talented, so I'm not even going to try playing the piano"). If you want to become good at something, you have to practice it a lot - there is no alternative.
In my experience, it's a lot easier to find someone to make pretty pages, than someone who can do really amazing, subtle, non-obvious use cases. Use cases that aren't fundamentally table maintenance input forms.
If you're there already, I'd suggest you might think about finding a gui artist to pair-program with.
On the opposite side, if I find something laid out poorly, boxes that don't line up, awkward usage, poor grammar, I assume that the programmer is just as sloppy in their internal code. I expect more bugs in applications with a poor UI.
It's somewhat dated, but I enjoyed "The Design of Everyday Things". Good UI makes the user feel good without them ever noticing.
It is definitely possible to learn these skills.
What a lot of people get confused with is the difference between Art and Design. In many ways the difference between Art and Design is that Art has no understated functionality. It looks good...because it does. With Design there is usually a reason for something to exist. To be a good designer one must understand what good design is and how to efficiently break the boundaries of logic to create something that works with as little cognitive-load as possible. If a new UI design allows me to perform a task twice as fast as the old one then it is better. If I enjoy the experience of using the new one then it is better.
Of course, there is an artistic side to design, and by using flair and creativity a designer can make better designs.
If you want to become better at designing then there are two things you can do:
Read everything you possibly can about design. Find the best design Blog's and stick them in your RSS feed. Read through everything you possibly can about design.
Design something, then design it again, and again, then stop! Now, design something else...
Learn as much as you can about HCI. There are some great HCI books out there, even past the obvious choices. Read as many books as you can find.
Join a design community and monitor the work people produce. If you get the chance, collaborate with someone better than you and see how they tick.
I don't know enough about Art to say if you can learn how to become an artist. All I do know is that everyone is naturally creative; you just have to learn how to let it out in your work, that means learning how to use your tools effectively. Once you can do that then you can experiment.
I like to think that many of the standing HCI concepts we use today haven't just come from calculated thinking; more an artistic vision come to life.
it's all about the end-user's mental model - the abstract structure they form in their minds that leads them to just 'know' what to try as they explore your UI design. As a UI developer you need to clearly understand and then create that mental model for them - and a lotta times it will have nearly nothing to do with the composition of the underlying software system. So don't be surprised if some UIs are difficult to develop.
Once a user begins to visualize and embrace this mental model, they will start to explore and try things based on logically filling in the missing pieces. Good UI design will reward them with expected results, a bad UI will stymy and confuse and they'll wanna hunt you down.
Great UI means:
All the tools/data you see are actionable
That is, everything on the screen has meaning. If it doesn't have meaning or doesn't affect what you're going to do next, it shouldn't be there.
Understanding and using conventions
This is most of the time. Occasionally a great UI designer invents a new interface model (tags were invented to better handle photo-sharing).
Making everything frictionless
If you want to do something, you want to do it in as few steps as possible.
Making everything clean and understandable to the eye
You can't diminish the need for good UI design to at least be palatable to the eye. If you can't digest something visually in a very short amount of time, it might not be a good example of good UI.
About Face is a nice book too.
Subtlety is always something good to watch out. Harsh gradients and some color combinations are just a pain.
As a resource for designing user interfaces in Windows, I'd say that the Windows Vista User Experience Guidelines offers great tips and examples on designing user interfaces.
It provides both good and bad examples of user interfaces from actual Microsoft products, so I'd say it's actually quite objective and a valuable guide to use as a reference when learning about user interface design.
As it is designed as a guide for Windows Vista applications, it would fit in well with UI design for WPF, but the tips offered are general enough that they can also be applied to user interfaces that aren't Windows-based as well.
I'll add a pointer to a related question: Java User Interface Specification
Joel Spolsky's got a simple, elegant idea in the "Hallway Usability Test," as well as a series of posts on UI design.
I suppose the first book I'd suggest is 'the inmates are running the asylum". It takes a bit to get into, but it turns out to be a great book.
Online...
the w3's got some great ideas about how to design web pages.
The zen of palm coding should be required reading for gui design for pda designers.
This can be debated until the end of time, personally I believe that interaction design and graphical design are two quite separate things.
But both of them van be learnt, at least to a satisfactory level. You'll probably never be4come truly great at it unless you have a "talent" for it.
A book that I myself havn't read but I have heard many people recommend is "Don't make me think" by Steve Krug.
The sites I recommend for UI and design specifically are:
Alert Box, about web design, in particular. Good examples, use cases, and studies there.
Humanized, design principles. Check the blog too, specifically this and it's setup article.
Aza Raskin's Blog. He's part of Humanized (and now Mozilla), and his personal blog is a mine of insightful commentary on interface design.
The interesting thing about these sites is that they don't just give examples of UI "do's and don'ts", but back these examples up with specific metrics and methods that you can actually use to measure how "good" your UI is. Aza's blog is particularly interesting because he goes through his design iteration on several projects he's been part of, and talks about the "whys" for a lot of the UI decisions that were made.
Lots of links here to good guides, but the initial question remains: "What are the characteristics of a good UI designer?"
The ability to view a process, system or practice, and design an interface that makes the greatest improvement to it.
It's not about pretty interfaces, it's about what works best in that exact situation. And my advice for becoming a better user interface designer is to get better at putting yourself in the user position. We could all improve on that.
You can find a lot of designers who are able to draw pretty pictures, but the best have a working knowledge of interface design. Inherent in that is the ability to anticipate how a user will interact with an application without being prejudiced by the knowledge of how that application is supposed to work.
Regarding your second question - in my opinion, the programming model of WPF and Silverlight allows for a clearer separation between designer and coder (i.e. Microsoft Expression Design is for designers, .NET 3.5 is for coders, and Microsoft Epxression Blend is somewhere in the middle). That being said it is always better to have a UI designer who can handle both the design and the code.
And just to throw a book in there that I like - Luke Wroblewski's Web Form Design - you can get a PDF version of the book for under $20 bucks.

Resources