DROP TABLE beacon_command_invocation; DROP TABLE beacon_command; CREATE TABLE beacon_file ( file_id varchar PRIMARY KEY NOT NULL, file_name varchar, beacon_source_id varchar, FOREIGN KEY (beacon_source_id) REFERENCES beacon_instance ); CREATE TABLE beacon_command ( command_id integer PRIMARY KEY AUTOINCREMENT NOT NULL, cmd_type text check (cmd_type in ('update', 'exec', 'install', 'upload', 'download', 'chdir', 'ls')), exec_command varchar, install_target varchar, upload_src varchar, download_src varchar, download_path varchar, chdir_target varchar, FOREIGN KEY (download_src) REFERENCES beacon_file ); CREATE TABLE beacon_command_invocation ( beacon_id varchar NOT NULL, command_id int NOT NULL, issue_date int NOT NULL, invoker_id int NOT NULL, invocation_date int, invocation_result varchar, PRIMARY KEY (beacon_id, command_id), FOREIGN KEY (command_id) REFERENCES beacon_command, FOREIGN KEY (beacon_id) REFERENCES beacon_instance, FOREIGN KEY (invoker_id) REFERENCES users );