Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Array values into a database help!

by chrestomanci (Priest)
on Nov 28, 2010 at 21:04 UTC ( [id://874139]=note: print w/replies, xml ) Need Help??


in reply to Array values into a database help!

The normal way of storing lists in a database, is to store the members in a separate table from the table they relate to, and then having a foreign key relationship to join each list entry with table row it relates to. (This is why it is called a relational database.)

The way you have done it with four columns for the four possible array entries will be fine, but if you later discovered that there could be many more entries in the array, you would have to modify that table, and you would waste a lot of space with extra slots that are unused.

On the other hand, the way you have done it will be faster, as it avoids the need to do a database join, and if you are sure there will only ever be four entries in the array, then the small penalty of wasted slots will be small.

Replies are listed 'Best First'.
Re^2: Array values into a database help!
by aquarium (Curate) on Nov 28, 2010 at 22:38 UTC
    but on the other other hand, maintaining data in unnormalised table is horrible and easy to corrupt..as you end up essentially having to enforce a relational join in code, rather than at the structural/DB level. any and every operation on the table will have the capacity to ruin/corrupt the data.
    i think it essential that the relational model and normalisation is understood and first tried, before if/any decision to de-normalise. such de-normalisation decisions should be based on quantitative performance measurements; not on mere pondering. As a possible guideline using current technology, millions of rows in a normalised table with two or more relationships (joins) would make for a possible candidate for de-normalisation. And if performance metrics and other factors dictated de-normalisation, central functions are developed that will always be used to Create Read Update Delete the table, to avoid data corruption.
    not trying to be too hard-up about this..but maintaining a relational database through code is not easy or desirable at the outset. Better chance of success using normalised tables instead.
    the hardest line to type correctly is: stty erase ^H

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://874139]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2024-04-26 08:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found