lvalnegri

schema_shiny_apps

Apr 4th, 2019
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!

USERS

CREATE TABLE roles (
    role_id TINYINT(2) UNSIGNED NOT NULL,
    description CHAR(15) NOT NULL,
    visibility CHAR(50) NOT NULL,
    PRIMARY KEY (role_id)
);
CREATE TABLE users (
    user_id SMALLINT(3) UNSIGNED NOT NULL,
    name CHAR(15) NOT NULL,
    email CHAR(75) NOT NULL,
    role TINYINT(1) UNSIGNED NOT NULL COMMENT 'see roles.role_id',
    venue_id TINYINT(2) UNSIGNED NOT NULL COMMENT 'see datasets.venues.venue_id, [0] = multiple venues',
    pwd_hash CHAR(60) NOT NULL,
    PRIMARY KEY (user_id),
    UNIQUE INDEX (name),
    UNIQUE INDEX (pwd_hash),
    INDEX (venue_id)
);
CREATE TABLE users_venues (
    user_id SMALLINT(3) UNSIGNED NOT NULL COMMENT 'see users.user_id',
    venue_id TINYINT(2) UNSIGNED NOT NULL COMMENT 'see datasets.venues.venue_id',
    PRIMARY KEY (user_id, venue_id),
    INDEX (user_id),
    INDEX (venue_id)
);
CREATE TABLE actions (
    action_id TINYINT(2) UNSIGNED NOT NULL,
    description CHAR(15) NOT NULL, 
    PRIMARY KEY (action_id)
);
CREATE TABLE users_actions (
    user_action_id INT AUTO_INCREMENT PRIMARY KEY,
    app_id TINYINT(2) UNSIGNED NOT NULL,
    user_id SMALLINT(3) UNSIGNED NOT NULL,
    action_id TINYINT(2) UNSIGNED NOT NULL,
    happened_at TIMESTAMP NOT NULL,
    INDEX (app_id),
    INDEX (user_id),
    INDEX (action_id),
    INDEX (happened_at)
);
CREATE TABLE users_sessions (
    user_id smallint(3) NOT NULL,
    session_id mediumint(6) NOT NULL,
    name char(25) NOT NULL,
    saved_at TIMESTAMP NOT NULL,
    PRIMARY KEY (session_id)
);
CREATE TABLE sessions_inputs (
    session_id mediumint(6) NOT NULL,
    ui_id mediumint(6) NOT NULL,
    value char(25) NOT NULL,
    saved_at TIMESTAMP NOT NULL,
    PRIMARY KEY (session_id,ui_id)
);

SHINYAPPS

CREATE TABLE apps (
    app_id TINYINT(2) UNSIGNED NOT NULL,
    name CHAR(25) NOT NULL, 
    description CHAR(255) NULL DEFAULT NULL, 
    PRIMARY KEY (app_id),
    UNIQUE INDEX (name)
);
CREATE TABLE menu_items (
    item_code CHAR(3) NOT NULL,
    name CHAR(10) NOT NULL, 
    description CHAR(255) NULL DEFAULT NULL, 
    PRIMARY KEY (item_code)

CREATE TABLE sections (
    section_code CHAR(3) NOT NULL,
    name CHAR(15) NOT NULL, 
    description CHAR(20) NOT NULL,
    PRIMARY KEY (section_code)
);
CREATE TABLE tabs (
    tab_code CHAR(3) NOT NULL,
    name CHAR(15) NOT NULL, 
    description CHAR(20) NOT NULL,
    nature CHAR(1) NOT NULL COMMENT '(A)ttribute, (M)etric, (B)oth',
    PRIMARY KEY (tab_code)
    INDEX (nature)
);
CREATE TABLE ui_inputs (
    ui_code CHAR(20) NOT NULL, 
    name CHAR(15) NOT NULL, 
    description CHAR(50) NOT NULL,
    PRIMARY KEY (ui_id),
    INDEX (ui_code)
);
CREATE TABLE srv_outputs (
    out_code CHAR(20) NOT NULL, 
    name CHAR(15) NOT NULL, 
    description CHAR(50) NOT NULL,
    PRIMARY KEY (ui_id),
    INDEX (ui_code)
);
CREATE TABLE apps_inputs (
    app_input_id INT AUTO_INCREMENT PRIMARY KEY,
    app_id TINYINT(2) UNSIGNED NOT NULL COMMENT 'see shinyapps.apps.app_id',
    item_code CHAR(3) UNSIGNED NOT NULL,
    section_code CHAR(3) UNSIGNED NOT NULL,
    ui_code CHAR(3) NOT NULL,
    `default` CHAR(50) NOT NULL,
    is_numeric TINYINT(1) UNSIGNED NOT NULL,
    has_tracking TINYINT(1) UNSIGNED NOT NULL DEFAULT 0
);
CREATE TABLE apps_outputs (
    app_output_id INT AUTO_INCREMENT PRIMARY KEY,
    app_id TINYINT(2) UNSIGNED NOT NULL COMMENT 'see shinyapps.apps.app_id',
    item_code CHAR(3) UNSIGNED NOT NULL,
    tab_code CHAR(3) NOT NULL,
    out_code CHAR(3) NOT NULL,
    has_tracking TINYINT(1) UNSIGNED NOT NULL DEFAULT 0
);
CREATE TABLE attributes (
    app_id TINYINT(2) UNSIGNED NOT NULL,
    code CHAR(20) NOT NULL, 
    name CHAR(50) NOT NULL, 
    ntitle CHAR(30) NOT NULL, 
    `group` CHAR(30) NOT NULL, 
    gtitle CHAR(20) NOT NULL, 
    title CHAR(40) NOT NULL, 
    with_cols TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    slider TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    is_active TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    in_filter TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    in_theme TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    in_popup TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    in_download TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    has_cumulates TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    has_pct TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    PRIMARY KEY (app_id, code)
);
CREATE TABLE metrics (
    app_id TINYINT(2) UNSIGNED NOT NULL,
    code CHAR(20) NOT NULL, 
    name CHAR(50) NOT NULL, 
    title CHAR(50) NOT NULL, 
    formula CHAR(100) NOT NULL, 
    is_active TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    has_pct TINYINT(1) UNSIGNED NOT NULL COMMENT 'Flag for ',
    PRIMARY KEY (app_id, code)
);
CREATE TABLE vars_tabs (
    app_id TINYINT(2) UNSIGNED NOT NULL,
    var_type CHAR(1) COMMENT '(A)ttribute or (M)etric'
    var_code CHAR(20) NOT NULL, 
    in_tab CHAR(3) NOT NULL, 
);
Add Comment
Please, Sign In to add comment