2016-05-12 18 views
0

所以我很新的數據庫結構。目前我需要爲我的Web應用程序構建一個通知系統。谷歌搜索一段時間後,我發現the first answer是有趣的。TINYINT如何在MySQL上存儲字符串值

爲什麼activity_type是TINYINT?難道它不是字符串,因爲他說示例值就像是「最喜歡的」。任何人都可以幫忙

回答

0

是的,不要效仿這個例子。

他使用TINYINT中的數字,它們具有神奇的意義,並且很可能在他的代碼中表示爲常量,所以1表示一種活動,2表示另一種等,並且只有代碼知道這些含義 - 而不是數據庫。

然後有一個「source_id」引用一個未聲明的,未強制的外鍵引用其他幾個表之一。不要這樣做。

在數據庫列中,所有值應該具有相同的含義 - 它們應該全部來自同一個信息域。如果有「thing_id」列,則應該始終引用thing表中某行的「id」。應該是而不是有時候指的是「thing1」表中的一行,或者根據「thing_type」被設置爲「1」還是「2」......其他時間可能是「thing2」表中的一行。

這種設計可能存在可行的用例,但我會將此模型解釋爲數據庫的紅旗警告,該數據庫沒有執行參照完整性......這與關係數據庫的最佳實踐不一致。從他最後的評論

注...

沒有加入。

他沒有真正使用關係數據庫作爲關係數據庫。他幾乎將它用作某種關鍵/價值商店。

+0

好吧,說,我明白你的意思。那麼有什麼改進建議? –