├── multi-bahasa.puml └── multi-bahasa.sql /multi-bahasa.puml: -------------------------------------------------------------------------------- 1 | @startuml 2 | 3 | entity Categories { 4 | * id VARCHAR(100) <> 5 | -- 6 | * position INT NOT NULL 7 | } 8 | 9 | entity CategoriesTranslations { 10 | * category_id VARCHAR(100) <> <> 11 | * language VARCHAR(100) <> 12 | -- 13 | * name VARCHAR(100) NOT NULL 14 | * description TEXT 15 | } 16 | 17 | Categories ||--o{ CategoriesTranslations 18 | 19 | @enduml -------------------------------------------------------------------------------- /multi-bahasa.sql: -------------------------------------------------------------------------------- 1 | CREATE database studikasus_multi_bahasa; 2 | 3 | USE studikasus_multi_bahasa; 4 | 5 | CREATE TABLE categories 6 | ( 7 | id VARCHAR(100), 8 | position INT, 9 | PRIMARY KEY (id) 10 | ) ENGINE InnoDB; 11 | 12 | DESCRIBE categories; 13 | 14 | INSERT INTO categories(id, position) 15 | VALUES ('FOOD', 1); 16 | INSERT INTO categories(id, position) 17 | VALUES ('GADGET', 2); 18 | INSERT INTO categories(id, position) 19 | VALUES ('FASHION', 3); 20 | 21 | SELECT * 22 | FROM categories 23 | ORDER BY position; 24 | 25 | CREATE TABLE categories_translations 26 | ( 27 | category_id VARCHAR(100) NOT NULL, 28 | language VARCHAR(100) NOT NULL, 29 | name VARCHAR(100) NOT NULL, 30 | description TEXT, 31 | PRIMARY KEY (category_id, language) 32 | ) ENGINE InnoDB; 33 | 34 | DESC categories_translations; 35 | 36 | ALTER TABLE categories_translations 37 | ADD CONSTRAINT fk_categories_translation 38 | FOREIGN KEY (category_id) REFERENCES categories (id); 39 | 40 | INSERT INTO categories_translations(category_id, language, name, description) 41 | VALUES ('FOOD', 'in_ID', 'Makanan', 'Deskripsi Makanan'); 42 | INSERT INTO categories_translations(category_id, language, name, description) 43 | VALUES ('FOOD', 'en_US', 'Food', 'Food Description'); 44 | INSERT INTO categories_translations(category_id, language, name, description) 45 | VALUES ('GADGET', 'in_ID', 'Gawai', 'Deskripsi Gawai'); 46 | INSERT INTO categories_translations(category_id, language, name, description) 47 | VALUES ('GADGET', 'en_US', 'Gadget', 'Gadget Description'); 48 | 49 | SELECT * FROM categories 50 | JOIN categories_translations ct on categories.id = ct.category_id 51 | WHERE ct.language = 'en_US' ORDER BY position; --------------------------------------------------------------------------------