dbTalk Databases Forums  

A newbie paradox: is this a PK-FK (relationship) problem, orprogramming problem?

comp.databases.theory comp.databases.theory


Discuss A newbie paradox: is this a PK-FK (relationship) problem, orprogramming problem? in the comp.databases.theory forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
raylopez99
 
Posts: n/a

Default A newbie paradox: is this a PK-FK (relationship) problem, orprogramming problem? - 12-22-2007 , 12:44 PM






I'm getting the hang of database architecture design I think, along
with easy to code, drag-and-drop Access 2003 forms programming--great
front end.

But I have a question about a form involving three tables--and I'm not
sure if this is a programming question or a database architecture
question, hence the crosspost.

I have three tables to model a stock portfolio (buying and selling by
a single person having numerous accounts): Stock_Accounts (plural),
in a single table (red flag), which belong to a single individual,
then a stock table, Stocks, listing all the stocks owned by the
individual, then a stock transaction table, Stock_transactions,
listing all the buying and selling within the various accounts. FYI
the table "Stock_transactions" is a subform (depends on a parent) of
"Stocks", while Stocks is a subform (depends on a parent) of
"Stock_Accounts", meaning there's a one-to-many relationship from form
to subform.

Everything works fine: everything is in first normal form with
primary and foreign keys, but one nagging problem: in the rare event
that this person owns the same stock in two different accounts, the
way I set up the tables will not allow the person to enter the same
symbol. Quick workaround: require a different symbol, say "IBM2"
with a popup warning box to the user explaining why. Another
workaround (I tried this and it works): is to eliminate the stock
symbol as a primary/foreign key--that's fine, and it works, but now
the problem is that within the same Stock account you can accidentally
enter the same stock symbol twice, which is a data integrity problem.

So a third approach: enforce relational integrity between tables for
stock symbol with keys involving a stock symbol, but break up the
different accounts into seperate tables--Account 1, Account 2, Account
IRA, etc. Thus entering the same stock in Account 2 will be
irrelevant for this stock in Account 1, exactly as we desire. This
might be the best approach.

A fourth approach: somehow, within the tables, enforce that the same
field cannot be entered twice, programmically--is there a way to do
that in Access?

A fifth approach: instead of a clean "one-to-many" relationship have a
"many-to-many" relationship between the tables, so stock symbol
becomes a key but a key that is spread around (via an intermediate
junction table).

As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage, say the person might have an IRA stock account, a
speculative stock account, a conservative stock account, etc, with
different stock brokerage account numbers, and with the accounts all
buying on occasion the same stock (same stock symbol), and that's
fine.

Any thoughts?

RL

Reply With Quote
  #2  
Old   
David Portas
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, or programming problem? - 12-22-2007 , 01:33 PM






"raylopez99" <raylopez99 (AT) yahoo (DOT) com> wrote

Quote:
I'm getting the hang of database architecture design I think, along
with easy to code, drag-and-drop Access 2003 forms programming--great
front end.

But I have a question about a form involving three tables--and I'm not
sure if this is a programming question or a database architecture
question, hence the crosspost.

I have three tables to model a stock portfolio (buying and selling by
a single person having numerous accounts): Stock_Accounts (plural),
in a single table (red flag), which belong to a single individual,
then a stock table, Stocks, listing all the stocks owned by the
individual, then a stock transaction table, Stock_transactions,
listing all the buying and selling within the various accounts. FYI
the table "Stock_transactions" is a subform (depends on a parent) of
"Stocks", while Stocks is a subform (depends on a parent) of
"Stock_Accounts", meaning there's a one-to-many relationship from form
to subform.

Everything works fine: everything is in first normal form with
primary and foreign keys, but one nagging problem: in the rare event
that this person owns the same stock in two different accounts, the
way I set up the tables will not allow the person to enter the same
symbol. Quick workaround: require a different symbol, say "IBM2"
with a popup warning box to the user explaining why. Another
workaround (I tried this and it works): is to eliminate the stock
symbol as a primary/foreign key--that's fine, and it works, but now
the problem is that within the same Stock account you can accidentally
enter the same stock symbol twice, which is a data integrity problem.

