我想知道是否有更好的做法或任何原则来设计一个查找表。查找表:有更好的做法吗?
我打算设计一个抽象查找表,它可以服务于许多不同的情况。
举例来说,我打电话给我的查找表为masters and slaves
表,
CREATE TABLE IF NOT EXISTS `masters_slaves` (
`mns_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`master_id` varchar(255) DEFAULT NULL COMMENT 'user id or page id',
`slave_id` varchar(255) DEFAULT NULL COMMENT 'member id or user id or page id',
`cat_id` varchar(255) DEFAULT NULL COMMENT 'category id',
`mns_created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`mns_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`mns_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
所以这种查找表可以服务器的这些类型等的关系,
Admins and Members
Admins and Pages
Admins and Posts
Post Categories and Posts
Page Parents and Pages
etc
的cat_id
在masters and slaves
表会描述和区分这些类别。例如,cat_id
1
是管理员和成员等。
我会插入:
- 管理员ID为
master_id
和成员ID的列到slave_id
列 - 父页面ID进入
master_id
和子页面ID列到slave_id
列 - 帖子分类id到列 的
master_id
和页面id到slave_id
列 - 等
但我相信这件事我是否应该去与否:
- 这是一个很好的查找 表的做法还是应该做很多创造超过 一个查询表为不同的 关系?
- 如果我可以做像 这样的查找表,这只是一个查询表 所有人,我会 未来有什么后果?当我的网站内容增长时,这个唯一的 查找表将超过填充的 ?
- 还有一点想到的是 - 不是标签系统查找表 的解决方案吗?
谢谢。
尝试使用百万条记录,发出查询并查看会发生什么。这应该暗示为什么你的想法不如听起来那么好:) – Furicane 2011-03-19 18:28:11
虽然我同意其他人的观点,这个表格布局通常是一个糟糕的主意,但表现并不像它看起来那么大。索引和分区功能很好。 – Krab 2011-03-19 19:09:57