Re: Foreign Keys as first class citizens at design time?

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Foreign Keys as first class citizens at design time?
Дата
Msg-id 55CD32D4.3050008@aklaver.com
обсуждение исходный текст
Ответ на Foreign Keys as first class citizens at design time?  ("Stephen Feyrer" <stephen.feyrer@btinternet.com>)
Ответы Re: Foreign Keys as first class citizens at design time?
Список pgsql-general
On 08/13/2015 05:03 PM, Stephen Feyrer wrote:
> Hi,
>
> This is probably not an original question merely one which I haven't
> been able to find an answer for.
>
> Basically, the question is why is there not an equivalent foreign key
> concept to match the primary key we all already know an love?
>
> How this would work, would be that the foreign key field in the host
> table would in fact simply be a reference to a key field in the guest
> table. Then in the respective SQL syntax a semantic reference may then
> be made whether or not to follow such links.
>
> Therefore as an example:
>
> {system:{"primary-key":"1","child-key":"","date":"20150421","directory-name":"Bucket
> List","user-attribute":"Bucket.List@example.com"},
>
{"primary-key":"2","child-key":"","date":"20150421","directory-name":"Supernova","user-attribute":"supernova@example.com"},
>
{"primary-key":"3","child-key":"5","date":"20150422","directory-name":"Transactional","user-attribute":"transactional@transaction.org"},
>
{"primary-key":"4","child-key":"","date":"20150503","directory-name":"Spam","user-attribute":"allmyspam@lovesspam.com"},
>
{"primary-key":"5","child-key":"","date":"20150506","directory-name":"Relational","user-attribute":"relational@transaction.org"}}
>
> SELECT directory-name FROM system WITH-IMPLICIT-JOIN WHERE-PK-IS-NOT-LINKED
>
> This would yield
>
> directory-name    directory-name
> Bucket List
> Supernova
> Transactional     Relational
> Spam
>
> Alternatively linking two user tables - profiles and contacts
>
> profiles
> PK-profiles
> user-name
> real-name
> age
> gender
> region
>
>
> contacts
> PK-contacts
> FK-profiles
> phone
> email
> icq
> home-page
>
> Getting the user-name and email would look something like:
>
> SELECT user-name, email FROM profiles WITH-IMPLICIT-JOIN
>
>
> When building our databases we already put a lot of work in normalising
> as much as we can. Then after all that work we have to virtually start
> again building up select, insert and update statements etc. all with all
> that referential integrity in mind.
>
> The advantages of a first class foreign key field as I see it are at
> least two fold. One it make building and maintaining your database
> easier. Two it is a means to provide some iterative structures easily coded.
>
> To me this looks like a good idea.

What happens if you have more then one child table with the same field?

So:

contacts
    FK-profiles
    ....
    email
    ....

vendors
    FK-profiles
    ....
    email
    ....


>
>
> --
> Kind regards
>
>
> Stephen Feyrer


--
Adrian Klaver
adrian.klaver@aklaver.com


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

Предыдущее
От: "Stephen Feyrer"
Дата:
Сообщение: Foreign Keys as first class citizens at design time?
Следующее
От: Martín Marqués
Дата:
Сообщение: Re: Sync replication + high latency server