Skip Navigation

understanding many2one, one2many and many2many relationshit

Hii,

I am new to database thing so I am trying to wrap my head around it.

  1. many2one: so in this relationship you will have more than one record in one table which matches to only one record in another table. something like A <-- B. where (<--) is foreign key relationship. so B will have a column which will be mapped to more than one record of A.
  2. one2many: same as many2one but instead now the foreign key constrain will look something like A --> B.
  3. many2many: this one is interesting because this relationship doesn't make use of foreign key directly. to have this relationship between A and B you have to make a third database something like AB_rel. AB_rel will hold values of primary key of A and also primary key of B. so that way we can map those two using AB_rel table.

tell me if I got something wrong :) give me some suggestion <3

12 comments
  • to have this relationship between A and B you have to make a third database

    Probably just a mistake here, but you make a third table, not a new database.

    Apart from that (and the fact that one to many and many to one is the same thing), yeah, looks correct.

  • many2one: so in this relationship you will have more than one record in one table which matches to only one record in another table. something like A <-- B. where (<–) is foreign key relationship. so B will have a column which will be mapped to more than one record of A.

    no, the other way around

    When B has a foreign key to A, many B records may relate to one A record. That's the many2one part.

    The fact that different B records can point to different A records is irrelevant to that.

    one2many: same as many2one but instead now the foreign key constrain will look something like A --> B.

    It's the same, mirrored. Or mirrored interpretation / representation to be more specific. (No logical change.)

    If you had B --> A for many2one, then the foreign key relationship is still B --> A. But if you want to represent it from A perspective, you can say one2many - even though A does not hold the foreign keys.

    In relational database schemata, using foreign keys on a column means the definition order is always one to one, and only through querying for the shared id will you identify the many.

    many2many: this one is interesting because this relationship doesn’t make use of foreign key directly. to have this relationship between A and B you have to make a third database something like AB_rel. AB_rel will hold values of primary key of A and also primary key of B. so that way we can map those two using AB_rel table.

    Notably, we still make use of foreign keys. But because one record does not necessarily have only one FK value we don't store it in a column but have to save it in a separate table.

    This association table AB_rel will then hold the foreign keys to both sides.

12 comments