CREATE TABLE customer (
c_id CHAR(8) NOT NULL,
c_name VARCHAR(128) NOT NULL,
c_gender CHAR(1) NOT NULL,
CONSTRAINT customer_pkey PRIMARY KEY (c_id)
);
CREATE TABLE membership (
m_id CHAR(8) NOT NULL,
m_telephone VARCHAR(16) NOT NULL,
m_alamat VARCHAR(256) NOT NULL,
m_start_date DATE NOT NULL,
m_expired_dat DATE NOT NULL,
m_type VARCHAR(32) NOT NULL,
customer_c_id CHAR(8) NOT NULL,
CONSTRAINT membership_pkey PRIMARY KEY (m_id),
CONSTRAINT mempership_fkey FOREIGN KEY (customer_c_id) REFERENCES customer(c_id)
);
CREATE TABLE worker (
w_id CHAR(8) NOT NULL,
w_name VARCHAR(128) NOT NULL,
w_alamat VARCHAR(256) NOT NULL,
w_telephone VARCHAR(16) NOT NULL,
w_gender CHAR(1) NOT NULL,
CONSTRAINT worker_pkey PRIMARY KEY (w_id)
);
CREATE TABLE product (
p_id CHAR(8) NOT NULL,
p_name VARCHAR(128) NOT NULL,
p_price DECIMAL(8, 2) NOT NULL,
p_stock INT NOT NULL,
CONSTRAINT product_pkey PRIMARY KEY (p_id)
);
CREATE TABLE personal_trainer (
pt_id CHAR(8) NOT NULL,
pt_name VARCHAR(128) NOT NULL,
pt_alamat VARCHAR(258) NOT NULL,
pt_telephone VARCHAR(16) NOT NULL,
pt_gender CHAR(1) NOT NULL,
pt_price_per_hour DECIMAL(10, 2) NOT NULL,
CONSTRAINT personal_trainer_pkey PRIMARY KEY (pt_id)
);
CREATE TABLE receipt (
r_id CHAR(12) NOT NULL,
r_type VARCHAR(64) NOT NULL,
r_date TIMESTAMP NOT NULL,
r_final_price DECIMAL(10, 2) NOT NULL,
c_id CHAR(8) NOT NULL,
w_id CHAR(8) NOT NULL,
CONSTRAINT receipt_pkey PRIMARY KEY (r_id),
CONSTRAINT receipt_fkey_c FOREIGN KEY (c_id) REFERENCES customer (c_id),
CONSTRAINT receipt_fkey_w FOREIGN KEY (w_id) REFERENCES worker (w_id)
);
CREATE TABLE receipt_product (
r_id CHAR(12) NOT NULL,
p_id CHAR(8) NOT NULL,
rp_amount INT NOT NULL,
rp_discount INT NOT NULL,
CONSTRAINT receipt_product_pkey PRIMARY KEY (r_id, p_id),
CONSTRAINT receipt_product_fkey_r FOREIGN KEY (r_id) REFERENCES receipt (r_id),
CONSTRAINT receipt_product_fkey_p FOREIGN KEY (p_id) REFERENCES product (p_id)
);
CREATE TABLE personal_trainer_receipt (
pt_id CHAR(8) NOT NULL,
r_id CHAR(12) NOT NULL,
ptr_price_per_hour INT NOT NULL,
ptr_hour_amount INT NOT NULL,
ptr_discount INT NOT NULL,
CONSTRAINT personal_trainer_receipt_pkey PRIMARY KEY (pt_id, r_id),
CONSTRAINT personal_trainer_receipt_fkey_pt FOREIGN KEY (pt_id) REFERENCES personal_trainer (pt_id),
CONSTRAINT personal_trainer_receipt_fkey_r FOREIGN KEY (r_id) REFERENCES receipt (r_id)
);
CREATE TABLE training_session (
ts_id CHAR(10) NOT NULL,
ts_start_time TIMESTAMP NOT NULL,
ts_end_time TIMESTAMP NOT NULL,
c_id CHAR(8) NOT NULL,
CONSTRAINT training_session_pkey PRIMARY KEY (ts_id),
CONSTRAINT training_session_fkey FOREIGN KEY (c_id) REFERENCES customer (c_id)
);
CREATE TABLE training_session_personal_trainer (
ts_id CHAR(10) NOT NULL,
pt_id CHAR(8) NOT NULL,
CONSTRAINT training_session_personal_trainer_pkey PRIMARY KEY (ts_id, pt_id),
CONSTRAINT training_session_personal_trainer_fkey_ts FOREIGN KEY (ts_id) REFERENCES training_session (ts_id),
CONSTRAINT training_session_personal_trainer_fkey_pt FOREIGN KEY (pt_id) REFERENCES personal_trainer (pt_id)
);
Q1JFQVRFIFRBQkxFIGN1c3RvbWVyICgKCWNfaWQgQ0hBUig4KSBOT1QgTlVMTCwKCWNfbmFtZSBWQVJDSEFSKDEyOCkgTk9UIE5VTEwsCgljX2dlbmRlciBDSEFSKDEpIE5PVCBOVUxMLAoJQ09OU1RSQUlOVCBjdXN0b21lcl9wa2V5IFBSSU1BUlkgS0VZIChjX2lkKQopOwoKQ1JFQVRFIFRBQkxFIG1lbWJlcnNoaXAgKAoJbV9pZCBDSEFSKDgpIE5PVCBOVUxMLAoJbV90ZWxlcGhvbmUgVkFSQ0hBUigxNikgTk9UIE5VTEwsCgltX2FsYW1hdCBWQVJDSEFSKDI1NikgTk9UIE5VTEwsCgltX3N0YXJ0X2RhdGUgREFURSBOT1QgTlVMTCwKCW1fZXhwaXJlZF9kYXQgREFURSBOT1QgTlVMTCwKCW1fdHlwZSBWQVJDSEFSKDMyKSBOT1QgTlVMTCwKCWN1c3RvbWVyX2NfaWQgQ0hBUig4KSBOT1QgTlVMTCwKCUNPTlNUUkFJTlQgbWVtYmVyc2hpcF9wa2V5IFBSSU1BUlkgS0VZIChtX2lkKSwKCUNPTlNUUkFJTlQgbWVtcGVyc2hpcF9ma2V5IEZPUkVJR04gS0VZIChjdXN0b21lcl9jX2lkKSBSRUZFUkVOQ0VTIGN1c3RvbWVyKGNfaWQpCik7CgpDUkVBVEUgVEFCTEUgd29ya2VyICgKCXdfaWQgQ0hBUig4KSBOT1QgTlVMTCwKCXdfbmFtZSBWQVJDSEFSKDEyOCkgTk9UIE5VTEwsCgl3X2FsYW1hdCBWQVJDSEFSKDI1NikgTk9UIE5VTEwsCgl3X3RlbGVwaG9uZSBWQVJDSEFSKDE2KSBOT1QgTlVMTCwKCXdfZ2VuZGVyIENIQVIoMSkgTk9UIE5VTEwsCglDT05TVFJBSU5UIHdvcmtlcl9wa2V5IFBSSU1BUlkgS0VZICh3X2lkKQopOwoKQ1JFQVRFIFRBQkxFIHByb2R1Y3QgKAoJcF9pZCBDSEFSKDgpIE5PVCBOVUxMLAoJcF9uYW1lIFZBUkNIQVIoMTI4KSBOT1QgTlVMTCwKCXBfcHJpY2UgREVDSU1BTCg4LCAyKSBOT1QgTlVMTCwKCXBfc3RvY2sgSU5UIE5PVCBOVUxMLAoJQ09OU1RSQUlOVCBwcm9kdWN0X3BrZXkgUFJJTUFSWSBLRVkgKHBfaWQpCik7CgpDUkVBVEUgVEFCTEUgcGVyc29uYWxfdHJhaW5lciAoCglwdF9pZCBDSEFSKDgpIE5PVCBOVUxMLAoJcHRfbmFtZSBWQVJDSEFSKDEyOCkgTk9UIE5VTEwsCglwdF9hbGFtYXQgVkFSQ0hBUigyNTgpIE5PVCBOVUxMLAoJcHRfdGVsZXBob25lIFZBUkNIQVIoMTYpIE5PVCBOVUxMLAoJcHRfZ2VuZGVyIENIQVIoMSkgTk9UIE5VTEwsCglwdF9wcmljZV9wZXJfaG91ciBERUNJTUFMKDEwLCAyKSBOT1QgTlVMTCwKCUNPTlNUUkFJTlQgcGVyc29uYWxfdHJhaW5lcl9wa2V5IFBSSU1BUlkgS0VZIChwdF9pZCkKKTsKCkNSRUFURSBUQUJMRSByZWNlaXB0ICgKCXJfaWQgQ0hBUigxMikgTk9UIE5VTEwsCglyX3R5cGUgVkFSQ0hBUig2NCkgTk9UIE5VTEwsCglyX2RhdGUgVElNRVNUQU1QIE5PVCBOVUxMLAoJcl9maW5hbF9wcmljZSBERUNJTUFMKDEwLCAyKSBOT1QgTlVMTCwKCWNfaWQgQ0hBUig4KSBOT1QgTlVMTCwKCXdfaWQgQ0hBUig4KSBOT1QgTlVMTCwKCUNPTlNUUkFJTlQgcmVjZWlwdF9wa2V5IFBSSU1BUlkgS0VZIChyX2lkKSwKCUNPTlNUUkFJTlQgcmVjZWlwdF9ma2V5X2MgRk9SRUlHTiBLRVkgKGNfaWQpIFJFRkVSRU5DRVMgY3VzdG9tZXIgKGNfaWQpLAoJQ09OU1RSQUlOVCByZWNlaXB0X2ZrZXlfdyBGT1JFSUdOIEtFWSAod19pZCkgUkVGRVJFTkNFUyB3b3JrZXIgKHdfaWQpCik7CgpDUkVBVEUgVEFCTEUgcmVjZWlwdF9wcm9kdWN0ICgKCXJfaWQgQ0hBUigxMikgTk9UIE5VTEwsCglwX2lkIENIQVIoOCkgTk9UIE5VTEwsCglycF9hbW91bnQgSU5UIE5PVCBOVUxMLAoJcnBfZGlzY291bnQgSU5UIE5PVCBOVUxMLAoJQ09OU1RSQUlOVCByZWNlaXB0X3Byb2R1Y3RfcGtleSBQUklNQVJZIEtFWSAocl9pZCwgcF9pZCksCglDT05TVFJBSU5UIHJlY2VpcHRfcHJvZHVjdF9ma2V5X3IgRk9SRUlHTiBLRVkgKHJfaWQpIFJFRkVSRU5DRVMgcmVjZWlwdCAocl9pZCksCglDT05TVFJBSU5UIHJlY2VpcHRfcHJvZHVjdF9ma2V5X3AgRk9SRUlHTiBLRVkgKHBfaWQpIFJFRkVSRU5DRVMgcHJvZHVjdCAocF9pZCkKKTsKCkNSRUFURSBUQUJMRSBwZXJzb25hbF90cmFpbmVyX3JlY2VpcHQgKAoJcHRfaWQgQ0hBUig4KSBOT1QgTlVMTCwKCXJfaWQgQ0hBUigxMikgTk9UIE5VTEwsCglwdHJfcHJpY2VfcGVyX2hvdXIgSU5UIE5PVCBOVUxMLAoJcHRyX2hvdXJfYW1vdW50IElOVCBOT1QgTlVMTCwKCXB0cl9kaXNjb3VudCBJTlQgTk9UIE5VTEwsCglDT05TVFJBSU5UIHBlcnNvbmFsX3RyYWluZXJfcmVjZWlwdF9wa2V5IFBSSU1BUlkgS0VZIChwdF9pZCwgcl9pZCksCglDT05TVFJBSU5UIHBlcnNvbmFsX3RyYWluZXJfcmVjZWlwdF9ma2V5X3B0IEZPUkVJR04gS0VZIChwdF9pZCkgUkVGRVJFTkNFUyBwZXJzb25hbF90cmFpbmVyIChwdF9pZCksCglDT05TVFJBSU5UIHBlcnNvbmFsX3RyYWluZXJfcmVjZWlwdF9ma2V5X3IgRk9SRUlHTiBLRVkgKHJfaWQpIFJFRkVSRU5DRVMgcmVjZWlwdCAocl9pZCkKKTsKCkNSRUFURSBUQUJMRSB0cmFpbmluZ19zZXNzaW9uICgKCXRzX2lkIENIQVIoMTApIE5PVCBOVUxMLAoJdHNfc3RhcnRfdGltZSBUSU1FU1RBTVAgTk9UIE5VTEwsCgl0c19lbmRfdGltZSBUSU1FU1RBTVAgTk9UIE5VTEwsCgljX2lkIENIQVIoOCkgTk9UIE5VTEwsCglDT05TVFJBSU5UIHRyYWluaW5nX3Nlc3Npb25fcGtleSBQUklNQVJZIEtFWSAodHNfaWQpLAoJQ09OU1RSQUlOVCB0cmFpbmluZ19zZXNzaW9uX2ZrZXkgRk9SRUlHTiBLRVkgKGNfaWQpIFJFRkVSRU5DRVMgY3VzdG9tZXIgKGNfaWQpCik7CgpDUkVBVEUgVEFCTEUgdHJhaW5pbmdfc2Vzc2lvbl9wZXJzb25hbF90cmFpbmVyICgKCXRzX2lkIENIQVIoMTApIE5PVCBOVUxMLAoJcHRfaWQgQ0hBUig4KSBOT1QgTlVMTCwKCUNPTlNUUkFJTlQgdHJhaW5pbmdfc2Vzc2lvbl9wZXJzb25hbF90cmFpbmVyX3BrZXkgUFJJTUFSWSBLRVkgKHRzX2lkLCBwdF9pZCksCglDT05TVFJBSU5UIHRyYWluaW5nX3Nlc3Npb25fcGVyc29uYWxfdHJhaW5lcl9ma2V5X3RzIEZPUkVJR04gS0VZICh0c19pZCkgUkVGRVJFTkNFUyB0cmFpbmluZ19zZXNzaW9uICh0c19pZCksCglDT05TVFJBSU5UIHRyYWluaW5nX3Nlc3Npb25fcGVyc29uYWxfdHJhaW5lcl9ma2V5X3B0IEZPUkVJR04gS0VZIChwdF9pZCkgUkVGRVJFTkNFUyBwZXJzb25hbF90cmFpbmVyIChwdF9pZCkKKTs=