我正在設計一個RESTful Web應用程序,它將爲其他幾個應用程序提供一個身份驗證系統。其他應用程序將通過HTTP查詢此應用程序,並取回描述經過驗證的用戶的XML。批評我的認證系統數據庫模式?
認證的應用程序需要保持跟蹤哪些用戶允許做什麼上的應用程序。
我正在制定數據庫模式。以下是我的初始設計。 (假定每個表都有一個id
列。)
applications # The various client apps that will query this auth system.
------------
name
users # Table simplified for discussion
-----
username
password
email
roles
-----
name
application_id
roles_users
-----------
role_id
user_id
的想法是說,有人試圖在「設備清單」的應用程序執行管理功能。因此「設備庫存」會對授權系統說「讓用戶使用用戶名xxx和密碼yyy」。然後它會查看返回的(通過ActiveResource)User
對象並檢查其roles
數組是否包含名稱爲「ADMIN」的Role
,該名稱本身屬於名稱爲「Equipment Inventory」的Application
對象。
或許這將是更好的消除applications
表,並有更多的角色,例如「equipment_inventory_admin
」,「equipment_inventory_readonly
」,「job_tracker_admin
」等
什麼是更重要的,標準化的應用程序實體或簡化表結構?也許畢竟這種打字我剛剛回答了我自己的問題,但意見或建議將是最受歡迎的。
我不會合並這些表,這是一種多對多的關係。 – 2009-01-29 22:32:12