Many-to-Many Relationships in MySQL

梦想与她 提交于 2019-11-29 07:39:53

Usually you have a separate table to handle these mappings:

`Words_Categories` Table
    `word_id`
    `category_id`

Each pair in this Words_Categories table represents one possible mapping from any word to any other category.

The category_id field in the Words table becomes unneeded under this scheme, as neither of these tables references each other directly.

You MUST NOT create extra columns like category_2 and category_3. That way lies madness.

Instead, you would remove the column "category_id" from the "words" table. Then, you would create a new table "category_words" with columns "category_id" and "word_id". To place a word into a category, insert a record into this table. To place the same word into another category, insert another record into the table.

You would remove the category_id from the words table and have a word_category table containing word_id, category_id (usually unique index or constraint) which is typically called a link table or bridge table. This is the typical normalized structure for a many-to-many relationship.

Having multiple category_id columns in the words table is not advisable for many reasons, which is why normal forms eliminate "arrays" from being stored in rows.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!