How to implement one-to-one, one-to-many and many-to-many relationships while designing tables?

前端 未结 4 605
野趣味
野趣味 2020-11-22 04:51

Can anyone explain how to implement one-to-one, one-to-many and many-to-many relationships while designing tables with some examples?

4条回答
  •  醉梦人生
    2020-11-22 05:40

    This is a very common question, so I decided to turn this answer into a an article.

    One-to-many

    The one-to-many table relationship looks as follows:

    In a relational database system, a one-to-many table relationship links two tables based on a Foreign Key column in the child which references the Primary Key of the parent table row.

    In the table diagram above, the post_id column in the post_comment table has a Foreign Key relationship with the post table id Primary Key column:

    ALTER TABLE
        post_comment
    ADD CONSTRAINT
        fk_post_comment_post_id
    FOREIGN KEY (post_id) REFERENCES post
    

    One-to-one

    The one-to-one table relationship looks as follows:

    In a relational database system, a one-to-one table relationship links two tables based on a Primary Key column in the child which is also a Foreign Key referencing the Primary Key of the parent table row.

    Therefore, we can say that the child table shares the Primary Key with the parent table.

    In the table diagram above, the id column in the post_details table has also a Foreign Key relationship with the post table id Primary Key column:

    ALTER TABLE
        post_details
    ADD CONSTRAINT
        fk_post_details_id
    FOREIGN KEY (id) REFERENCES post
    

    Many-to-many

    The many-to-many table relationship looks as follows:

    In a relational database system, a many-to-many table relationship links two parent tables via a child table which contains two Foreign Key columns referencing the Primary Key columns of the two parent tables.

    In the table diagram above, the post_id column in the post_tag table has also a Foreign Key relationship with the post table id Primary Key column:

    ALTER TABLE
        post_tag
    ADD CONSTRAINT
        fk_post_tag_post_id
    FOREIGN KEY (post_id) REFERENCES post
    

    And, the tag_id column in the post_tag table has a Foreign Key relationship with the tag table id Primary Key column:

    ALTER TABLE
        post_tag
    ADD CONSTRAINT
        fk_post_tag_tag_id
    FOREIGN KEY (tag_id) REFERENCES tag
    

提交回复
热议问题