So a third approach: enforce relational integrity between tables for
stock symbol with keys involving a stock symbol, but break up the
different accounts into seperate tables--Account 1, Account 2, Account
IRA, etc. Thus entering the same stock in Account 2 will be
irrelevant for this stock in Account 1, exactly as we desire. This
might be the best approach.

A fourth approach: somehow, within the tables, enforce that the same
field cannot be entered twice, programmically--is there a way to do
that in Access?

A fifth approach: instead of a clean "one-to-many" relationship have a
"many-to-many" relationship between the tables, so stock symbol
becomes a key but a key that is spread around (via an intermediate
junction table).

As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage, say the person might have an IRA stock account, a
speculative stock account, a conservative stock account, etc, with
different stock brokerage account numbers, and with the accounts all
buying on occasion the same stock (same stock symbol), and that's
fine.

Any thoughts?

RL

Please do yourself a favour and study a decent book on design theory. People
reading what you wrote probably have little chance of correctly
understanding what you mean and even less chance of guessing the right
solution. If guesswork is more valuable to you than your own ability to
solve the problem then you certainly need more help than you can get in
these newsgroups.

--
David Portas




Reply With Quote
  #3  
Old   
tina
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, or programming problem? - 12-22-2007 , 01:57 PM



Quote:
As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage
that's not clean at all - it's ugly and dirty as can be. it breaks
normalization rules, and is a nightmare to develop and maintain; every time
you add a new stock account, you have to redesign all the objects that
depend on the underlying tables structure - queries, forms, reports, macros,
VBA code. i strongly recommend against it; you rarely can go wrong in
sticking to relational design principles.

basing the following remarks on the concept that a relational design will
support multiple persons as well as multiple everything else, i'd recommend
a minimum of six tables, as

tblPersons
PersonID (pk)
FirstName
MiddleInitial
LastName
<other fields that describe the person only.>

tblStocks
StockSymbol (pk)
StockName
<other fields that identify the stock only.>

tblBrokerages
BrokID (pk)
BrokName

tblAccounts
AcctID (pk)
PersonID (fk)
BrokID (fk)
<other fields that describe a specific account for a specific person.>

tblAccountStocks
AcctStockID (pk)
AcctID (fk)
StockSymbol (fk)

tblTransactions
TransID (pk)
AcctStockID (fk)
<other fields that describe a specific transaction of a specific stock in a
specific account.>

the relational structure is
tblPersons.PersonID 1:n tblAccounts.PersonID
tblBrokerages.BrokID 1:n tblAccounts.BrokID
tblAccounts.AcctID 1:n tblAccountStocks.AcctID
tblStocks.StockSymbol 1:n tblAccountStocks.StockSymbol
tblAccountStocks.AcctStockID 1:n tblTransactions.AcctStockID

tblAccounts is a junction (linking) table between tblPersons and
tblBrokerages.
tblAccountStocks is a junction (linking) table between tblAccounts and
tblStocks.
and tblTransactions is a simple child table of tblAccountStocks.
so you can trace each transaction record back to a specific stock in a
specific account belonging to a specific person.

i don't know a thing about stock markets and trading, so i imagine this is a
simplified structure, but it should work as a solid core from which to build
on. as you can see, sticking to the rules of normalization provides a clean
setup that can allows unlimited expansion of the data without the need to
change the objects that provide and support the user interface.

hth


"raylopez99" <raylopez99 (AT) yahoo (DOT) com> wrote

Quote:
I'm getting the hang of database architecture design I think, along
with easy to code, drag-and-drop Access 2003 forms programming--great
front end.

But I have a question about a form involving three tables--and I'm not
sure if this is a programming question or a database architecture
question, hence the crosspost.

