我想知道是否有更好的做法或任何原則來設計一個查找表。查找表:有更好的做法嗎?
我打算設計一個抽象查找表,它可以服務於許多不同的情況。
舉例來說,我打電話給我的查找表爲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