You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
digital-rmb-backend/src/main/resources/db/manual/institution_identifier_trai...

326 lines
12 KiB
SQL

CREATE TABLE IF NOT EXISTS institution_identifier_application (
id BIGINT PRIMARY KEY,
bank_code VARCHAR(32) NOT NULL,
user_id VARCHAR(36) NOT NULL,
school_id BIGINT NOT NULL,
class_id BIGINT NOT NULL,
request_timestamp CHAR(14) NOT NULL,
original_text VARCHAR(80) NOT NULL,
digest CHAR(64),
bank_signature VARCHAR(512),
status VARCHAR(32) NOT NULL,
verification_key_id VARCHAR(64),
signature_valid BOOLEAN,
digest_matches BOOLEAN,
signing_key_id VARCHAR(64),
institution_identifier VARCHAR(32),
central_bank_signature VARCHAR(512),
training_round INT NOT NULL DEFAULT 1,
scoring_criteria INT NOT NULL DEFAULT 0,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
updated_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT uk_identifier_training_round UNIQUE (bank_code, created_by, training_round)
);
CREATE INDEX IF NOT EXISTS idx_institution_identifier_status
ON institution_identifier_application(status);
CREATE INDEX IF NOT EXISTS idx_identifier_training_user
ON institution_identifier_application(created_by, training_round);
CREATE TABLE IF NOT EXISTS institution_identifier_operation_log (
id BIGINT PRIMARY KEY,
application_id BIGINT NOT NULL,
operation VARCHAR(32) NOT NULL,
from_status VARCHAR(32),
to_status VARCHAR(32) NOT NULL,
operation_detail VARCHAR(1024) NOT NULL,
created_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT fk_identifier_operation_application
FOREIGN KEY (application_id) REFERENCES institution_identifier_application(id)
);
CREATE INDEX IF NOT EXISTS idx_identifier_operation_application
ON institution_identifier_operation_log(application_id);
CREATE TABLE IF NOT EXISTS institution_identifier_training_error (
id BIGINT PRIMARY KEY,
application_id BIGINT NOT NULL,
training_round INT NOT NULL,
error_sequence INT NOT NULL,
error_type VARCHAR(32) NOT NULL,
operation_step VARCHAR(32) NOT NULL,
application_status VARCHAR(32) NOT NULL,
provided_key_id VARCHAR(64),
error_message VARCHAR(512) NOT NULL,
created_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT uk_identifier_training_error UNIQUE (application_id, error_sequence),
CONSTRAINT fk_identifier_error_application
FOREIGN KEY (application_id) REFERENCES institution_identifier_application(id)
);
CREATE INDEX IF NOT EXISTS idx_identifier_error_application
ON institution_identifier_training_error(application_id);
CREATE TABLE IF NOT EXISTS institution_sm2_key (
id BIGINT PRIMARY KEY,
key_id VARCHAR(64) NOT NULL,
key_name VARCHAR(64) NOT NULL,
key_owner VARCHAR(32) NOT NULL,
key_purpose VARCHAR(32) NOT NULL,
user_id VARCHAR(36) NOT NULL,
school_id BIGINT NOT NULL,
class_id BIGINT NOT NULL,
public_key VARCHAR(256) NOT NULL,
encrypted_private_key VARCHAR(512) NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
updated_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE
);
CREATE INDEX IF NOT EXISTS idx_institution_sm2_key_subject
ON institution_sm2_key(user_id, school_id, class_id, key_owner, deleted);
CREATE TABLE IF NOT EXISTS institution_sm2_key_audit (
id BIGINT PRIMARY KEY,
key_record_id BIGINT NOT NULL,
key_id VARCHAR(64) NOT NULL,
operation VARCHAR(32) NOT NULL,
user_id VARCHAR(36) NOT NULL,
school_id BIGINT NOT NULL,
class_id BIGINT NOT NULL,
operation_detail VARCHAR(512) NOT NULL,
created_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT fk_institution_key_audit_key
FOREIGN KEY (key_record_id) REFERENCES institution_sm2_key(id)
);
CREATE INDEX IF NOT EXISTS idx_institution_key_audit_record
ON institution_sm2_key_audit(key_record_id, created_at);
CREATE TABLE IF NOT EXISTS currency_generation_request (
id BIGINT PRIMARY KEY,
identifier_application_id BIGINT NOT NULL,
institution_identifier VARCHAR(32) NOT NULL,
full_institution_identifier CHAR(64) NOT NULL,
amount DECIMAL(18, 2) NOT NULL,
delivery_node_code VARCHAR(32) NOT NULL,
request_timestamp CHAR(14) NOT NULL,
request_original_text VARCHAR(256),
request_digest CHAR(64),
bank_signature VARCHAR(512),
signing_key_id VARCHAR(64),
request_message VARCHAR(2048),
status VARCHAR(32) NOT NULL,
user_id VARCHAR(36) NOT NULL,
school_id BIGINT NOT NULL,
class_id BIGINT NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
updated_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT fk_currency_request_identifier_application
FOREIGN KEY (identifier_application_id) REFERENCES institution_identifier_application(id)
);
CREATE INDEX IF NOT EXISTS idx_currency_request_identifier_application
ON currency_generation_request(identifier_application_id, user_id, school_id, class_id, deleted);
CREATE INDEX IF NOT EXISTS idx_currency_request_status
ON currency_generation_request(status);
CREATE TABLE IF NOT EXISTS currency_generation_request_operation_log (
id BIGINT PRIMARY KEY,
request_id BIGINT NOT NULL,
operation VARCHAR(32) NOT NULL,
from_status VARCHAR(32),
to_status VARCHAR(32) NOT NULL,
operation_detail VARCHAR(1024) NOT NULL,
created_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT fk_currency_request_operation_request
FOREIGN KEY (request_id) REFERENCES currency_generation_request(id)
);
CREATE INDEX IF NOT EXISTS idx_currency_request_operation_request
ON currency_generation_request_operation_log(request_id, created_at);
CREATE TABLE IF NOT EXISTS currency_generation_verification (
id BIGINT PRIMARY KEY,
request_id BIGINT NOT NULL,
request_message VARCHAR(2048) NOT NULL,
request_original_text VARCHAR(256) NOT NULL,
request_digest CHAR(64) NOT NULL,
bank_signature VARCHAR(512) NOT NULL,
bank_key_id VARCHAR(64) NOT NULL,
amount DECIMAL(18, 2) NOT NULL,
signature_valid BOOLEAN,
recomputed_digest CHAR(64),
digest_matches BOOLEAN,
total_quota DECIMAL(18, 2),
used_quota DECIMAL(18, 2),
remaining_quota DECIMAL(18, 2),
quota_sufficient BOOLEAN,
central_bank_key_id VARCHAR(64),
central_bank_signature VARCHAR(512),
confirmation_time CHAR(14),
confirmation_message VARCHAR(2048),
status VARCHAR(32) NOT NULL,
user_id VARCHAR(36) NOT NULL,
school_id BIGINT NOT NULL,
class_id BIGINT NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
updated_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT uk_currency_verification_request UNIQUE (request_id),
CONSTRAINT fk_currency_verification_request
FOREIGN KEY (request_id) REFERENCES currency_generation_request(id)
);
CREATE INDEX IF NOT EXISTS idx_currency_verification_subject
ON currency_generation_verification(request_id, user_id, school_id, class_id, deleted);
CREATE TABLE IF NOT EXISTS currency_generation_verification_operation_log (
id BIGINT PRIMARY KEY,
verification_id BIGINT NOT NULL,
operation VARCHAR(32) NOT NULL,
from_status VARCHAR(32),
to_status VARCHAR(32) NOT NULL,
operation_detail VARCHAR(1024) NOT NULL,
created_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT fk_currency_verification_operation
FOREIGN KEY (verification_id) REFERENCES currency_generation_verification(id)
);
CREATE INDEX IF NOT EXISTS idx_currency_verification_operation
ON currency_generation_verification_operation_log(verification_id, created_at);
CREATE TABLE IF NOT EXISTS stu_module_score_details (
id VARCHAR(64) NOT NULL,
moudule VARCHAR(100) NOT NULL,
learning_projects VARCHAR(100),
assessment_items VARCHAR(100),
scoring_criteria VARCHAR(100),
completion_status VARCHAR(100),
score_project DOUBLE,
user_id VARCHAR(64) NOT NULL,
total_score DECIMAL(10, 2) NOT NULL DEFAULT 100.00,
serial_number INT,
schedule DOUBLE,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (id),
CONSTRAINT uk_user_moudule_serial UNIQUE (user_id, moudule, serial_number)
);
CREATE INDEX IF NOT EXISTS idx_user_moudule
ON stu_module_score_details(user_id, moudule);
CREATE TABLE IF NOT EXISTS transaction_information_identifier (
id BIGINT PRIMARY KEY,
verification_id BIGINT NOT NULL,
request_id BIGINT NOT NULL,
identifier_application_id BIGINT NOT NULL,
amount DECIMAL(18, 2) NOT NULL,
institution_identifier VARCHAR(32) NOT NULL,
transaction_timestamp CHAR(14) NOT NULL,
original_text VARCHAR(256) NOT NULL,
digest CHAR(64),
transaction_identifier VARCHAR(80),
quota_request_id VARCHAR(32),
quota_original_text VARCHAR(256),
quota_digest CHAR(64),
quota_signature VARCHAR(512),
quota_signing_key_id VARCHAR(64),
quota_request_message VARCHAR(2048),
quota_verification_key_id VARCHAR(64),
quota_recomputed_digest VARCHAR(64),
quota_signature_digest VARCHAR(64),
quota_signature_valid BOOLEAN,
quota_digest_matches BOOLEAN,
status VARCHAR(32) NOT NULL,
user_id VARCHAR(36) NOT NULL,
school_id BIGINT NOT NULL,
class_id BIGINT NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
updated_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT uk_transaction_identifier_verification UNIQUE
(verification_id, user_id, school_id, class_id),
CONSTRAINT fk_transaction_identifier_verification FOREIGN KEY (verification_id)
REFERENCES currency_generation_verification(id),
CONSTRAINT fk_transaction_identifier_request FOREIGN KEY (request_id)
REFERENCES currency_generation_request(id),
CONSTRAINT fk_transaction_identifier_application FOREIGN KEY (identifier_application_id)
REFERENCES institution_identifier_application(id)
);
CREATE INDEX IF NOT EXISTS idx_transaction_identifier_subject
ON transaction_information_identifier(user_id, school_id, class_id, status, deleted);
CREATE TABLE IF NOT EXISTS transaction_information_identifier_operation_log (
id BIGINT PRIMARY KEY,
transaction_identifier_id BIGINT NOT NULL,
operation VARCHAR(32) NOT NULL,
from_status VARCHAR(32),
to_status VARCHAR(32) NOT NULL,
operation_detail VARCHAR(1024) NOT NULL,
created_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT fk_transaction_identifier_operation FOREIGN KEY (transaction_identifier_id)
REFERENCES transaction_information_identifier(id)
);
CREATE INDEX IF NOT EXISTS idx_transaction_identifier_operation
ON transaction_information_identifier_operation_log(transaction_identifier_id, created_at);
CREATE TABLE IF NOT EXISTS control_system_signature (
id BIGINT PRIMARY KEY,
transaction_identifier_id BIGINT NOT NULL,
control_id VARCHAR(32) NOT NULL,
amount DECIMAL(18, 2) NOT NULL,
institution_identifier VARCHAR(32) NOT NULL,
transaction_identifier VARCHAR(80) NOT NULL,
original_text VARCHAR(256) NOT NULL,
digest CHAR(64),
signing_key_id VARCHAR(64),
signature VARCHAR(512),
control_signature VARCHAR(256),
response_message VARCHAR(2048),
status VARCHAR(32) NOT NULL,
user_id VARCHAR(36) NOT NULL,
school_id BIGINT NOT NULL,
class_id BIGINT NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL,
created_by VARCHAR(64) NOT NULL,
updated_by VARCHAR(64) NOT NULL,
deleted BOOLEAN NOT NULL DEFAULT FALSE,
CONSTRAINT uk_control_signature_transaction UNIQUE
(transaction_identifier_id, user_id, school_id, class_id),
CONSTRAINT fk_control_signature_transaction FOREIGN KEY (transaction_identifier_id)
REFERENCES transaction_information_identifier(id)
);
CREATE INDEX IF NOT EXISTS idx_control_signature_subject
ON control_system_signature(user_id, school_id, class_id, status, deleted);