У меня есть следующие таблицы;Что было бы самым эффективным способом вставить теги в таблицу
CREATE TABLE IF NOT EXISTS `tags` (
`tag_id` int(11) NOT NULL auto_increment,
`tag_text` varchar(255) NOT NULL,
PRIMARY KEY (`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) NOT NULL auto_increment,
`user_display_name` varchar(128) default NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
CREATE TABLE IF NOT EXISTS `user_post_tag` (
`upt_id` int(11) NOT NULL auto_increment,
`upt_user_id` int(11) NOT NULL,
`upt_post_id` int(11) NOT NULL,
`upt_tag_id` int(11) NOT NULL,
PRIMARY KEY (`upt_id`),
KEY `upt_user_id` (`upt_user_id`),
KEY `upt_post_id` (`upt_post_id`),
KEY `upt_tag_id` (`upt_tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE IF NOT EXISTS `view_post` (
`post_id` int(11)
,`post_url` varchar(255)
,`post_text` text
,`post_title` varchar(255)
,`post_date` datetime
,`user_id` int(11)
,`user_display_name` varchar(128)
);
Идея состоит в том, что я хотел бы использовать наиболее эффективный способ сохранения тегов, сообщений и пользователей. Просто, как только я добавлю сообщение, я передаю несколько тегов по этому сообщению и пользователю. Позже я хотел бы иметь возможность подсчитывать вкладки для каждого пользователя и сообщения. Что-то очень похоже на переполнение стека.
Я полагаю, что «tag_text» должен быть уникальным? Является ли эффективным то, что я запускаю функцию каждый раз, когда я отправляю новое сообщение, чтобы пройти через таблицу «теги», чтобы проверить, существует ли уже тег, и если да, верните его «tag_id», чтобы я мог вставить его в таблицу «user_post_tag» ,
Возможно, это плохой подход к решению этой проблемы.
Все предложения приветствуются.
Вы освободите это как открытый источник, после того как вы закончите? с «Что-то очень похожее на переполнение стека» – ant