[英]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.