I have three tables to model a stock portfolio (buying and selling by
a single person having numerous accounts): Stock_Accounts (plural),
in a single table (red flag), which belong to a single individual,
then a stock table, Stocks, listing all the stocks owned by the
individual, then a stock transaction table, Stock_transactions,
listing all the buying and selling within the various accounts. FYI
the table "Stock_transactions" is a subform (depends on a parent) of
"Stocks", while Stocks is a subform (depends on a parent) of
"Stock_Accounts", meaning there's a one-to-many relationship from form
to subform.

Everything works fine: everything is in first normal form with
primary and foreign keys, but one nagging problem: in the rare event
that this person owns the same stock in two different accounts, the
way I set up the tables will not allow the person to enter the same
symbol. Quick workaround: require a different symbol, say "IBM2"
with a popup warning box to the user explaining why. Another
workaround (I tried this and it works): is to eliminate the stock
symbol as a primary/foreign key--that's fine, and it works, but now
the problem is that within the same Stock account you can accidentally
enter the same stock symbol twice, which is a data integrity problem.

So a third approach: enforce relational integrity between tables for
stock symbol with keys involving a stock symbol, but break up the
different accounts into seperate tables--Account 1, Account 2, Account
IRA, etc. Thus entering the same stock in Account 2 will be
irrelevant for this stock in Account 1, exactly as we desire. This
might be the best approach.

A fourth approach: somehow, within the tables, enforce that the same
field cannot be entered twice, programmically--is there a way to do
that in Access?

A fifth approach: instead of a clean "one-to-many" relationship have a
"many-to-many" relationship between the tables, so stock symbol
becomes a key but a key that is spread around (via an intermediate
junction table).

As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage, say the person might have an IRA stock account, a
speculative stock account, a conservative stock account, etc, with
different stock brokerage account numbers, and with the accounts all
buying on occasion the same stock (same stock symbol), and that's
fine.

Any thoughts?

RL



Reply With Quote
  #4  
Old   
Bob Badour
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, orprogramming problem? - 12-22-2007 , 02:21 PM



tina wrote:

Quote:
As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage


that's not clean at all - it's ugly and dirty as can be. it breaks
normalization rules, and is a nightmare to develop and maintain; every time
you add a new stock account, you have to redesign all the objects that
depend on the underlying tables structure - queries, forms, reports, macros,
VBA code. i strongly recommend against it; you rarely can go wrong in
sticking to relational design principles.

basing the following remarks on the concept that a relational design will
support multiple persons as well as multiple everything else, i'd recommend
a minimum of six tables, as

tblPersons
PersonID (pk)
FirstName
MiddleInitial
LastName
other fields that describe the person only.

tblStocks
StockSymbol (pk)
StockName
other fields that identify the stock only.

tblBrokerages
BrokID (pk)
BrokName

tblAccounts
AcctID (pk)
PersonID (fk)
BrokID (fk)
other fields that describe a specific account for a specific person.

tblAccountStocks
AcctStockID (pk)
AcctID (fk)
StockSymbol (fk)

tblTransactions
TransID (pk)
AcctStockID (fk)
other fields that describe a specific transaction of a specific stock in a
specific account.

the relational structure is
tblPersons.PersonID 1:n tblAccounts.PersonID
tblBrokerages.BrokID 1:n tblAccounts.BrokID
tblAccounts.AcctID 1:n tblAccountStocks.AcctID
tblStocks.StockSymbol 1:n tblAccountStocks.StockSymbol
tblAccountStocks.AcctStockID 1:n tblTransactions.AcctStockID

tblAccounts is a junction (linking) table between tblPersons and
tblBrokerages.
tblAccountStocks is a junction (linking) table between tblAccounts and
tblStocks.
and tblTransactions is a simple child table of tblAccountStocks.
so you can trace each transaction record back to a specific stock in a
specific account belonging to a specific person.

i don't know a thing about stock markets and trading, so i imagine this is a
simplified structure,
You also don't know a damned thing about his requirements. I find it
absurd to offer a detailed design on the basis of complete ignorance.


but it should work as a solid core from which to build
Quote:
on. as you can see, sticking to the rules of normalization provides a clean
setup that can allows unlimited expansion of the data without the need to
change the objects that provide and support the user interface.

hth
If only hope were enough...


Quote:
"raylopez99" <raylopez99 (AT) yahoo (DOT) com> wrote in message
news:46fd0574-d042-4890-9c99-71e11f4f6c89 (AT) d21g2000prf (DOT) googlegroups.com...

I'm getting the hang of database architecture design I think, along
with easy to code, drag-and-drop Access 2003 forms programming--great
front end.

But I have a question about a form involving three tables--and I'm not
sure if this is a programming question or a database architecture
question, hence the crosspost.

I have three tables to model a stock portfolio (buying and selling by
a single person having numerous accounts): Stock_Accounts (plural),
in a single table (red flag), which belong to a single individual,
then a stock table, Stocks, listing all the stocks owned by the
individual, then a stock transaction table, Stock_transactions,
listing all the buying and selling within the various accounts. FYI
the table "Stock_transactions" is a subform (depends on a parent) of
"Stocks", while Stocks is a subform (depends on a parent) of
"Stock_Accounts", meaning there's a one-to-many relationship from form
to subform.

Everything works fine: everything is in first normal form with
primary and foreign keys, but one nagging problem: in the rare event
that this person owns the same stock in two different accounts, the
way I set up the tables will not allow the person to enter the same
symbol. Quick workaround: require a different symbol, say "IBM2"
with a popup warning box to the user explaining why. Another
workaround (I tried this and it works): is to eliminate the stock
symbol as a primary/foreign key--that's fine, and it works, but now
the problem is that within the same Stock account you can accidentally
enter the same stock symbol twice, which is a data integrity problem.

So a third approach: enforce relational integrity between tables for
stock symbol with keys involving a stock symbol, but break up the
different accounts into seperate tables--Account 1, Account 2, Account
IRA, etc. Thus entering the same stock in Account 2 will be
irrelevant for this stock in Account 1, exactly as we desire. This
might be the best approach.

A fourth approach: somehow, within the tables, enforce that the same
field cannot be entered twice, programmically--is there a way to do
that in Access?

A fifth approach: instead of a clean "one-to-many" relationship have a
"many-to-many" relationship between the tables, so stock symbol
becomes a key but a key that is spread around (via an intermediate
junction table).

As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage, say the person might have an IRA stock account, a
speculative stock account, a conservative stock account, etc, with
different stock brokerage account numbers, and with the accounts all
buying on occasion the same stock (same stock symbol), and that's
fine.

Any thoughts?

RL




Reply With Quote
  #5  
Old   
Douglas J. Steele
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, or programming problem? - 12-22-2007 , 02:51 PM



I don't see you making any suggestions. Surely you don't think that one
table per brokerage could ever be an appropriate answer!

--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no private e-mails, please)


"Bob Badour" <bbadour (AT) pei (DOT) sympatico.ca> wrote

Quote:
You also don't know a damned thing about his requirements. I find it
absurd to offer a detailed design on the basis of complete ignorance.


As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage, say the person might have an IRA stock account, a
speculative stock account, a conservative stock account, etc, with
different stock brokerage account numbers, and with the accounts all
buying on occasion the same stock (same stock symbol), and that's
fine.

Any thoughts?

RL




Reply With Quote
  #6  
Old   
tina
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, or programming problem? - 12-22-2007 , 03:38 PM



i had to chuckle at this one, Doug. when i first opened your post, i thought
you were responding to my post, and i couldn't figure out what you were
talking about! then i scrolled down, and found that you were replying to
another post that i had not seen, having blocked that particular user some
time ago.
ps. i haven't been in the ngs for quite awhile; nice to "see" you, and i
hope you have a safe and happy holiday!


"Douglas J. Steele" <NOSPAM_djsteele (AT) NOSPAM_canada (DOT) com> wrote

