On 01/07/2010 15:25, Anthony wrote:
On Thu, Jul 1, 2010 at 8:08 AM, John F. Eldredge <j...@jfeldredge.com <mailto:j...@jfeldredge.com>> wrote:

    In fact, the technique of having the user select from a list of
    words, but actually storing the value as an arbitrary ID
    (generally numeric), is the recommended technique in database
    design.  It is called "normalizing the database".


Umm...no. At least, not exactly. If a single column is independent from other columns, it is not necessary for normalization to store it as an arbitrary ID. (For example, if you have a database table containing a driver's license number, date of birth, and hair color, you generally wouldn't store the hair color as an arbitrary ID and then have a separate table to look up the hair color. It certainly isn't necessary for normalization. Assuming driver's license number is your primary key, hair color is a fact about the key, the whole key, and nothing but the key.)

Actually that would be exactly what you would do, assuming you want the list of colours to be controlled and finite. If you denormalise and put the text of the hair colour in the person table you are enabling spelling variations, translations and other kinds of "noise" which is usually what you want to prevent. A real-life example would be the colour of a car in the registration database. My car is painted (according to the manufacturer) "Noir Nacre" but I wouldn't find "Noir Nacre" in the government database. It's black, however you look at it. Unless you are French, in which case it is "noir". Etc etc.

It starts with a question about the data model. Do you recognise colour as having a finite set of valid values, or is it really free text? The "OSM way" is to have everything as "free text" at a technical level, and to maintain any "list of valid values" by general consensus, although even this goes against the grain for some people. As the profile of OSM improves in the market for cartographic data, it will become increasingly important to demonstrate that the data has some kind of quality control.

The discussion about football vs. soccer is not one about what it IS, but what it is CALLED. British English is the base language for OSM, so the main tag value should be "sport=football". Just as German-speakers are free (encouraged?) to use "sport:de=fussball" why should it not be "sport:us=soccer" in the USA?

If you're using a crappy "DBMS" you might do this anyway, not for normalization, but for performance purposes, because the DBMS is too stupid to do it automatically behind the scenes for you. If you're using a good DBMS, it won't be necessary, though.

Which DBMS do you call crappy and which do you call good?

Colin


_______________________________________________
Tagging mailing list
Tagging@openstreetmap.org
http://lists.openstreetmap.org/listinfo/tagging

Reply via email to