{"id":22478260,"url":"https://github.com/reyhannaufal/fp-sql_c","last_synced_at":"2025-03-27T17:50:03.720Z","repository":{"id":68918596,"uuid":"375029135","full_name":"reyhannaufal/fp-SQL_C","owner":"reyhannaufal","description":"Final Project Sistem Operasi 2021","archived":false,"fork":false,"pushed_at":"2021-06-18T13:38:29.000Z","size":128,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T21:13:45.627Z","etag":null,"topics":["c"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reyhannaufal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-08T13:59:22.000Z","updated_at":"2023-03-08T23:54:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"315222a9-4fe4-48b5-b45d-af2d4bc0182d","html_url":"https://github.com/reyhannaufal/fp-SQL_C","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reyhannaufal%2Ffp-SQL_C","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reyhannaufal%2Ffp-SQL_C/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reyhannaufal%2Ffp-SQL_C/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reyhannaufal%2Ffp-SQL_C/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reyhannaufal","download_url":"https://codeload.github.com/reyhannaufal/fp-SQL_C/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245898342,"owners_count":20690459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c"],"created_at":"2024-12-06T14:22:32.007Z","updated_at":"2025-03-27T17:50:03.700Z","avatar_url":"https://github.com/reyhannaufal.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Final Project Sistem Operasi 2021\n\n### Kelompok A04\n- Ihsannur Rahman Qalbi 05111940000090\n- Muhamad Fikri Sunandar 05111940000135\n- Reyhan Naufal Rahman 05111940000171\n\n## Sistem Database Sederhana 🚀\nBagaimana Program Diakses\n- Program server berjalan sebagai daemon\n- Untuk bisa akses console database, perlu buka program client (kalau di linux seperti command mysql di bash)\n- Program client dan utama berinteraksi lewat socket\n- Program client bisa mengakses server dari mana aja\n\n\n## Autentikasi 🔒\n- Ada username dan password tertentu untuk bisa akses database yang dia punya hak. Jika root (sudo) bisa akses semua database (tidak perlu didefinisikan secara rinci haknya, hanya dia bisa akses atau nggak).\n```\nFormat\n\n./[program_client_database] -u [username] -p [password]`\n\nContoh\n\n./client_databaseku -u jack -p jack123\n```\n\n- Username, password, dan hak akses db disimpan di suatu database juga, tapi tidak ada user yang bisa akses database tersebut kecuali mengakses menggunakan root.\n- User root sudah ada dari awal.\n\nContoh cara user root mengakses program client\n\n```\nsudo ./client_database\n```\n \n- Menambahkan user (Hanya bisa dilakukan user root)\n```\n Format\n\nCREATE USER [nama_user] IDENTIFIED BY [password_user];\n\nContoh\n\nCREATE USER jack IDENTIFIED BY jack123;\n```\n\n## Authorisasi 🔑\n\n- Untuk dapat mengakses database yang dia punya permission dengan command. Pembuatan tabel dan semua DML butuh untuk mengakses database terlebih dahulu.\n```\nFormat\n\nUSE [nama_database];\n\nContoh\n\nUSE database1;\n```\n\n- Yang bisa memberikan permission atas database untuk suatu user hanya root.\n```\nFormat\n\nGRANT PERMISSION [nama_database] INTO [nama_user];\n\nContoh\n\nGRANT PERMISSION database1 INTO user1;\n```\n\n- User hanya bisa mengakses database dimana dia diberi permission untuk database tersebut.\n\n## Data Definition Language 👷‍♀️\n\n- Input penamaan database, tabel, dan kolom hanya angka dan huruf.\n- Semua user bisa membuat database, otomatis user tersebut memiliki permission untuk database tersebut.\n```\nFormat\n\nCREATE DATABASE [nama_database];\n\nContoh\n\nCREATE DATABASE database1;\n```\n- Root dan user yang memiliki permission untuk suatu database untuk bisa membuat tabel untuk database tersebut, tentunya setelah mengakses database tersebut. Tipe data dari semua kolom adalah string atau integer. Jumlah kolom bebas.\n```\nFormat\n\nCREATE TABLE [nama_tabel] ([nama_kolom] [tipe_data], ...);\n\nContoh\n\nCREATE TABLE table1 (kolom1 string, kolom2 int, kolom3 string, kolom4 int);\n``` \n- Bisa melakukan DROP database, table (setelah mengakses database), dan kolom. Jika sasaran drop ada maka didrop, jika tidak ada maka biarkan.\n```\nFormat\n\nDROP [DATABASE | TABLE | COLUMN] [nama_database | nama_tabel | [nama_kolom] FROM [nama_tabel]];\n\nContoh\n\n\n# Drop Database\nDROP DATABASE database1;\n\n# Drop table\n\nDROP TABLE table1;\n\n# Drop Column\n\nDROP COLUMN kolom1 FROM table1;\n```\n\n## Data Manipulation Language 🕵️‍♀️\n\n- INSERT\nHanya bisa insert satu row per satu command. Insert sesuai dengan jumlah dan urutan kolom.\n\n```\n# Format\n\nINSERT INTO [nama_tabel] ([value], ...);\n```\n```\n# Contoh\n\nINSERT INTO table1 (‘value1’, 2, ‘value3’, 4);\n```\n\n- UPDATE\nHanya bisa update satu kolom per satu command.\n\n```\n# Format\n\nUPDATE [nama_tabel] SET [nama_kolom]=[value];\n\n# Contoh\n\nUPDATE table1 SET kolom1=’new_value1’;\n```\n\n- DELETE\nDelete data yang ada di tabel.\n\n```\n# Format\n\nDELETE FROM [nama_tabel];\n\n# Contoh\n\nDELETE FROM table1;\n```\n\n- SELECT\n```\n# Format\n\nSELECT [nama_kolom, … | *] FROM [nama_tabel];\n\n# Contoh 1\n\nSELECT kolom1, kolom2 FROM table1;\n\n# Contoh 2\n\nSELECT * FROM table1;\n```\n\n- WHERE\nCommand UPDATE, SELECT, dan DELETE bisa dikombinasikan dengan WHERE. WHERE hanya untuk satu kondisi. Dan hanya ‘=’.\n\n```\n# Format\n\n[Command UPDATE, SELECT, DELETE] WHERE [nama_kolom]=[value];\n\n\n# Contoh\n\nDELETE FROM table1 WHERE kolom1=’value1’;\n```\n\n## Logging 👩‍💻\n- Setiap command yang dipakai harus dilakukan logging ke suatu file dengan format. Jika yang eksekusi root, maka username root.\n\n```\n# Format di dalam log\n\ntimestamp(yyyy-mm-dd hh:mm:ss):username:command\n\t\n\t\t\n# Contoh\n\n2021-05-19 02:05:15:jack:SELECT FROM table1\n```\n\n## Reliability 🧑‍🏫\n- Harus membuat suatu program terpisah untuk dump database ke command-command yang akan di print ke layar. Untuk memasukkan ke file, gunakan redirection. Program ini tentunya harus melalui proses autentikasi terlebih dahulu. Ini sampai database level saja, tidak perlu sampai tabel. \n\n```\n# Format\n\n./[program_dump_database] -u [username] -p [password] [nama_database]\n\n# Contoh\n\n./databasedump -u jack -p jack123 database1 \u003e database1.backup\n```\n\nContoh hasil isi file database1.backup:\n\n```\nDROP TABLE table1;\nCREATE TABLE table1 (kolom1 string, kolom2 int, kolom3 string, kolom4 int);\n\nINSERT INTO table1 (‘abc’, 1, ‘bcd’, 2);\nINSERT INTO table1 (‘abc’, 1, ‘bcd’, 2);\nINSERT INTO table1 (‘abc’, 1, ‘bcd’, 2);\nINSERT INTO table1 (‘abc’, 1, ‘bcd’, 2);\n\nDROP TABLE table2;\nCREATE TABLE table2 (kolom1 string, kolom2 int, kolom3 string, kolom4 int);\n\nINSERT INTO table2 (‘abc’, 1, ‘bcd’, 2);\nINSERT INTO table2 (‘abc’, 1, ‘bcd’, 2);\nINSERT INTO table2 (‘abc’, 1, ‘bcd’, 2);\nINSERT INTO table2 (‘abc’, 1, ‘bcd’, 2);\n```\n- Program dump database dijalankan tiap jam untuk semua database dan log, lalu di zip sesuai timestamp, lalu log dikosongkan kembali.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freyhannaufal%2Ffp-sql_c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freyhannaufal%2Ffp-sql_c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freyhannaufal%2Ffp-sql_c/lists"}