Quote:
I don't see you making any suggestions. Surely you don't think that one
table per brokerage could ever be an appropriate answer!

--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no private e-mails, please)


"Bob Badour" <bbadour (AT) pei (DOT) sympatico.ca> wrote in message
news:476d71c2$0$5279$9a566e8b (AT) news (DOT) aliant.net...

You also don't know a damned thing about his requirements. I find it
absurd to offer a detailed design on the basis of complete ignorance.


As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage, say the person might have an IRA stock account, a
speculative stock account, a conservative stock account, etc, with
different stock brokerage account numbers, and with the accounts all
buying on occasion the same stock (same stock symbol), and that's
fine.

Any thoughts?

RL






Reply With Quote
  #7  
Old   
Bob Badour
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, orprogramming problem? - 12-22-2007 , 04:37 PM



Douglas J. Steele wrote:

Quote:
I don't see you making any suggestions. Surely you don't think that one
table per brokerage could ever be an appropriate answer!
Douglas,

David Portas already covered everything quite well, and I didn't have
much to add to his post.

Ray,

I suggest you learn to identify those people who Fabian Pascal has
dubbed the Vociferous Ignorami. Some of them have obligingly
self-identified by declaring themselves "Most Vociferous People" (MVP).
While not all of the self-aggrandizing ignorants so self-identify, the
designation is a reliable indicator for those who do.

If you think about things for even a millisecond, you will recognize the
importance and substance of the absurdity of lengthy and detailed design
on the basis of complete ignorance. I think you will find the replies to
the observation lack substance entirely. I will leave it for you to judge.

As for your original problem, your declared constraints do not match
your conceptual model of how the system should behave. That is a clear
sign that one or both are wrong.

I reiterate David's suggestion to learn the theory so you can understand
and evaluate these things for yourself. I also draw your attention to
David's predictions regarding guesswork.


Reply With Quote
  #8  
Old   
Bob Badour
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, orprogramming problem? - 12-22-2007 , 05:06 PM



I am going to correct myself:

To David's post, I would add a recommendation to get a copy of Fabian
Pascal's _Practical Issues..._ book and to read it:
http://www.dbdebunk.com/books.html

Reply With Quote
  #9  
Old   
David Cressey
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, or programming problem? - 12-23-2007 , 05:31 AM




"raylopez99" <raylopez99 (AT) yahoo (DOT) com> wrote

Quote:
I'm getting the hang of database architecture design I think, along
with easy to code, drag-and-drop Access 2003 forms programming--great
front end.

You're the same person who was building a home bookkeeping app in Access,
right?
That was a hobby, right? Is the app you are describing below another hobby
app?
It's a little more ambitious than home books.

Quote:
But I have a question about a form involving three tables--and I'm not
sure if this is a programming question or a database architecture
question, hence the crosspost.

I have three tables to model a stock portfolio (buying and selling by
a single person having numerous accounts): Stock_Accounts (plural),
in a single table (red flag), which belong to a single individual,
then a stock table, Stocks, listing all the stocks owned by the
individual, then a stock transaction table, Stock_transactions,
listing all the buying and selling within the various accounts. FYI
the table "Stock_transactions" is a subform (depends on a parent) of
"Stocks", while Stocks is a subform (depends on a parent) of
"Stock_Accounts", meaning there's a one-to-many relationship from form
to subform.

This is the solution, but you haven't described the problem. I don't
understand your data and your intended use of it well enough to offer an
opinion about whether your design is optimal, nearly optimal, or severely
suboptimal. That's the feedback I think you ask for towards the end of this
post.

Quote:
Everything works fine: everything is in first normal form with
primary and foreign keys, but one nagging problem: in the rare event
that this person owns the same stock in two different accounts, the
way I set up the tables will not allow the person to enter the same
symbol. Quick workaround: require a different symbol, say "IBM2"
with a popup warning box to the user explaining why. Another
workaround (I tried this and it works): is to eliminate the stock
symbol as a primary/foreign key--that's fine, and it works, but now
the problem is that within the same Stock account you can accidentally
enter the same stock symbol twice, which is a data integrity problem.

