[postgis-users] Dilemma: is gid really useful in a geoDB?
Havard Tveite
havard.tveite at umb.no
Thu Feb 22 03:07:13 PST 2007
In the relational model, the primary key can be a combination
of several attributes. If you have such a combination of
attributes, there is (from the relational model's point of
view) no need for a separate gid.
Also, if geometry is considered fist class data type of the
(extended) relational model, location itself can, in principle,
act as (or be a part of) a primary key (as long as you can
guarantee that there is only one object per location).
As pointed out in several other postings, the "problem" is that
a lot of GIS software tend to rely on having a single attribute
primary key, and that this key has to be of a specific type.
The system (PostgreSQL) generated "oid" can also be used as a
primary key.
Håvard
Marc Compte wrote:
> Hi,
>
> Ermm ... wasn't one of Codd's rules "Each and every datum (atomic value)
> in a relational data base is guaranteed to be logically accessible by
> resorting to a combination of table name, primary key value and column
> name."?
>
> I find it surprising to see that "there's no need for a gid, from the
> database point of view" and that primary keys are only needed because
> "most applications want some way of identifying specific rows", as the
> very core definition of the relational model clearly identifies this as
> a crucial part of the model. Wanting to identify specific rows is not an
> application oddity, it's part of the very definition of the model.
>
> Every table needs to have a key, not only to conform with the relational
> model's theory, but for pragmatical purposes as well. Even (or
> specially) from the database point of view, no key means there is no way
> to update a unique field, there is no way to extract the information
> about one individual record, there is no way to cross-reference tables
> ... in short, no key means something like there is no relational
> database, only a flat list of data ... and PostgreSQL, even though it
> incorportes OO elements, has still a big part of relational, right?
>
> Whether you have to be using that particular field (gid) or not depends
> on your data. I don't think naming your key field "gid" is defined in
> any standard (it shouldn't be anyway). As other people said, shp2pgsql
> automatically generates this one for you, but I assume that is just to
> make your life easier and make sure there is at least one way to
> uniquely identify records.
>
> The only important thing to do should be to make sure that there's at
> least 1 field with values that can be used to uniquely identify any of
> the records of your table. If you are sure there's another field (or
> combination of fields) that serves the purpose right, you wouldn't
> actually need to have that particular gid field. You should be able to
> delete it and still be able to use on that table all of the features of
> the database and any other surrounding application by using your own
> self-made primary key.
>
> If an application has a problem with any of this (multiple field keys,
> using a different name for the key field other than gid, ...) then you
> could probably say it is not well designed and you might want to switch
> to something else.
>
> Marc
>
> En/na Markus Schaber ha escrit:
>> Hi, Antonello,
>>
>> Antonello <antonello.monetsen at gmail.com> wrote:
>>
>>
>>> I have a dilemma: is gid really useful in a geoDB?
>>> I am building a geodb for several harbor. When I create a layer(table
>>> with geometry) in postgis, I need a gid like a primary key, or I can
>>> use a different one? Can I use several field of from the table like
>>> a primary key?
>>> I am not new in the gis, but why in almost all geoDB I saw there is a
>>> gid?! Is it really necessary? Do it come from shapefile standards?
>>>
>>
>> Technically, there's no need for a gid, from the database point of
>> view, as SQL deals with sets of rows.
>>
>> However, most applications want some way of identifying specific rows,
>> especially when updating / editing data.
>>
>> GID is generated by shp2pgsql.
>>
>>
>>> For example QuantumGIS doesn't work if the layer has only one primary
>>> key, there are other application that don't work like qGis?
>>>
>>
>> QuantumGIS has the additional oddity that the primary key has to be of
>> type int4 - int8 or serial (which is optimal for primary keys) is not
>> accepted, AFAIK.
>>
>> For read-only access, you can try MezoGIS which makes very little
>> assumptions about your database, and you can specify layers via
>> arbitrary queries.
>>
>>
>> Regards,
>> Markus
>>
>>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
--
Håvard Tveite
Department of Mathematical Sciences and Technology, UMB
Drøbakveien 14, POBox 5003, N-1432 Ås, NORWAY
Phone: +47 64965483 Fax: +47 64965401 http://www.umb.no/imt
More information about the postgis-users
mailing list