Users
id (autoinc) name password theme_id
Posts:
id (autoinc) member_id title date
Tags:
id (autoinc) name
Tag_Relations:
tag_id post_id
Messages is your message array, with the member_id column linking each message to its user. Tags - your "array" of tags, tag relationships associate each tag with one or more messages.
Here is an example of how you can get all the messages and tags for a user with a single request:
SELECT Members.name, Posts.title, Tag_Relations.item_id, Tags.name FROM Members LEFT JOIN Posts ON Members.id = Posts.member_id LEFT JOIN Tag_Relations ON Tag_Relations.post_id = Posts.id LEFT JOIN Tags ON Tags.id = Tag_Relations.tag_id WHERE Members.id = 2779; +----------+-----------------------------------+------------+---------+ | name | title | item_recid | name | +----------+-----------------------------------+------------+---------+ | Mike | One Post Title | 973 | Houses! | | Mike | One Post Title | 973 | Cars | | Mike | One Post Title | 973 | Hats | | Mike | Another Post Title | 973 | Cars | | Mike | Yet another post | 975 | Homes | | Mike | Guess what?! | 976 | Houses! | | Mike | Another one :) | 977 | Noses | | Mike | Another one :) | 977 | Mouth | | Mike | Another one :) | 977 | Head | | Mike | Another one :) | 977 | Knees | +----------+-----------------------------------+------------+---------+
source share