簡體   English   中英

何時使用關系數據庫結構?

[英]When to use a relational database structure?

我正在創建文件托管服務,但是現在我正在創建注冊的帳戶電子郵件激活部分。 因此,我不得不提出一個數據庫結構。

現在是:

users
  id
  first_name
  last_name
  email
  password
  since
  active
  hash_activate

但是我也可以像關系數據庫一樣來做:

users
  id
  first_name
  last_name
  email
  password
  since

activation
  id
  user_id
  hash
  active

最好的方法是什么? 又為什么呢?

僅當一個用戶可以進行多次激活時,第二個才有意義。 您不會說這是對還是錯,所以我無法建議您。

如果每個人一次只有一個激活哈希,則可以將其與用戶存儲在同一表中。

但是,將其分開的一個優點是用戶僅在短時間內擁有一個激活哈希,因此,為了使用戶記錄更小,可以將哈希存儲在單獨的表中。 保持用戶記錄較小,使其性能更高。 在這種情況下,您將沒有active列。 您只需刪除不活動的哈希即可。

如果確實將激活列存儲在用戶表中,只需確保按名稱選擇列即可。 例如,在大多數情況下,您需要這樣做:

SELECT id, first_name, last_name, email, password
FROM users

代替:

SELECT *
FROM users

您只需要在需要時選擇激活列。

如果激活是暫時的,或者散列將某人定義為激活,則使其與眾不同。 否則,那真的沒關系。

但是,在沒有更多信息的情況下,兩者之間的關系不一定或多或少。 如果對每行中的值組合施加唯一約束,並使用NOT NULL約束設置每一列,則第一個約束將是非常相關的。

當數據的正確性隨着時間的推移與應用程序對數據的處理同樣重要(如果不是更重要)時,和/或當數據結構的正確性/一致性對於應用程序的正確操作至關重要時,您可以使用關系設計。但不一定由應用程序自己的操作來保證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM