2010-10-11 60 views
0

我打算創建Facebook式警報系統,我很好奇存儲警報的最佳方式是什麼。我應該使用什麼樣的桌子?如何在MySQL中存儲警報消息

這是我的想法是:

CREATE TABLE `alerts`(
    id INT NOT NULL PRIMARY KEY 
    status enum('active','inactive','deleted') DEFAULT active, 
    user_id INT NOT NULL, 
    message VARCHAR 255 NOT NULL, 
    ); 
+0

附註:你確定向用戶說謊被刪除的警報是個好主意嗎? – 2010-10-11 16:18:06

+0

您認爲此警報表可能包含多少行?如果將來您需要修改或添加狀態到該枚舉,會發生什麼? – 2010-10-11 16:54:34

+0

@Chrisitan:我不想物理「刪除」這些警報的原因是因爲我聽說它與MySQL索引混雜在一起會導致性能受損。不確定這是真的,但我總是可以通過並刪除「status ='deleted'」行並重新索引表。 – John 2010-10-11 20:03:18

回答

0

不存在任何更多的細節,我認爲我們可以說的最多的是:肯定的,那會工作。

表格模式沒有根本的缺陷。請確保在(user_id)或更可能在(user_id, status)(因爲您大多數時間只能查詢活動警報)和user_id到您的user表中包含索引。

而且您可能會考慮製作message a TEXT字段,除非您特別要將其限制爲255個字符。

+0

那麼你是說你的數據庫應該是InnoDB類型,因爲那是唯一支持外鍵的表類型? – John 2010-10-11 21:34:09

+0

是的。除非使用全文索引,否則所有表都應該是InnoDB,以便您可以定義正確的外鍵。 – VoteyDisciple 2010-10-11 23:26:51