我正在创建一个社交书签应用程序。在开发过程中,我重新思考了数据库设计。
我是否应该将书签表规范化,并将标签列移动到单独的表中?每个书签有10个标签,因此每个记录(每个书签)有10个列。
对我来说,将表分成两部分似乎只会意味着我需要进行连接,但是当前的方式是直接选择,但是这个表感觉不太对......?
谢谢大家
更新
当前表结构:
CREATE TABLE IF NOT EXISTS `bookmarks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` char(250) NOT NULL,
`link` text NOT NULL,
`keyword_1` char(250) NOT NULL,
`keyword_2` char(250) NOT NULL,
`keyword_3` char(250) NOT NULL,
`keyword_4` char(250) NOT NULL,
`keyword_5` char(250) NOT NULL,
`keyword_6` char(250) NOT NULL,
`keyword_7` char(250) NOT NULL,
`keyword_8` char(250) NOT NULL,
`keyword_9` char(250) NOT NULL,
`keyword_10` char(250) NOT NULL,
`date_added` datetime NOT NULL,
`privacy_type` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=68 ;
补充一点,收藏夹属于用户,标签属于收藏夹。因此我应该将 user_id 添加到 tags 表中吗?
一个相关的新问题:
如何搜索标签并返回收藏夹?
很高兴看到 SQL 查询示例。我希望能得到一些高效的东西,因为我目前除了在每个关键字列上进行 LIKE 测试之外,想不到更好的方法!