Database-Design

酒店預訂數據庫設計

  • August 4, 2022

我正在建立一家線上旅行社,我對數據庫設計感到擔憂。假設使用者將有兩種類型:

  1. 標準(希望預訂酒店的使用者)和
  2. 酒店。顯然,標準使用者將比酒店使用者多得多(假設 1:50)。

現在,除了標準的使用者數據(user_idemailpassword等),酒店還有hotel_idhotel namecitycountrylocation_geoimages和其他一些欄位。

我關心的是酒店是否應該是一個單獨的表。IMO,擁有一個單獨的酒店表在性能方面會更好,因為:

  1. 酒店將成為該網站的主要“吸引力”,即酒店將被閱讀最多,並且對數據庫的需求最大。因此,IMO,明智的做法是有一個單獨的酒店表,這樣可以查看更少的數據,從而更快地提供數據。例如,如果我想獲得一個使用者,如果你必須查看 1000 行(酒店)比 50,000 行(使用者)更快
  2. 如果我添加特定於酒店的欄位(hotel_id、酒店名稱等),這些欄位中的大部分都是空的(因為標準使用者不需要它們),從而增加了數據庫的負載。

您認為正確的解決方案應該是什麼?

這取決於您使用的數據庫。 數據欄位對大多數數據庫的訪問速度沒有影響。

  1. 您確實需要將附加Hotel欄位預設為Null
  2. 不執行select *
  3. 不要使用固定長度的列

另一方面,我的經驗是,隨著時間的推移,您最終可能會在hotel記錄中添加越來越多的欄位。在這種情況下,現在將它們分開可能是值得的。

有關索引的更多資訊,請查看此連結深入了解數據庫索引SQL 伺服器索引

簡單地說,索引儲存在頁面中,頁面記憶體在記憶體中。索引位於某種二叉樹中。用於搜尋的深度或頁面數量會影響獲取速度。索引良好的表不會顯示成百上千條記錄的顯著減速。百萬,也許是另一個故事。

引用自:https://dba.stackexchange.com/questions/315210