Sid 'Neko Tamashii' wrote:
Is this model (Symfony's YML based) wrong based on normalization?

propel:
  client:
    client_id: {type: integer}

  foo:
    client_id: {type: integer, foreignTable: client, foreignReference: 
client_id}
    foo_id: {type: integer}

  bar:
    client_id: {type: integer, foreignTable: client, foreignReference: 
client_id}
    bar_id: {type: integer}

Well, assuming the primary-key on these includes both columns - e.g. (client_id,foo_id)


  foobar:
    client_id: {type: integer}
    foo_id: {type: integer}
    bar_id: {type: integer}
    _foreignKeys:
      fk_foo:
        foreignTable: foo
        references:
          - { local: client_id, foreign: client_id }
          - { local: foo_id, foreign: foo_id }
      fk_bar:
        foreignTable: bar
        references:
          - { local: client_id, foreign: client_id }
          - { local: bar_id, foreign: bar_id }

This looks fine (assuming not-null on all columns).

You could make an argument for an explicit foreign-key for client_id too, but it's clearly safe not to have one while the other two foreign-keys are there. If you allow client_id to be set separately from foo_id/bar_id then you'll want the foreign-key of course.

The one thing I would do is change the names of foo_id, bar_id since they're not identifiers by themselves.

--
  Richard Huxton
  Archonet Ltd

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

Reply via email to