Re: [GENERAL] looking for a globally unique row ID

Поиск
Список
Период
Сортировка
От Rafal Pietrak
Тема Re: [GENERAL] looking for a globally unique row ID
Дата
Msg-id 84bc74fd-faa4-6b67-75b6-94f24b8277e5@ztk-rp.eu
обсуждение исходный текст
Ответ на Re: [GENERAL] looking for a globally unique row ID  (Rob Sargent <robjsargent@gmail.com>)
Ответы Re: [GENERAL] looking for a globally unique row ID  (Rob Sargent <robjsargent@gmail.com>)
Список pgsql-general

W dniu 14.09.2017 o 19:30, Rob Sargent pisze:
> 
> 
> On 09/14/2017 11:11 AM, Rafal Pietrak wrote:
>>

[------------------]
>> So I'm stuck with seriously incomplete solution.
>>
>> that's why I have an impression, that I'm going into entirely wrong
>> direction here.
>>
>>
> So you care if the same id is used in separate, unrelated tables? What's
> your fear here?  And I completely get the confusion generated be the

You can call it fear, but I see it as an attempt for "schema/design
resilience".

Like with "unique constraint". You lay out the schema, and whatever bug
get planted into an application, the database does not let you put
inconsistent data there.

And answering your question, my problem is actually trivial. I need that
to systematically cover document identification within archive. There
are couple of document "Classes" I need to cover, their representation
in the DB requires different columns, so they are registered in
different table. I've started the project with one table for all those
classes, and quite soon it become monstrous.

So every document class got their own table. (and their private unique ID).

But problem rises when I need to referencing those documents along their
lifetime. Every class needs separate table for that. I cannot have a
single table of "history" (document-ID, dispatch-date, recepient), as
I'm not able to make FK from single table into multitude of tables (with
separate classes). So the forest of tables grows.

The above schema would get significantly simpler if only I could have a
"global primary key"... or something equivalent.

And as I said, this is not a problem of performance (or identification
space exhaustion). It's a problem of "schema explosion". Something that
actually is quite simple become complex (if not unmanageable) just
because I cannot see a good tool to manage the "globality".

I kick this problem for some time now - rewriting the basic schema
numerous times, and:

1. either I get monstrous "document master table" - which very
effectively leads to contents inconsistency (document get attributs
which dont belong to their classes)

2. or the schema explodes, as with documents stored in smaller (less
columns) specialized by-class table ... they all need their private
"managemnet tables" which FK into its respective document tables.

Both ways turned out to be quite expensive in maintenance.

Throwing actual numbers: 12 basic classes of documents; 17 tables
registering various operations document may undergo during its lifetime.
Variant (2) above make it 12*17 = 204 tables, which I'm currently
maintaining.... and it's too much. With variant (1) I simply wasn't able
to effectively keep document attributes consistent.

Thus I'm searching for tools (paradigms/sql-idioms) that would fit the
problem.

> same small integer being re-used in various context ("sample id" is the
> bane for me). Could you use a sufficiently accurate time value?
> 
> 
> 


But thank you all for answers.

-R


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

В списке pgsql-general по дате отправления:

Предыдущее
От: Nico Williams
Дата:
Сообщение: [GENERAL] COMMIT TRIGGER implementation using CONSTRAINT TRIGGERs
Следующее
От: "Luiz Hugo Ronqui"
Дата:
Сообщение: [GENERAL] Table partition - parent table use