【发布时间】:2010-03-29 21:58:48
【问题描述】:
我正在创建一个社交书签应用。我正在重新考虑开发过程中的数据库设计。
我是否应该规范化书签表并将我拥有的标签列删除到单独的表中。我每个书签有 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 测试之外,我目前想不出任何像样的东西!
【问题讨论】:
-
如果您发布表格,人们可能会更容易理解您的意思,以及您可以做些什么。
-
为什么人们似乎认为联接是一件坏事并且应该避免?
标签: sql database-design mysql