我們使用需要管理員批准記錄的表格,才能將記錄公開顯示。我想知道什麼是最合適的方式來設計這樣一個表,其中主要查詢是檢索已批准(或尚未批准)的記錄。添加一個布爾字段與檢查字段是否不爲空?
假設查詢欄將被索引:
- 是否有任何速度的好處是用一個布爾字段?
- 檢查列是否爲NULL違背最佳實踐?
例如:
id | title | text | approved_dttm
---------------------------------------
1 | ... | ... | null
2 | ... | ... | 2017-01-01 00:00:00 ETC
SELECT * FROM table where approved_dttm IS NOT NULL;
VS
id | title | text | approved | approved_dttm
---------------------------------------
1 | ... | ... | 0 | null
2 | ... | ... | 1 | 2017-01-01 00:00:00 ETC
SELECT * FROM table where approved = 1;
注意:我們並不需要比不批准的批准/等多種狀態。沒有「需要進一步審查」等。
恕我直言,在批准的日期,布爾添加冗餘數據(如果批准日期設置,它必須被批准)。 NULL被廣泛使用,這是人們共同努力的共同點。 –
如果您認可您無法使用approved_dttm,您會怎麼做?如果答案是什麼,我會放棄它。 –