2

Please, if you think this question is too broad, tell me if there's a name for this kind of problem in order to google it.

I've been developing and maintaining a web application for a couple of years and I've come up with scalability problems, specificly on how to save data from a data model.

To simplify, let's suppose the web application is a database of novel writers. Initially the model was very simple and updating information was easy: a form was displayed and the user could enter the author's name and biography and then click on the "Save" button to store the information into the DB.

Now, let's suppose I want to add a "Book List" in the author's page so I can add the books the author has written so far. How is the application supposed to work now? Should I keep a list of books in a Javascript array (for example) and then send everything (name, biography, books) to the server when I clicked on the "Save" button? Or should I just update the book list separately from the author's basic info (i.e. when the user adds/updates/removes a book from the list). In such case, wouldn't the "Save" button be confusing for the user?

EDIT

The Javascript comment above is just an example to explain my case. By "scattered" I mean "spread". Books are actually a piece of information that belongs to an author, but one could even attach more information to an author as the application scales (via add-ons for example). Let's assume books and other future stuff related to an author is not independent of the author entity. As the amount of information grows a single "Save" button can be resource consuming (e.g: biography should not be updated if we just added a book to an author). My problem focuses the way data belonging to an entity must be committed to the server: should all information be saved at a time when the user clicks "Save" or should every piece of information be saved independently (perhaps with independent save buttons)? Think about Microsoft Windows vs Macintosh OS X control panel: whereas in Windows you have a "Accept/Cancel" paradigm, in Mac OS X changes are applied when you change each setting (there's only a "go back" or "close" button).

  • 2
    Implementation details (Javascript) is not the concern of usability. It's about what you implement, not how you implement it. I want to know whether in this example system you mentioned, are books separate entities on their own, or are they merely additional data in the author entity? And what exactly do you mean by "scattered mode"? – ADTC Nov 18 '14 at 18:03
  • 1
    Something to keep in mind is the amount of data you're sending. If this is an application that will be heavily used, then it might be a good idea to only send up what you need to persist changes. This will also help with network traffic for users who don't have a lot of bandwidth to throw around. – Andrew Nov 18 '14 at 18:17
  • 1
    Indeed what ADTC said is important to consider, are the books separate entities or just flat information. On top of that, what would your user expect if there is a co-writer who also exists in the system. Would you confuse your users when books are added and the book doesn't show up at the co-writer's page? – dirk Nov 18 '14 at 21:09
  • Thx for your comments. I've just updated the question. – Claudix Nov 18 '14 at 21:35
3

The problem seems to be related to the (third form of) database normalisation. Each rerasonably disjunct set of data (like information about a book) should/could be editable on its own without the user's need to touch any other set of data (like the author page)

In general you want to decide what information belong together and make it visible to the user that they edit all of them at once or only a single data.

For your example you could have an author with a list of his books (title, release date, ..) and make the book fields editable as well as adding a button to edit this book
the button could open another window with only the book details, these data would then be transferred to the original form and the user still has the option to save or discard the changes.

A setup where you could change and save data inside a form meant to change and save data is confusing.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.