我想知道在设计查找表时是否有更好的做法或原则。
我打算设计一个可以服务于许多不同情况的抽象查找表。
例如,我将查找表称为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
是Admins 和 Members等等。
我将插入:
- 管理员 id 进入列,
master_id
成员 id 进入slave_id
列 - 父页面 id 进入列,
master_id
子页面 id 进入slave_id
列 - 将类别 ID 发布到列中
master_id
,将页面 ID 发布到slave_id
列中 - ETC
但我很确定我是否应该这样做:
- 这是一个很好的查找表实践还是应该为不同的关系创建多个查找表?
- 如果我可以做这样的查找表,它只是一个查找表,我将来会有什么后果?当我的网站内容增长时,这个唯一的查找表会被过度填充吗?
- 想到的另一件事是 - 标签系统不是查找表解决方案吗?
谢谢。