我正在使用Firebird 2.1,並且正在尋找解決此問題的最佳方法。數據庫設計問題 - 哪個是最好的解決方案?
我在寫日曆應用程序。不同用戶的日曆條目存儲在大日曆表中。每個日曆條目可以有一個提醒集 - 只有一個提醒/條目。
統計上,日曆表隨着時間的推移可能會增長到數十萬條記錄,而將會有更少的提醒。
我需要在不斷的基礎上查詢提醒。
哪一個是最好的選擇?
a)儲存在日曆表提醒信息(在這種情況下,我要查詢成千上萬的記錄IsReminder = 1)
B)創建一個單獨的提醒表,只包含C)我可以在Reminders表中存儲關於提醒的所有信息,然後只查詢這個表格,然後查詢這個表格,然後查詢這兩個表格(或者可以在其上創建一個視圖)
C) 。缺點是一些信息需要在兩個表中重複,例如爲了顯示提醒,我需要知道並將事件的開始時間存儲在提醒表中 - 因此我維護着兩個具有相同值的表。
您認爲如何?
還有一個問題:日曆表將包含多個用戶的日曆,僅由用戶ID字段分隔。由於只能有4-5個用戶,即使我在這個領域提供了一個索引,它的選擇性也會非常糟糕 - 這對於擁有數十萬條記錄的表來說並不好。有沒有解決方法?
謝謝!
感謝您的回覆無遺:-)如果用戶名不是一個複合主鍵的一部分,而是一個簡單的現場與索引,我想它的選擇性將是十分糟糕,檢索速度慢? – Steve 2010-11-19 14:33:18
@Steve:索引是爲了快速查詢而發明的 - 如果你有一個帶有索引的字段,應該可以使用這個索引編寫查詢。 – 2010-11-19 14:38:16
Doc,我讀過Firebird的索引選擇性是一個重要的因素。如果一個字段具有低折射率的選擇性(只有幾個不同的值),你可能看不到的速度增長...... – Steve 2010-11-19 15:28:20