# Data Modeling (sorry - sort of long)

**URL:** <https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961>\
**Category:** Rails\
**Created:** [July 30, 2009, 4:04pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961 "2009-07-30T16:04:53Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 4:04pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/1 "2009-07-30T16:04:53Z")

</div>

Hello  
I am not a developer. I have a project that I plan to have developed  
(in RoR) for a web-application to offer as a SaaS, and have spoken  
with several developers, but, until I have confirmed interest in the  
project, I cannot have it written. In the meantime, I am preparing a  
presentation (slideshow and website) about the possible application.

One portion of the project was easy for me to create screenshots for;  
I realize that the final project may not be exactly what I have  
designed, but close enough to not make a difference to my prospective  
users. The next part is more complicated for me, and I would like the  
community’s feedback on which of the following ways of handling the  
task might be the most feasible in order for me to have the output  
that I want/need. As I have not made my final selection yet for a  
developer, it would be inappropriate for me to ask them.

The subject is tracking nuances about contracts. The details tend to  
want to divide themselves into broad categories (such as compensation,  
royalties, advance against royalty, preliminary fee, fixed royalty,  
favored nations, merchandising, cast album, etc etc etc).

Each broad category may have one or more terms associated with it (eg,  
ROYALTY sub-categories would be: pre-recoupment, pre-recoupment with  
amortization, post-recoupment, guarantee). Some of the terms are  
‘stock clauses’ which are used frequently.

In my head, I have several ways of approaching this, all of which  
would lend themselves to different UI. I would like to know if RoR  
lends itself more to one than another - AND WHICH WILL YIELD THE  
EASIEST way for me to have the online or printed report/view that I  
need (see bottom)

1. simple table, along the lines of an entity-attribute-value model.  
I know this is widely discouraged, so I’ll pass on this.

2. Finite  
here, I would have to think of every conceivable term that might  
appear in a contract, and create a field for it. The field value  
could be a picklist/valuelist of the stock clauses, with the user able  
to add one on the fly.

I have dismissed this option, as it would be virtually impossible for  
me to think of every single term that might appear. But, as I write  
this, I am second-guessing myself. Perhaps it FEELS like an unlimited

# of terms, but perhaps they really do fall into a defined list, and I

could do it this way…

3a. what I think of as an exploding star.  
each broad category would have its own ‘table’, with basically 2  
fields (one for sub-category and one for description of terms). I  
envision the interface to have the contract table info at the top of  
the screen, with separate tables underneath which expand/collapse

3b. A hybrid between option 2 and option 3  
Little tables for each category, but each little table has specific  
fields for each possible term type

1. Category and tag  
Here, the UI would be such that the user selects a Broad Category,  
enters a description (perhaps from a picklist), and then assigns  
‘tags’ - and the tags would be, in effect, the sub-categories. I  
think I would have to restrict which users are permitted to ‘create’  
categories or tags, to ensure data integrity and all that jazz.

They all have benefits, but the user interface for them would be quite  
different…

I envision 2 styles of output:

a. 1st column is the entity - the person the contract is with;  
subsequent columns need to be selected by user from the associated  
tables… I think this is pretty easy and straightforward. It’s  
fine, but means we can only view a handful of terms at a time before  
it becomes unwieldy from left-to-right.

b. this is my premier output and a primary selling point of my  
application. This is what I think of as an n-up report, or a textual-  
pivot, or a ‘compare these cameras’ style. In this output, I’d like  
the user to be able to select a finite number of contracts (let’s say  
5), and have the info from the parent table be the columns (ie,  
people’s names), and have the rows be the associated values -  
preferably with each broad category of items being able to open/  
collapse… and/or have the user be able to specify which associated  
values to include/exclude.

These 2 reporting styles are so important to me that I am willing to  
do whatever UI for getting the information into the database is  
necessary, in order to have the desired output, without causing  
extensive pain to my developer or to my bank account.

Advice? Suggestions?  
thank you -  
Marion

---

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 5:43pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/2 "2009-07-30T17:43:52Z")

</div>

@Marnen -

I understand exactly what you are saying, however I do not have the  
luxury of finding a developer, designing the application, and then  
making my presentation.

I cannot afford to do that.  
I have to make an estimated presentation of what I envision it looking  
like.

I am at RoR because any web-application that I like the look of was  
written with RoR.

I figured it was worth a shot to pose the question here.  
I’ll do my screenshots based on my best guess

Marion

---

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 6:13pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/3 "2009-07-30T18:13:07Z")

</div>

On Jul 30, 11:43 am, Marion T [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I am at RoR because any web-application that I like the look of was  
> written with RoR.
> 
> I figured it was worth a shot to pose the question here.  
> I’ll do my screenshots based on my best guess
> 
> Marion

Also, you’re asking _specifically_ UI design questions, which has  
_nothing at all_ to do with the underlying web framework (I’m  
prettttty sure most of the good looking websites you’ve seen aren’t  
backed by Rails (but again that has nothing to do with anything)).  
Sounds like finding a good designer is your top priority right now.

---

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 5:24pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/4 "2009-07-30T17:24:57Z")

</div>

Marion T wrote:

> Hello  
> I am not a developer. I have a project that I plan to have developed  
> (in RoR)

Why have you chosen Rails before finding a developer? Rails is great,  
but in most cases it’s more important to find a good developer, and let  
him or her pick the technology. (Of course, if you have some external  
requirement for using Rails, that’s a different matter.)

[…]

> The next part is more complicated for me, and I would like the  
> community’s feedback on which of the following ways of handling the  
> task might be the most feasible in order for me to have the output  
> that I want/need. As I have not made my final selection yet for a  
> developer, it would be inappropriate for me to ask them.

I believe you’re going about this backwards. Make your final selection  
of developer, and _then_ have this discussion with the developer. This  
is the sort of decision that the developer should be involved in – not  
a bunch of random people on a mailing list. 🙂

## Best,

Marnen Laibow-Koser  
[http://www.marnen.org](http://www.marnen.org)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 6:26pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/5 "2009-07-30T18:26:00Z")

</div>

Marion,

As is usually the case, the form of your question contains the germ of  
your answer. Keep in mind that you are the domain expert, you need to  
be able to converse with others at many levels and need to have a  
clear and consistent story for all.

Focus on:

1. What is the unique hook that makes your application stand out?

This is the part of the work that will make your users smile and  
wonder how they did without you. Your note clearly indicates what you  
see as important:

> These 2 reporting styles are so important to me that I am willing to  
> do whatever UI for getting the information into the database is  
> necessary, in order to have the desired output

Detail your expectations for the “output forms” - you want to be as  
clear as possible about the parts you see as important. Use all media  
forms at your disposal to represent and present your idea.

You don’t want to reduce your vision to avoid:

> extensive pain to my developer or to my bank account.

Remember, you’re working with crayons and napkins here. No limits on  
what is possible - get the idea out for discussion.

1. What are all the various pieces of information you want to  
capture?

This is an exercise that will help you get ready for your developer.  
You are the domain expert here. You can run through source and  
destination forms and extract the items you want to capture.

Don’t worry too much about relationships between items here - just  
make a list. At different times I’ve used little post-its, magnetic  
chips on a white board, sharpie and paper, emacs org mode.

Whatever works for you to identify the items of interest.

1. What are your expectations for the end-user experience in terms of  
both the UI and performance?

Will you support access via hand-held devices? other than html?

How many times can the user say “hourglass hourglass” between request  
and response?

You’ll notice that I haven’t said anything about database design or  
any other implementation detail. These will fall out of your data  
description and end user expectations - they are effects of the  
design, not causes.

Good luck, and have fun

Rick

---

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 6:21pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/6 "2009-07-30T18:21:54Z")

</div>

So, what I’m looking for is a “platform-agnostic web-application  
designer?”

Marion

---

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 6:34pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/7 "2009-07-30T18:34:47Z")

</div>

I agree with Marnen. To add… Your thinking to hard. Sounds like you  
have just enough knowledge to be dangerous. Find a good developer and  
then let him/her do there job. You come up with how the application  
should be interacted with and then let the developer figure out how  
that is going to work…

---

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 6:33pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/8 "2009-07-30T18:33:02Z")

</div>

Rick -

this was really really really helpful.

You’re exactly right - and, in fact, gave me the exact answer I need.

I do NOT need to show the input screens for this section AT ALL!

All I need to show, for my current purposes are:

the complex questions that I know my users will ask the system

the resulting report

the won’t care about the input screens at all!!!

Thank you very very much Rick.  
I’ve taken on a big project and it’s easy to lose sight of where I’m  
going and what I need at the moment.

Marion

---

<div class="post-metadata">

**Author:** ![Marion\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/919ad9/32.png) [@Marion\_T](https://www.ruby-forum.com/u/Marion_T)\
**Post date:** [July 30, 2009, 8:41pm UTC](https://www.ruby-forum.com/t/data-modeling-sorry-sort-of-long/172961/9 "2009-07-30T20:41:05Z")

</div>

Marion T wrote:

> So, what I’m looking for is a “platform-agnostic web-application  
> designer?”
> 
> Marion

Any good Web designer is (or can be) platform-agnostic. UI design and  
implementation are two different things. I often wear both hats on  
freelance projects, but usually in succession – design at least a  
rudimentary UI, then implement it.

In any case, it shouldn’t be hard to find a UI designer who can make  
pretty mockups to impress in your presentation, and which you can then  
hand to your developer.

## Best,

Marnen Laibow-Koser  
[http://www.marnen.org](http://www.marnen.org)  
removed\_email\_address@domain.invalid
