Best way to store a many-to-many relationship in MySQL?

﹥>﹥吖頭↗ 提交于 2019-11-29 05:03:55

The post_tags is the proper means of implementing a many to many relationship in the database.

The only addition I'd make to what you posted is that both columns in it should be the primary key to ensure there are no duplicates.

You almost certainly will want to use an "intersection" or join table. This table can contain the primary keys of the posts and tags table, and (optionally) its own distinct primary key. Joining the three tables should be straightforward:

select ...
from post_tags
inner join posts on post_tags.postID = posts.postID
inner join tags on post_tags.tagID = tags.tagID
...

You can create a view that does the basic join which you can then reference in your code.

Use the table with associations - this is called a junction table.

To get the tags for a post:

SELECT tag_name FROM tags, post_tags WHERE post_tags.tag_id = tags.tag_id AND post_tags.post_id = 12345;

Use a join table

I think this is a good explaination to start with: http://www.tonymarston.net/php-mysql/many-to-many.html

Otherwise you should have a look on object relational mapping - which does the complicated sql queries for you.

For example: http://www.qcodo.com/

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