簡體   English   中英

在mysql數據庫中,哪種保存權限的方法更有效?

[英]which way of saving permissions is more efficient in a mysql database?

我想同時保存單個用戶和用戶組的權限。 在我的mysql數據庫中,我有一個權限表,其中存儲了權限名稱和權限ID。 我有一個用戶表,其中存儲了用戶名,密碼等,其中還包含一個ID,並且我有一個組表,其中存儲了組名和組ID。

現在最有效的選擇是什么? 要制作2個表,一個表包含用戶權限,另一個表包含組權限,因此如下所示:

int group id | int permission id

int user id | int permission id

還是最好有一個這樣的桌子?

int id | int permission id | enum('user','group')

我建議使用兩個表。

首先,您可以通過檢查第一個表中的組權限以及是否沒有組權限來搜索用戶權限來減少查找時間。

其次,其他程序員將更容易理解。

我懷疑您的兩種方法之間會有很大的性能差異。 但是,與所有性能和優化問題一樣,感覺和猜測並不重要,只有概要分析的結果才重要。 哪種效率更高取決於您的數據,數據庫,訪問模式以及上下文中的“效率”是什么(空間,時間,開發人員的工作量或最終的貨幣成本?)。

也就是說,使用兩個表是一個更好的結構,因為它使您可以將組權限表中的外鍵放回組表,將用戶權限表中的外鍵放回用戶表。 即使在一個表中速度更快,我還是要兩個:數據完整性比浪費幾個µs的處理器時間更重要,但快速訪問不可靠或損壞的數據並沒有多大意義。

第一種方法看起來更節省時間,第二種方法看起來更節省空間。 為了獲得唯一索引的速度,在第二種情況下,您必須在第一和第三字段上建立索引。


再仔細考慮一下,用第二種方法做的任何潛在收益都不值得,IMO。 可能有第三種方法,但是在您發布的兩種方法中,第一種方法更優越。 簡單,干凈,快速。

暫無
暫無

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

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