Requiring a different symbol is nearly always an invitation to dysfunction.
Remember what your grandmother said: "Oh, what a tangled web we weave, when
first we practice to deceive." If you store some real data and some
invented data in the same column, you'll regret it.

If the relationship between stocks and accounts is many to many, model it
that way, and implement it the right way.




Quote:
So a third approach: enforce relational integrity between tables for
stock symbol with keys involving a stock symbol, but break up the
different accounts into seperate tables--Account 1, Account 2, Account
IRA, etc. Thus entering the same stock in Account 2 will be
irrelevant for this stock in Account 1, exactly as we desire. This
might be the best approach.

A fourth approach: somehow, within the tables, enforce that the same
field cannot be entered twice, programmically--is there a way to do
that in Access?

A fifth approach: instead of a clean "one-to-many" relationship have a
"many-to-many" relationship between the tables, so stock symbol
becomes a key but a key that is spread around (via an intermediate
junction table).


As I type this, I believe the cleanest approach is simply to have many
tables for different stock accounts for this individual: one table
per brokerage, say the person might have an IRA stock account, a
speculative stock account, a conservative stock account, etc, with
different stock brokerage account numbers, and with the accounts all
buying on occasion the same stock (same stock symbol), and that's
fine.

It's the dirtiest approach.

Quote:
Any thoughts?

You really do need to learn a little more about database design from some
formal source. You've gotten off to a satisfying start with trial and
error, mere intuition, and feedback from a newsgroup. But you are about to
reach areas where your intuition will betray you, the newsgroup can't
really help you, except to point to to better sources of learning, and
trial and error is just going to be too expensive, even for a hobbyist with
plenty of time.

Some people have given you the names of some books. You'll learn more out
of those books than from any website. But if you want to get started with
some websites, here are a couple:

http://www.utexas.edu/its-archive/wi.../overview.html
http://www.databaseanswers.org/







Reply With Quote
  #10  
Old   
raylopez99
 
Posts: n/a

Default Re: A newbie paradox: is this a PK-FK (relationship) problem, orprogramming problem? - 12-23-2007 , 05:43 AM



On Dec 22, 4:38*pm, "tina" <nos... (AT) address (DOT) com> wrote:

Thanks Tina! I like your solution, it seems to make sense and even be
in Third Normal Form or somesuch...very nice!

I will model it and if I have any problems will report back.

RL


Quote:
tblPersons
PersonID (pk)
FirstName
MiddleInitial
LastName
other fields that describe the person only.

tblStocks
StockSymbol (pk)
StockName
other fields that identify the stock only.

tblBrokerages
BrokID (pk)
BrokName

tblAccounts
AcctID (pk)
PersonID (fk)
BrokID (fk)
other fields that describe a specific account for a specific person.

tblAccountStocks
AcctStockID (pk)
AcctID (fk)
StockSymbol (fk)

tblTransactions
TransID (pk)
AcctStockID (fk)
other fields that describe a specific transaction of a specific stock in a
specific account.

the relational structure is
tblPersons.PersonID 1:n tblAccounts.PersonID
tblBrokerages.BrokID 1:n tblAccounts.BrokID
tblAccounts.AcctID 1:n tblAccountStocks.AcctID
tblStocks.StockSymbol 1:n tblAccountStocks.StockSymbol
tblAccountStocks.AcctStockID 1:n tblTransactions.AcctStockID

tblAccounts is a junction (linking) table between tblPersons and
tblBrokerages.
tblAccountStocks is a junction (linking) table between tblAccounts and
tblStocks.
and tblTransactions is a simple child table of tblAccountStocks.
so you can trace each transaction record back to a specific stock in a
specific account belonging to a specific person.

i don't know a thing about stock markets and trading, so i imagine this isa
simplified structure,

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.