2015-10-06 58 views
0

模擬數據庫中某些用戶操作的最佳方法是什麼?讓說你可以一個可擴展的一套樣的作用:登錄,退出,檔案更新和停用等等....作爲枚舉或操作的數據庫建模字符串爲布爾值?

第一種方法存儲在一列的行動作爲字符串....

CREATE TABLE user_actions 
(
    id bigserial NOT NULL, 
    user_id integer, 
    created_on timestamp with time zone NOT NULL, 
    action character varying(20) NOT NULL, 
) 

或創建每個動作的布爾列,更增加了新的行動時更多,但也許更快更容易搜索...

CREATE TABLE user_actions 
(
    id bigserial NOT NULL, 
    user_id integer, 
    created_on timestamp with time zone NOT NULL, 
    login boolean NOT NULL, 
    logout boolean NOT NULL, 
    profile_update boolean NOT NULL, 
    profile_deactivated boolean NOT NULL, 
) 

希望得到您的意見和建議

回答

1

我會分裂兩個。使用整數鍵創建另一個表,將其稱爲「AVAILABLE_ACTIONS」,您可以將它用作USER_ACTIONS表的外鍵。這可以讓您獲得更好的性能,而不必在每次有新動作出現時都發出DDL。