我需要一段時間讓我困惑的SQL決策的幫助。何時爲兩種略有不同的信息使用單獨的SQL數據庫表?
我試圖製作一個小故事網站,用戶可以在這裏寫他們自己的故事,並可以瀏覽彼此等。我還收藏了一些偉大的作家從過去寫的經典短篇小說集。我很困惑我是否應該將這兩種類型的故事存儲在同一個數據庫表中。
我想在一定程度上保持兩種類型的故事(經典作者/用戶)不同,因爲您應該能夠搜索網站並從結果中篩選出用戶故事。但是我不能只在表中有一個單獨的數據庫行來表示它,即一個布爾CLASSIC,因爲使用經典的短庫存,其他幾行也會不同 - 沒有用戶,日期是YYYY(即1869年),而不是用戶提交時的完整日期時間。
然而,我不能把它們放在單獨的表中。當大多數屬性相同時,我是否應該爲短篇故事確實有兩個不同的數據庫表?目前,我正在將NULL填充到用戶行中以獲得經典短篇故事,並且我的篩選搜索具有僅通過經典的搜索選項,該經典從數據庫中選擇用戶爲NULL的位置。這似乎打破了性能,但是當你搜索一個巨大的潛在數百萬用戶故事數據庫時,僅僅是爲了找到幾千個經典故事。
請注意,還有其他表格,如故事標籤,鏈接到短故事表。
所以我基本上問你的SQL專家 - 是否有足夠的理由將兩種類型的信息分離到不同的表中?我目前在開發中使用SQLite,但稍後會切換到MySQL或PostgreSQL。
總之,你有一個層次結構,你需要看看如何把它變成物理模型。可能[這個問題](http://stackoverflow.com/questions/8685621/what-is-the-best-database-schema-to-support-values-that-are-only-appropriate-to/9460541#9460541)可能有幫助,或者[這個簡化的](http://stackoverflow.com/questions/19430204/database-design-structure/19430750#19430750)。 –