<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Lectures</title>
    <subtitle>Lecture notes for Software Engineering Technology, Politeknik Negeri Batam.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://mroczect.biz.id/lectures/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-09-29T00:00:00+00:00</updated>
    <id>https://mroczect.biz.id/lectures/atom.xml</id>
    <entry xml:lang="en">
        <title>Pertemuan 3 — Enhanced Entity Relationship Diagram (EER-Diagram)</title>
        <published>2026-09-29T00:00:00+00:00</published>
        <updated>2026-09-29T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-3/"/>
        <id>https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-3/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-3/">&lt;p&gt;Pertemuan 2 mengajarkan cara memodelkan entitas sebagai kotak dan relasi sebagai belah ketupat. Model itu sudah cukup untuk banyak kasus — sampai kita bertemu situasi di mana &lt;strong&gt;satu entitas punya dua wajah&lt;/strong&gt;. Dosen tetap dan dosen tidak tetap, misalnya. Mereka sama-sama dosen, tapi atributnya berbeda. ERD klasik tidak punya cara elegan untuk menyatakan “dua-duanya dosen, tapi tipe A punya kolom X, tipe B punya kolom Y”. Di sinilah &lt;strong&gt;EER&lt;/strong&gt; masuk.&lt;/p&gt;
&lt;h2 id=&quot;tujuan-pembelajaran&quot;&gt;Tujuan Pembelajaran&lt;/h2&gt;
&lt;p&gt;Setelah pertemuan ini, mahasiswa mampu:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Menjelaskan keterbatasan ERD konvensional dan kapan EER dibutuhkan.&lt;/li&gt;
&lt;li&gt;Membedakan &lt;strong&gt;specialization&lt;/strong&gt; (top-down) dan &lt;strong&gt;generalization&lt;/strong&gt; (bottom-up).&lt;/li&gt;
&lt;li&gt;Menganalisis &lt;strong&gt;attribute inheritance&lt;/strong&gt; pada hirarki entitas.&lt;/li&gt;
&lt;li&gt;Menganalisis &lt;strong&gt;relationship inheritance&lt;/strong&gt; dan relasi spesifik sub-entitas.&lt;/li&gt;
&lt;li&gt;Membedakan &lt;strong&gt;disjoint&lt;/strong&gt; vs &lt;strong&gt;overlapping&lt;/strong&gt; constraint.&lt;/li&gt;
&lt;li&gt;Membedakan &lt;strong&gt;total&lt;/strong&gt; vs &lt;strong&gt;partial&lt;/strong&gt; completeness.&lt;/li&gt;
&lt;li&gt;Menerapkan &lt;strong&gt;aggregation&lt;/strong&gt; untuk menyatakan relasi antar-relasi.&lt;/li&gt;
&lt;li&gt;Mentransformasikan EER ke skema relasional (tabel).&lt;/li&gt;
&lt;li&gt;Merancang EER-Diagram untuk kasus nyata.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;1-kapan-erd-klasik-tidak-cukup&quot;&gt;1. Kapan ERD Klasik Tidak Cukup?&lt;/h2&gt;
&lt;p&gt;ERD klasik memodelkan entitas sebagai kotak tunggal. Tapi di dunia nyata, sering kali satu entitas punya &lt;strong&gt;sub-kelompok&lt;/strong&gt; dengan karakteristik berbeda.&lt;/p&gt;
&lt;h3 id=&quot;contoh-konkret-dosen&quot;&gt;Contoh Konkret: Dosen&lt;/h3&gt;
&lt;p&gt;Bayangkan kamu diminta memodelkan dosen di kampus. Setelah ngobrol dengan bagian kepegawaian, kamu dapat informasi:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Atribut&lt;/th&gt;&lt;th&gt;Dosen Tetap&lt;/th&gt;&lt;th&gt;Dosen Tidak Tetap&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sama&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;employee_id, name, gender, hp, education, home_address&lt;/td&gt;&lt;td&gt;(idem)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Khas&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;grade, start_date, length_of_working, room_id, ext_no, boss&lt;/td&gt;&lt;td&gt;office_name, office_address, number_of_teaching_hours&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Sekarang coba paksa jadi &lt;strong&gt;satu entity&lt;/strong&gt; &lt;code&gt;LECTURER&lt;/code&gt;. Apa yang terjadi?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pertama&lt;/strong&gt;, kamu harus gabung semua atribut jadi satu kotak besar. Dosen tetap tidak punya &lt;code&gt;office_name&lt;/code&gt;, dosen tidak tetap tidak punya &lt;code&gt;grade&lt;/code&gt;. Kolom yang tidak relevan akan diisi &lt;strong&gt;NULL&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kedua&lt;/strong&gt;, kamu kehilangan kemampuan menyatakan aturan bisnis seperti “dosen tetap &lt;strong&gt;wajib&lt;/strong&gt; punya grade”. Di skema gabungan, kolom &lt;code&gt;grade&lt;/code&gt; cuma nullable column biasa — tidak ada cara memaksa constraint per-tipe.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ketiga&lt;/strong&gt;, entity-nya jadi ambigu. Kalau kamu lihat satu baris &lt;code&gt;LECTURER&lt;/code&gt;, kamu tidak tahu apakah dia tipe A atau tipe B tanpa melihat NULL pattern-nya.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solusinya:&lt;/strong&gt; pecah &lt;code&gt;LECTURER&lt;/code&gt; menjadi dua &lt;strong&gt;sub-entity&lt;/strong&gt; — &lt;code&gt;PERMANENT_LECTURER&lt;/code&gt; dan &lt;code&gt;PART_TIME_LECTURER&lt;/code&gt;. Inilah &lt;strong&gt;specialization&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;kapan-butuh-eer&quot;&gt;Kapan Butuh EER?&lt;/h3&gt;
&lt;p&gt;Empat situasi yang menandakan ERD klasik sudah tidak cukup:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ada entitas dengan &lt;strong&gt;subset atribut yang berbeda&lt;/strong&gt; (dosen tetap vs tidak tetap).&lt;/li&gt;
&lt;li&gt;Ada hirarki “is-a” (dosen tetap &lt;strong&gt;adalah&lt;/strong&gt; dosen).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aturan bisnis berbeda&lt;/strong&gt; untuk tiap subkelompok.&lt;/li&gt;
&lt;li&gt;Perlu membedakan &lt;strong&gt;kategori yang saling eksklusif&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;2-specialization-memecah-dari-umum-ke-khusus&quot;&gt;2. Specialization — Memecah dari Umum ke Khusus&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Specialization&lt;/strong&gt; adalah proses memecah entity set menjadi beberapa sub-entity berdasarkan ciri pembeda. Arahnya &lt;strong&gt;top-down&lt;/strong&gt;: dari umum (dosen) ke khusus (dosen tetap, dosen tidak tetap).&lt;/p&gt;
&lt;h3 id=&quot;2-1-notasi&quot;&gt;2.1 Notasi&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-3/eer-specialization.svg&quot; alt=&quot;eer-specialization&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Tiga elemen yang perlu diperhatikan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kotak&lt;/strong&gt; = entity set (superclass di atas, subclass di bawah).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lingkaran “IS A”&lt;/strong&gt; = penghubung hirarki. Baca: “dosen tetap IS A dosen”.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Garis&lt;/strong&gt; dari superclass ke penghubung, lalu bercabang ke tiap subclass.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notasi &lt;code&gt;IS A&lt;/code&gt; (is-a) sengaja dipilih karena mengekspresikan &lt;strong&gt;relasi semantik&lt;/strong&gt;, bukan relasi data. Dosen tetap &lt;strong&gt;bukan relasi&lt;/strong&gt; dengan dosen — dia &lt;strong&gt;adalah&lt;/strong&gt; dosen.&lt;/p&gt;
&lt;h3 id=&quot;2-2-contoh-lengkap-lecturer&quot;&gt;2.2 Contoh Lengkap: LECTURER&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-3/eer-specialization-lecturer.svg&quot; alt=&quot;eer-specialization-lecturer&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Yang &lt;strong&gt;di-share&lt;/strong&gt; (ditaruh di superclass &lt;code&gt;LECTURER&lt;/code&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;employee_id&lt;/code&gt; (PK)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gender&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;education&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;home_address&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yang &lt;strong&gt;khas tiap subclass&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Subclass&lt;/th&gt;&lt;th&gt;Atribut Khas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;PERMANENT_LECTURER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;grade&lt;/code&gt;, &lt;code&gt;start_date&lt;/code&gt;, &lt;code&gt;length_of_working&lt;/code&gt;, &lt;code&gt;room_id&lt;/code&gt;, &lt;code&gt;ext_no&lt;/code&gt;, &lt;code&gt;boss&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;PART_TIME_LECTURER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;office_name&lt;/code&gt;, &lt;code&gt;office_address&lt;/code&gt;, &lt;code&gt;number_of_teaching_hours&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Cara membaca&lt;/strong&gt;: kotak &lt;code&gt;LECTURER&lt;/code&gt; menyimpan atribut yang &lt;strong&gt;semua&lt;/strong&gt; dosen punya. Kotak subclass hanya menyimpan atribut yang &lt;strong&gt;khas&lt;/strong&gt; untuk tipe itu. Saat query, kamu tinggal &lt;code&gt;JOIN&lt;/code&gt; ke tabel yang tepat.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan yang sering terjadi&lt;/strong&gt;: menaruh &lt;code&gt;grade&lt;/code&gt; di &lt;code&gt;LECTURER&lt;/code&gt;. Kalau dilakukan, kolomnya akan NULL untuk semua dosen tidak tetap — dan itu artinya skema kamu tidak jujur. Kolom seharusnya tidak ada di level superclass, karena tidak semua instance memilikinya.&lt;/p&gt;
&lt;h3 id=&quot;2-3-latihan-spesialisasi&quot;&gt;2.3 Latihan Spesialisasi&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Kasus 1 — Mahasiswa:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Superclass &lt;code&gt;MAHASISWA&lt;/code&gt; dengan atribut umum: &lt;code&gt;jumlahSesi&lt;/code&gt;, &lt;code&gt;NIM&lt;/code&gt;, &lt;code&gt;biayaKuliah&lt;/code&gt;, &lt;code&gt;organisasi&lt;/code&gt;, &lt;code&gt;nama&lt;/code&gt;, &lt;code&gt;kelas&lt;/code&gt;, &lt;code&gt;jurusan&lt;/code&gt;, &lt;code&gt;prodi&lt;/code&gt;, &lt;code&gt;jumlahSKS&lt;/code&gt;, &lt;code&gt;umur&lt;/code&gt;, &lt;code&gt;waktuMasuk&lt;/code&gt;, &lt;code&gt;toleransi&lt;/code&gt;, &lt;code&gt;jumlahTargetTAK&lt;/code&gt;, &lt;code&gt;wali&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Dua subclass:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MAHASISWA_REGULER&lt;/code&gt;: &lt;code&gt;pengkaderan&lt;/code&gt;, &lt;code&gt;krida&lt;/code&gt;, &lt;code&gt;beasiswa_bidik_misi&lt;/code&gt;, &lt;code&gt;asrama&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MAHASISWA_KARYAWAN&lt;/code&gt;: &lt;code&gt;pekerjaan&lt;/code&gt;, &lt;code&gt;tempat_kerja&lt;/code&gt;, &lt;code&gt;penghasilan&lt;/code&gt;, &lt;code&gt;lanjut_jenjang&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Kasus 2 — Sekolah Dasar:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Superclass &lt;code&gt;SD&lt;/code&gt; dengan atribut umum: &lt;code&gt;NIS&lt;/code&gt;, &lt;code&gt;nama&lt;/code&gt;, &lt;code&gt;fasilitas&lt;/code&gt;, &lt;code&gt;seragam&lt;/code&gt;, &lt;code&gt;libur&lt;/code&gt;, &lt;code&gt;komite&lt;/code&gt;, &lt;code&gt;kepalasekolah&lt;/code&gt;, &lt;code&gt;Dana_BOS&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Dua subclass:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;SD_SWASTA&lt;/code&gt;: &lt;code&gt;uang_pangkal&lt;/code&gt;, &lt;code&gt;uang_pembangunan&lt;/code&gt;, &lt;code&gt;biaya_SPP&lt;/code&gt;, &lt;code&gt;nama_yayasan&lt;/code&gt;, &lt;code&gt;SK_Yayasan&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SD_NEGERI&lt;/code&gt;: &lt;code&gt;DIPA&lt;/code&gt; (Daftar Isian Pelaksanaan Anggaran)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Perhatikan pola yang sama: atribut yang &lt;strong&gt;spesifik&lt;/strong&gt; ke tipe tertentu ditaruh di subclass, bukan di superclass.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;3-generalization-menggabung-dari-khusus-ke-umum&quot;&gt;3. Generalization — Menggabung dari Khusus ke Umum&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Generalization&lt;/strong&gt; adalah kebalikan dari specialization. Kalau specialization memecah, generalization &lt;strong&gt;menggabungkan&lt;/strong&gt; beberapa entity yang ternyata punya atribut sama.&lt;/p&gt;
&lt;p&gt;Arahnya &lt;strong&gt;bottom-up&lt;/strong&gt;: dari khusus ke umum. Sering dipakai saat kita menemukan &lt;strong&gt;redundansi&lt;/strong&gt; antar entity yang tadinya dipisah.&lt;/p&gt;
&lt;h3 id=&quot;3-1-contoh-d3-vs-d4-student&quot;&gt;3.1 Contoh: D3 vs D4 Student&lt;/h3&gt;
&lt;p&gt;Misalkan awalnya kamu memodelkan:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;STUDENT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;├── IS A ── D3_STUDENT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;└── IS A ── D4_STUDENT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Setelah diperiksa lebih teliti, ternyata &lt;strong&gt;D3 dan D4 punya atribut yang sama persis&lt;/strong&gt;. Yang beda hanya &lt;strong&gt;level&lt;/strong&gt; (D3 atau D4). Tidak ada atribut khas yang membedakan keduanya.&lt;/p&gt;
&lt;p&gt;Keputusan yang benar: &lt;strong&gt;merge&lt;/strong&gt; jadi satu entity dengan kolom tambahan &lt;code&gt;level&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;STUDENT (…, level)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hirarki dihapus. Satu entity, satu kolom kategori.&lt;/p&gt;
&lt;h3 id=&quot;3-2-kapan-merge-kapan-pisah&quot;&gt;3.2 Kapan Merge, Kapan Pisah?&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Pertanyaan&lt;/th&gt;&lt;th&gt;Jika YA&lt;/th&gt;&lt;th&gt;Jika TIDAK&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Atribut sama persis?&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Generalization&lt;/strong&gt; — merge jadi satu entity&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Specialization&lt;/strong&gt; — pisah jadi subclass&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Perilaku bisnis beda per tipe?&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Specialization&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Mungkin cukup satu entity&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Constraint berbeda per tipe?&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Specialization&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Cek lagi apakah benar perlu dipisah&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum&lt;/strong&gt;: memaksakan specialization saat subclass &lt;strong&gt;tidak punya atribut tambahan&lt;/strong&gt;. Kalau D3 dan D4 isinya sama persis, itu cuma &lt;strong&gt;kategori&lt;/strong&gt;, bukan alasan sah untuk bikin hirarki. Cukup satu entity dengan kolom kategori.&lt;/p&gt;
&lt;p&gt;Specialization baru masuk akal kalau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ada atribut yang &lt;strong&gt;hanya berlaku untuk subset&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Ada relasi yang &lt;strong&gt;hanya dimiliki subset&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Ada constraint yang &lt;strong&gt;berbeda per subset&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;4-attribute-inheritance-warisan-atribut&quot;&gt;4. Attribute Inheritance — Warisan Atribut&lt;/h2&gt;
&lt;p&gt;Konsep ini yang bikin EER kuat: &lt;strong&gt;subclass otomatis mewarisi semua atribut superclass&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Kalau &lt;code&gt;LECTURER&lt;/code&gt; punya atribut &lt;code&gt;employee_id&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;gender&lt;/code&gt;, &lt;code&gt;hp&lt;/code&gt;, &lt;code&gt;education&lt;/code&gt;, &lt;code&gt;home_address&lt;/code&gt;, maka &lt;code&gt;PERMANENT_LECTURER&lt;/code&gt; juga punya semua itu. Dia &lt;strong&gt;menambah&lt;/strong&gt; atribut khasnya sendiri (&lt;code&gt;grade&lt;/code&gt;, &lt;code&gt;start_date&lt;/code&gt;, dst) di atas warisan.&lt;/p&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-3/eer-attribute-inheritance.svg&quot; alt=&quot;eer-attribute-inheritance&quot; loading=&quot;lazy&quot;&gt;
&lt;h3 id=&quot;4-1-cara-berpikir&quot;&gt;4.1 Cara Berpikir&lt;/h3&gt;
&lt;p&gt;Saat kamu lihat satu baris data di &lt;code&gt;PERMANENT_LECTURER&lt;/code&gt;, apa yang bisa kamu akses?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Warisan dari &lt;code&gt;LECTURER&lt;/code&gt;: &lt;code&gt;employee_id&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;gender&lt;/code&gt;, &lt;code&gt;hp&lt;/code&gt;, &lt;code&gt;education&lt;/code&gt;, &lt;code&gt;home_address&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Khas milik &lt;code&gt;PERMANENT_LECTURER&lt;/code&gt;: &lt;code&gt;grade&lt;/code&gt;, &lt;code&gt;start_date&lt;/code&gt;, &lt;code&gt;length_of_working&lt;/code&gt;, &lt;code&gt;room_id&lt;/code&gt;, &lt;code&gt;ext_no&lt;/code&gt;, &lt;code&gt;boss&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Semua bisa di-query dari satu entity &lt;code&gt;PERMANENT_LECTURER&lt;/code&gt;, tanpa perlu join manual ke &lt;code&gt;LECTURER&lt;/code&gt;. Secara logis, &lt;code&gt;PERMANENT_LECTURER&lt;/code&gt; &lt;strong&gt;punya lebih banyak atribut&lt;/strong&gt; daripada &lt;code&gt;LECTURER&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;4-2-jawaban-untuk-soal-slide&quot;&gt;4.2 Jawaban untuk Soal Slide&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Atribut LECTURER&lt;/strong&gt;: employee_id, name, gender, hp, education, home_address.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atribut PERMANENT_LECTURER&lt;/strong&gt;: semua di atas + grade, start_date, length_of_working, room_id, ext_no, boss.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atribut PART_TIME_LECTURER&lt;/strong&gt;: semua di atas + office_name, office_address, number_of_teaching_hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prinsip umum: &lt;strong&gt;subclass selalu punya lebih banyak atau sama dengan superclass&lt;/strong&gt;. Tidak pernah lebih sedikit.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;5-relationship-inheritance-warisan-relasi&quot;&gt;5. Relationship Inheritance — Warisan Relasi&lt;/h2&gt;
&lt;p&gt;Bukan hanya atribut yang diwarisi. &lt;strong&gt;Relationship&lt;/strong&gt; juga.&lt;/p&gt;
&lt;p&gt;Kalau &lt;code&gt;LECTURER&lt;/code&gt; punya relasi &lt;code&gt;teach&lt;/code&gt; dengan &lt;code&gt;STUDENT&lt;/code&gt;, maka otomatis &lt;code&gt;PERMANENT_LECTURER&lt;/code&gt; dan &lt;code&gt;PART_TIME_LECTURER&lt;/code&gt; &lt;strong&gt;juga mengajar&lt;/strong&gt;. Relasi ditaruh di level superclass, dan semua subclass mewarisinya.&lt;/p&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-3/eer-relationship-inheritance.svg&quot; alt=&quot;eer-relationship-inheritance&quot; loading=&quot;lazy&quot;&gt;
&lt;h3 id=&quot;5-1-relasi-spesifik-subclass&quot;&gt;5.1 Relasi Spesifik Subclass&lt;/h3&gt;
&lt;p&gt;Selain mewarisi, subclass juga boleh punya &lt;strong&gt;relasi sendiri&lt;/strong&gt; yang tidak dimiliki subclass lain. Contoh:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PERMANENT_LECTURER&lt;/code&gt; punya relasi &lt;code&gt;manage&lt;/code&gt; dengan &lt;code&gt;DEPARTMENT&lt;/code&gt; (jadi kepala departemen).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PART_TIME_LECTURER&lt;/code&gt; &lt;strong&gt;tidak&lt;/strong&gt; punya relasi ini.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aturannya:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Subclass &lt;strong&gt;tidak boleh&lt;/strong&gt; memiliki relasi yang bertentangan dengan superclass.&lt;/li&gt;
&lt;li&gt;Subclass &lt;strong&gt;boleh menambah&lt;/strong&gt; relasi baru.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;5-2-kesalahan-umum&quot;&gt;5.2 Kesalahan Umum&lt;/h3&gt;
&lt;p&gt;Menggambar relasi superclass &lt;strong&gt;hanya di salah satu subclass&lt;/strong&gt;. Contoh: menggambar &lt;code&gt;teach&lt;/code&gt; cuma di &lt;code&gt;PERMANENT_LECTURER&lt;/code&gt; dengan alasan “kan cuma dosen tetap yang ajar di kelas reguler”. Padahal relasi &lt;code&gt;teach&lt;/code&gt; dimiliki superclass &lt;code&gt;LECTURER&lt;/code&gt; — semua subclass harus ikut.&lt;/p&gt;
&lt;p&gt;Kalau memang hanya dosen tetap yang mengajar kelas reguler, dan dosen tidak tetap hanya mengajar kelas karyawan, itu &lt;strong&gt;dua relasi berbeda&lt;/strong&gt;, bukan satu relasi yang dipaksakan.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;6-constraint-pada-specialization&quot;&gt;6. Constraint pada Specialization&lt;/h2&gt;
&lt;p&gt;Specialization bukan sekadar visual — ada &lt;strong&gt;aturan bisnis&lt;/strong&gt; yang menyertainya. Ada dua dimensi constraint:&lt;/p&gt;
&lt;h3 id=&quot;6-1-disjoint-vs-overlapping&quot;&gt;6.1 Disjoint vs Overlapping&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Constraint&lt;/th&gt;&lt;th&gt;Arti&lt;/th&gt;&lt;th&gt;Notasi&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Disjoint&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Instance hanya boleh jadi &lt;strong&gt;satu&lt;/strong&gt; subclass&lt;/td&gt;&lt;td&gt;Huruf &lt;code&gt;d&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Overlapping&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Instance boleh jadi &lt;strong&gt;lebih dari satu&lt;/strong&gt; subclass&lt;/td&gt;&lt;td&gt;Huruf &lt;code&gt;o&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Contoh disjoint&lt;/strong&gt;: Dosen tetap &lt;strong&gt;atau&lt;/strong&gt; tidak tetap. Tidak bisa keduanya.
&lt;strong&gt;Contoh overlapping&lt;/strong&gt;: Mahasiswa bisa jadi anggota BEM &lt;strong&gt;sekaligus&lt;/strong&gt; anggota himpunan jurusan.&lt;/p&gt;
&lt;h3 id=&quot;6-2-total-vs-partial&quot;&gt;6.2 Total vs Partial&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Constraint&lt;/th&gt;&lt;th&gt;Arti&lt;/th&gt;&lt;th&gt;Notasi&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Setiap instance superclass &lt;strong&gt;wajib&lt;/strong&gt; jadi salah satu subclass&lt;/td&gt;&lt;td&gt;Garis ganda&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Partial&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sebagian instance superclass boleh tidak jadi subclass manapun&lt;/td&gt;&lt;td&gt;Garis tunggal&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Contoh total&lt;/strong&gt;: Setiap dosen &lt;strong&gt;harus&lt;/strong&gt; tetap atau tidak tetap. Tidak ada dosen “netral”.
&lt;strong&gt;Contoh partial&lt;/strong&gt;: Sebagian mahasiswa &lt;strong&gt;bukan&lt;/strong&gt; anggota organisasi manapun.&lt;/p&gt;
&lt;h3 id=&quot;6-3-kombinasi&quot;&gt;6.3 Kombinasi&lt;/h3&gt;
&lt;p&gt;Kedua dimensi bisa dikombinasikan:&lt;/p&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-3/eer-constraints.svg&quot; alt=&quot;eer-constraints&quot; loading=&quot;lazy&quot;&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Disjoint&lt;/th&gt;&lt;th&gt;Overlapping&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;d&lt;/code&gt; + garis ganda&lt;/td&gt;&lt;td&gt;&lt;code&gt;o&lt;/code&gt; + garis ganda&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Partial&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;d&lt;/code&gt; + garis tunggal&lt;/td&gt;&lt;td&gt;&lt;code&gt;o&lt;/code&gt; + garis tunggal&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum&lt;/strong&gt;: lupa menulis &lt;code&gt;d&lt;/code&gt; atau &lt;code&gt;o&lt;/code&gt; di dekat penghubung. Tanpa notasi itu, pembaca tidak tahu apakah subclass saling eksklusif atau bisa tumpang tindih. Ini &lt;strong&gt;informasi penting&lt;/strong&gt; yang membedakan dua skema database yang sangat berbeda.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;7-aggregation-relasi-yang-jadi-entity&quot;&gt;7. Aggregation — Relasi yang Jadi Entity&lt;/h2&gt;
&lt;p&gt;Ini konsep EER yang paling sering bikin bingung, tapi konsepnya sebenarnya sederhana.&lt;/p&gt;
&lt;h3 id=&quot;7-1-masalah-yang-diselesaikan&quot;&gt;7.1 Masalah yang Diselesaikan&lt;/h3&gt;
&lt;p&gt;Bayangkan sistem perbankan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUSTOMER&lt;/code&gt; &lt;strong&gt;borrow&lt;/strong&gt; &lt;code&gt;LOAN&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PAYMENT&lt;/code&gt; adalah pembayaran &lt;strong&gt;untuk peminjaman tertentu&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Pembayaran tidak bisa ada tanpa peminjaman.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kalau digambar secara naif, kamu ingin tarik garis dari &lt;code&gt;PAYMENT&lt;/code&gt; ke belah ketupat &lt;code&gt;BORROW&lt;/code&gt;. Tapi ERD &lt;strong&gt;tidak mengizinkan&lt;/strong&gt; garis masuk ke relationship. Relationship hanya bisa dihubungkan ke entity, bukan ke relationship lain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solusinya:&lt;/strong&gt; perlakukan &lt;code&gt;BORROW&lt;/code&gt; sebagai &lt;strong&gt;entity&lt;/strong&gt;. Bungkus &lt;code&gt;CUSTOMER + BORROW + LOAN&lt;/code&gt; dalam satu kotak, lalu tarik garis dari kotak itu ke &lt;code&gt;PAYMENT&lt;/code&gt;.&lt;/p&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-3/eer-aggregation.svg&quot; alt=&quot;eer-aggregation&quot; loading=&quot;lazy&quot;&gt;
&lt;h3 id=&quot;7-2-definisi-formal&quot;&gt;7.2 Definisi Formal&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aggregation&lt;/strong&gt; adalah abstraksi di mana &lt;strong&gt;relationship diperlakukan sebagai entity set&lt;/strong&gt;, sehingga bisa berpartisipasi di relationship lain.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;7-3-perbandingan-tiga-pendekatan&quot;&gt;7.3 Perbandingan Tiga Pendekatan&lt;/h3&gt;
&lt;p&gt;Slide menampilkan tiga diagram. Mana yang benar?&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Model&lt;/th&gt;&lt;th&gt;Benar?&lt;/th&gt;&lt;th&gt;Alasan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;(i) Tarik garis langsung ke diamond&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;ERD tidak mengizinkan garis ke relationship&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;(ii) &lt;code&gt;PAYMENT&lt;/code&gt; terhubung langsung ke customer &amp;amp; loan&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;Kehilangan konteks “harus ada borrow dulu”&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;(iii) Bungkus &lt;code&gt;borrow&lt;/code&gt; dalam kotak, tarik dari kotak&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;Ini aggregation&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Model (ii) sekilas kelihatan wajar, tapi salah secara semantik: dia menyatakan bahwa &lt;code&gt;PAYMENT&lt;/code&gt; terhubung langsung ke &lt;code&gt;CUSTOMER&lt;/code&gt; dan &lt;code&gt;LOAN&lt;/code&gt; &lt;strong&gt;secara independen&lt;/strong&gt;. Padahal seharusnya payment terikat ke &lt;strong&gt;pasangan&lt;/strong&gt; (customer, loan) — bukan ke keduanya secara terpisah.&lt;/p&gt;
&lt;h3 id=&quot;7-4-kapan-aggregation-dibutuhkan&quot;&gt;7.4 Kapan Aggregation Dibutuhkan?&lt;/h3&gt;
&lt;p&gt;Tiga tanda:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Relationship punya siklus hidup&lt;/strong&gt; yang melibatkan relationship lain. Contoh: &lt;code&gt;pay&lt;/code&gt; baru bisa ada setelah &lt;code&gt;borrow&lt;/code&gt; terjadi.&lt;/li&gt;
&lt;li&gt;Ada &lt;strong&gt;urutan waktu&lt;/strong&gt; antar relationship.&lt;/li&gt;
&lt;li&gt;Relationship jadi &lt;strong&gt;subjek&lt;/strong&gt; dari relationship lain.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;7-5-cara-menggambar&quot;&gt;7.5 Cara Menggambar&lt;/h3&gt;
&lt;p&gt;Di ERD standar, &lt;strong&gt;tidak ada simbol baru&lt;/strong&gt; untuk aggregation. Cukup:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bungkus entity + relationship + entity lain dalam &lt;strong&gt;persegi panjang&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Tarik garis dari &lt;strong&gt;sisi kotak&lt;/strong&gt; ke relationship baru.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ini yang membedakan dari garis biasa. Kalau garis keluar dari dalam kotak, itu tanda aggregation.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;8-transformasi-eer-ke-skema-relasional&quot;&gt;8. Transformasi EER ke Skema Relasional&lt;/h2&gt;
&lt;p&gt;Aturan konversi EER — tambahan dari aturan ERD di Pertemuan 2:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Komponen EER&lt;/th&gt;&lt;th&gt;Jadi apa&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Superclass + subclass (disjoint + total)&lt;/td&gt;&lt;td&gt;Tabel per subclass, PK = PK superclass&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Superclass + subclass (partial)&lt;/td&gt;&lt;td&gt;Tabel superclass + tabel subclass opsional&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Subclass overlapping&lt;/td&gt;&lt;td&gt;Tabel superclass + tabel untuk tiap subclass&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Aggregation&lt;/td&gt;&lt;td&gt;Tabel asosiasi dengan FK dari seluruh entity yang di-aggregate&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;8-1-contoh-lecturer-disjoint-total&quot;&gt;8.1 Contoh: LECTURER Disjoint + Total&lt;/h3&gt;
&lt;p&gt;Ada dua cara menuliskan skema:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cara 1 — Tanpa tabel superclass:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PERMANENT_LECTURER(employee_id, name, gender, hp, education, home_address, grade, start_date, length_of_working, room_id, ext_no, boss)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PART_TIME_LECTURER(employee_id, name, gender, hp, education, home_address, office_name, office_address, number_of_teaching_hours)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kelemahan: atribut umum &lt;strong&gt;diduplikasi&lt;/strong&gt; di kedua tabel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cara 2 — Dengan tabel superclass (lebih baik):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;LECTURER(employee_id, name, gender, hp, education, home_address)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PERMANENT_LECTURER(employee_id, grade, start_date, length_of_working, room_id, ext_no, boss)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: employee_id → LECTURER&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PART_TIME_LECTURER(employee_id, office_name, office_address, number_of_teaching_hours)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: employee_id → LECTURER&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Keuntungan: tidak ada duplikasi. Atribut umum disimpan sekali di &lt;code&gt;LECTURER&lt;/code&gt;. Subclass hanya menambah atribut khasnya sendiri.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cara mana yang dipakai?&lt;/strong&gt; Tergantung. Kalau sistem sering query “semua dosen” (tanpa peduli tipe), Cara 2 lebih baik. Kalau sistem hampir selalu query per tipe, Cara 1 boleh dipakai demi kesederhanaan.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;9-studi-kasus-sistem-perbankan&quot;&gt;9. Studi Kasus — Sistem Perbankan&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Deskripsi&lt;/strong&gt;: Nasabah meminjam uang dari bank, lalu melakukan pembayaran untuk pinjaman tersebut.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Aturan bisnis&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nasabah bisa punya banyak pinjaman.&lt;/li&gt;
&lt;li&gt;Setiap pinjaman milik 1 nasabah.&lt;/li&gt;
&lt;li&gt;Pembayaran terjadi untuk &lt;strong&gt;kombinasi&lt;/strong&gt; (nasabah, pinjaman) tertentu.&lt;/li&gt;
&lt;li&gt;Pembayaran tidak bisa ada tanpa peminjaman.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-3/eer-bank-aggregation.svg&quot; alt=&quot;eer-bank-aggregation&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;&lt;strong&gt;Skema relasional:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CUSTOMER(id_no, name, address)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;LOAN(loan_no, amount)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;BORROW(id_no, loan_no, borrow_date)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PK: (id_no, loan_no)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: id_no → CUSTOMER&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: loan_no → LOAN&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PAYMENT(payment_no, id_no, loan_no, payment_date, amount)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PK: payment_no&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: (id_no, loan_no) → BORROW&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Poin penting&lt;/strong&gt;: perhatikan bahwa &lt;code&gt;PAYMENT&lt;/code&gt; mereferensikan &lt;strong&gt;pasangan&lt;/strong&gt; &lt;code&gt;(id_no, loan_no)&lt;/code&gt; dari tabel &lt;code&gt;BORROW&lt;/code&gt;. Inilah wujud fisik aggregation — referensi ke kombinasi, bukan ke satu entity saja.&lt;/p&gt;
&lt;p&gt;Kalau digambar tanpa aggregation (mis. &lt;code&gt;PAYMENT&lt;/code&gt; refer ke &lt;code&gt;CUSTOMER&lt;/code&gt; dan &lt;code&gt;LOAN&lt;/code&gt; secara terpisah), constraint “pembayaran harus untuk pinjaman yang benar-benar ada” tidak bisa dinyatakan. Bisa jadi ada payment untuk customer A dan loan B, padahal customer A tidak pernah meminjam loan B.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;10-latihan-mandiri&quot;&gt;10. Latihan Mandiri&lt;/h2&gt;
&lt;h3 id=&quot;10-1-specialization-atau-generalization&quot;&gt;10.1 Specialization atau Generalization?&lt;/h3&gt;
&lt;p&gt;Tentukan untuk kasus-kasus berikut:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Kasus&lt;/th&gt;&lt;th&gt;Jawaban&lt;/th&gt;&lt;th&gt;Alasan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;KENDARAAN&lt;/code&gt; → &lt;code&gt;MOBIL&lt;/code&gt;, &lt;code&gt;MOTOR&lt;/code&gt;, &lt;code&gt;TRUK&lt;/code&gt;&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;PEGAWAI&lt;/code&gt; → &lt;code&gt;PEGAWAI_TETAP&lt;/code&gt;, &lt;code&gt;PEGAWAI_KONTRAK&lt;/code&gt;&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;PRODUK&lt;/code&gt; → &lt;code&gt;PRODUK_ELEKTRONIK&lt;/code&gt;, &lt;code&gt;PRODUK_FASHION&lt;/code&gt;&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;USER&lt;/code&gt; → &lt;code&gt;ADMIN&lt;/code&gt;, &lt;code&gt;CUSTOMER&lt;/code&gt;&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;td&gt;?&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Petunjuk: tanya dirimu — apakah tiap subclass punya atribut khas? Apakah aturan bisnis berbeda?&lt;/p&gt;
&lt;h3 id=&quot;10-2-rancang-eer-sendiri&quot;&gt;10.2 Rancang EER Sendiri&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Skenario&lt;/strong&gt;: Sistem akademik kampus.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ORANG&lt;/code&gt; dengan atribut umum: &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;nama&lt;/code&gt;, &lt;code&gt;tanggal_lahir&lt;/code&gt;, &lt;code&gt;alamat&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MAHASISWA&lt;/code&gt; (NIM, angkatan, prodi) dan &lt;code&gt;DOSEN&lt;/code&gt; (NIDN, fakultas, jabatan).&lt;/li&gt;
&lt;li&gt;Sebagian mahasiswa adalah &lt;code&gt;MAHASISWA_BEASISWA&lt;/code&gt; (jenis beasiswa, sponsor).&lt;/li&gt;
&lt;li&gt;Sebagian dosen adalah &lt;code&gt;DOSEN_WALI&lt;/code&gt; (jumlah mahasiswa bimbingan).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Yang perlu kamu tentukan:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Gambar hirarki EER.&lt;/li&gt;
&lt;li&gt;Tentukan &lt;strong&gt;disjoint/overlapping&lt;/strong&gt; dan &lt;strong&gt;total/partial&lt;/strong&gt; untuk tiap hirarki.&lt;/li&gt;
&lt;li&gt;Tulis skema relasional lengkap (tabel, PK, FK).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pertanyaan bantuan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apakah satu orang bisa jadi mahasiswa &lt;strong&gt;dan&lt;/strong&gt; dosen sekaligus? (menentukan disjoint/overlapping di level ORANG)&lt;/li&gt;
&lt;li&gt;Apakah semua mahasiswa adalah mahasiswa beasiswa? (menentukan total/partial)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;11-ringkasan&quot;&gt;11. Ringkasan&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Konsep&lt;/th&gt;&lt;th&gt;Poin Kunci&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;EER&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;ERD + hirarki subclass/superclass + constraint + aggregation&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Specialization&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Top-down: pecah 1 entity jadi beberapa subclass&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Generalization&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Bottom-up: gabung beberapa entity jadi 1 superclass&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Attribute Inheritance&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Subclass mewarisi &lt;strong&gt;semua&lt;/strong&gt; atribut superclass&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Relationship Inheritance&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Subclass juga mewarisi relasi superclass&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Disjoint&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Subclass saling eksklusif (&lt;code&gt;d&lt;/code&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Overlapping&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Subclass bisa tumpang tindih (&lt;code&gt;o&lt;/code&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Semua instance superclass jadi subclass (garis ganda)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Partial&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sebagian boleh tidak jadi subclass (garis tunggal)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Aggregation&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Relationship diperlakukan sebagai entity&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;12-tugas-teori-resume-video&quot;&gt;12. Tugas Teori — Resume Video&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Ketentuan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Jenis&lt;/td&gt;&lt;td&gt;Selfie video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Platform&lt;/td&gt;&lt;td&gt;YouTube Shorts / TikTok / Reels IG/FB (pilih satu)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Durasi&lt;/td&gt;&lt;td&gt;Maksimal &lt;strong&gt;60 detik&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Komentar&lt;/td&gt;&lt;td&gt;Jangan dimatikan&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Format pengumpulan (&lt;code&gt;.txt&lt;/code&gt; atau &lt;code&gt;.pdf&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Nama :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;NIM :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kelas :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kode Dosen :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Link Video :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Upload ke &lt;strong&gt;Pengumpulan Tugas Teori Pertemuan 3&lt;/strong&gt; di e-learning.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;13-tugas-praktikum-eer-diagram&quot;&gt;13. Tugas Praktikum — EER Diagram&lt;/h2&gt;
&lt;p&gt;Kerjakan sesuai instruksi di &lt;strong&gt;Modul Praktikum Pertemuan 3&lt;/strong&gt;.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Ketentuan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Format&lt;/td&gt;&lt;td&gt;ZIP / RAR&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Nama file&lt;/td&gt;&lt;td&gt;&lt;code&gt;P3_NIM_NAMA.zip&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Contoh&lt;/td&gt;&lt;td&gt;&lt;code&gt;P3_4342611034_Muhammad_Riduwan.zip&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Deadline&lt;/td&gt;&lt;td&gt;1 pekan sejak tugas diberikan&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Tempat&lt;/td&gt;&lt;td&gt;E-learning → Pengumpulan Tugas Praktikum Pertemuan 3&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Isi ZIP:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;File EER (&lt;code&gt;.drawio&lt;/code&gt; atau &lt;code&gt;.png&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;File skema relasional (&lt;code&gt;.md&lt;/code&gt; atau &lt;code&gt;.pdf&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Screenshot EER.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;14-checklist-sebelum-kumpul&quot;&gt;14. Checklist Sebelum Kumpul&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Superclass dan subclass sudah teridentifikasi.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Setiap subclass punya atribut khas yang &lt;strong&gt;tidak&lt;/strong&gt; dimiliki subclass lain.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Constraint disjoint/overlapping sudah ditandai (&lt;code&gt;d&lt;/code&gt; atau &lt;code&gt;o&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Constraint total/partial sudah ditandai (garis tunggal atau ganda).&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Attribute inheritance sudah digambarkan.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Relationship inheritance sudah digambarkan.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Aggregation ditandai (jika ada relasi antar-relasi).&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Skema relasional lengkap dengan PK &amp;amp; FK.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Tidak ada superclass yang cuma punya 1 subclass.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Tidak ada subclass yang atributnya sama persis dengan superclass.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;15-referensi&quot;&gt;15. Referensi&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Silberschatz, Korth, Sudarshan. &lt;em&gt;Database System Concepts&lt;/em&gt; (6th ed.). McGraw-Hill. Bab 7: Database Design — EER Model.&lt;/li&gt;
&lt;li&gt;Connolly &amp;amp; Begg. &lt;em&gt;Database Systems&lt;/em&gt; (6th ed.). Pearson, 2015. Bab 12–13.&lt;/li&gt;
&lt;li&gt;Elmasri &amp;amp; Navathe. &lt;em&gt;Fundamentals of Database Systems&lt;/em&gt; (7th ed.). Pearson.&lt;/li&gt;
&lt;li&gt;Fathan, Syah. &lt;em&gt;Basis Data Edisi Revisi&lt;/em&gt;. Penerbit Informatika, 2012.&lt;/li&gt;
&lt;li&gt;Widyastuti, Hilda. &lt;em&gt;Diktat Basis Data&lt;/em&gt;. Politeknik Negeri Batam, 2016.&lt;/li&gt;
&lt;li&gt;Santiputri, Metta. &lt;em&gt;Diktat Pengantar Basis Data&lt;/em&gt;. Politeknik Negeri Batam, 2012.&lt;/li&gt;
&lt;li&gt;Kadir, Abdul. &lt;em&gt;Dasar Perancangan dan Implementasi Database Relasional&lt;/em&gt;. Penerbit Andi, 2009.&lt;/li&gt;
&lt;li&gt;Slide RPL106 Pertemuan 3 — Ahmadi Irmansyah Lubis.&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Changelog</title>
        <published>2026-09-25T00:00:00+00:00</published>
        <updated>2026-09-25T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/changelog/"/>
        <id>https://mroczect.biz.id/lectures/changelog/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/changelog/">&lt;p&gt;All notable changes to this project. Generated from git history.&lt;/p&gt;
&lt;p&gt;Source: &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures&quot;&gt;&lt;code&gt;mroczect/lectures&lt;/code&gt;&lt;/a&gt; · Branch: &lt;code&gt;master&lt;/code&gt; · Updated: 2026-09-25 · &lt;strong&gt;104 commits&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;september-2026&quot;&gt;September 2026&lt;/h2&gt;
&lt;h3 id=&quot;friday-sep-25-2026&quot;&gt;Friday, Sep 25, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/a2b528b7fe05224473ef36a43159e70134b87320&quot;&gt;chore : update docs&lt;/a&gt; — @mroczect&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tuesday-sep-22-2026&quot;&gt;Tuesday, Sep 22, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/2daa6db14c9aa1fa0e8c9dd0897a25b578f48640&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 6 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;fix&lt;/strong&gt; &lt;code&gt;d2&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/c18cdc52f43f920eae8b0ce427be362d41201ed4&quot;&gt;restore section markers in pertemuan 2 &amp;amp; 3 sources&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/50cbd5e1d8a8a93bf9b59a7ef854ecb73995462a&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 7 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;fix&lt;/strong&gt; &lt;code&gt;d2&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/d8bce082ee6c19aee78cc71e837aae73c7aa657d&quot;&gt;tolerate CRLF in separator; enforce LF; regenerate&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 8 insertions(+)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/9821d95d516e864fb8e8801ef84893832a2a6031&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 7 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;code&gt;d2&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/d0a77cd6d1617a412fca5bc0855da3522ca27c2b&quot;&gt;detect &lt;img&gt; refs, add –strict, snippet, watch&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 107 insertions(+), 94 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/4c14494660883e934dd22993ce3c934dc0d1ce09&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 8 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;static/d2&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/67537d5a8b3a78bc6a94c126f06c12320a89dce6&quot;&gt;regenerate SVGs for pertemuan 2 &amp;amp; 3&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;refactor &lt;code&gt;d2-src&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/82eaa64f81a0a86674429ea99638bc20d64d0e75&quot;&gt;cleaner palette, consistent naming, minimal styling&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/9461fe748718ecca91f3e0c73738ede970fbe93c&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 7 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;fix&lt;/strong&gt; &lt;code&gt;ci&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/dcc8ebccb35789ee7eefe9bfedc7edb251e1d186&quot;&gt;correct D2 output paths for per-course layout&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 18 insertions(+), 10 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/63f44a9a0049265f3d8dd5b543b2dd020146d526&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 10 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rpl106&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/3100d428203a3dbedfec46d702dae925b609f009&quot;&gt;enrich pertemuan 1-2 and add pertemuan 3&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;code&gt;templates&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/950b25844e81147e01440306d32b697463ea6001&quot;&gt;replace d2 shortcode with d2svg&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;refactor &lt;code&gt;d2&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/0ae54a15508336bdf95429e9c405e919005fc03f&quot;&gt;restructure source and output as per-course modular layout&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/ef6152e4d4de3af4849486dbf7595e151888dd8e&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 9 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;fix&lt;/strong&gt; &lt;code&gt;ci&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/f36addaf11c8515bf36b0891f4273b0aa4a6eefa&quot;&gt;remove unsupported –omit-version; regenerate D2 SVGs&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;fix&lt;/strong&gt; &lt;code&gt;ci&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/a132063bc1e9a629b65d4aadcac7ca3922aa5b53&quot;&gt;remove unsupported –omit-version flag from D2 build&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/b6bbcad2c0ff32c17dcf3a6b43487a380291f16f&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 14 insertions(+), 3 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/6245063cb76ce69f116c809c8965fc81022e78ac&quot;&gt;chore : uodate ci&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 74 insertions(+), 24 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/f1db4d9f417917f3aafa71ce1b5d83e794c945aa&quot;&gt;add diagram d2&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/5958575b7a5fa1e3b82383706ad3f72465a39a5b&quot;&gt;Update d2.py&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 2308 insertions(+)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rpl106&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/e406c7fcde8a3ed1b3d1cf1ee4438930178584d5&quot;&gt;replace mermaid with d2 + build workflow&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;monday-sep-21-2026&quot;&gt;Monday, Sep 21, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/8d063df489a6612ff459b063731db1a7e8e19f2f&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 8 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/8d68e0e3c51bed7da218746860a0367e7f99bbab&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 6 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;site&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/2011deb0dcf40e9a35c8645db4563333a615f1e4&quot;&gt;move site back to lectures subpath (#40)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/40&quot;&gt;#40&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/59bd9c71fffba91776e956c8faafc0a19901282e&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 9 insertions(+), 3 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;ci&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/3092f1be5b8a27f3b7e3efdf28ec911341bcfc83&quot;&gt;remove comments from deploy workflow (#39)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/39&quot;&gt;#39&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;style &lt;code&gt;css&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/7fefba0cb3c69ab1e1c5d2347b0a5b1c030c4a66&quot;&gt;restructure custom and dark theme stylesheets (#38)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/38&quot;&gt;#38&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;fix&lt;/strong&gt; &lt;code&gt;templates&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/cd21e7d9958ea11042b79bdc3641d19b84be25c3&quot;&gt;use get_url for menu links&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 26 insertions(+)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;code&gt;site&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/d3d4ebd55ce0b4459fbd2d01f5dc71e833cbf7bb&quot;&gt;add changelog workflow and dark theme CSS (#37)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/37&quot;&gt;#37&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;code&gt;scripts&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/b228dae521b87b702bfc22481ecd3b4b6efdc8ed&quot;&gt;add Python changelog and deploy workflow (#36)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/36&quot;&gt;#36&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;code&gt;site&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/9db959e781aac6dd080cd18c037fdc91789eb700&quot;&gt;add Zola blog with content and templates (#35)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/35&quot;&gt;#35&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/756f023f80db28b60fb0ed936dff52c7d3bd3683&quot;&gt;Create LICENSE&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 437 insertions(+)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sunday-sep-20-2026&quot;&gt;Sunday, Sep 20, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/e99a39cbb7f9811debb1e1cfc4257e75f2f3e90b&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 6 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/91094cb3c7591c46ba3e4a11ea0561f8e1c3a11d&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 7 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;changelog&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/ef668aee52a4965bb0ad7490eabbe26f89dbdaea&quot;&gt;auto-update [skip ci]&lt;/a&gt; — @github-actions[bot]
&lt;sub&gt;1 file changed, 5 insertions(+), 3 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/c6d730ea638082d1d995327032167648a034f47b&quot;&gt;new migration&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/c654c44929640e3a42db6d27115a42e651d1f383&quot;&gt;backup&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/d5e2567d8d140c6cbaef7e2289c9f412745214a2&quot;&gt;init files&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/1baad9e8cf8d64f10048c9d98cd5319bdbd95e77&quot;&gt;init tools&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;refactor &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/44650f51928e075ef907de4ddc0898bc8f408bd7&quot;&gt;new migration to vitepress again&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;saturday-sep-19-2026&quot;&gt;Saturday, Sep 19, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/69b8f992623cc5f527adfc6579ac52f59eeedd08&quot;&gt;streamline documentation and rebuild homepage (#33)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/33&quot;&gt;#33&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;style &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/ffb6cb7ef78aa1821137a0406cadf94afa0ce080&quot;&gt;improve responsive layout across breakpoints (#32)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/32&quot;&gt;#32&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/f512f7d25bbdbd73218ef44b18075d09ea29cfac&quot;&gt;27 refactor starting everything over from scratch (#31)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/31&quot;&gt;#31&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;wednesday-sep-16-2026&quot;&gt;Wednesday, Sep 16, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/87ce5799936ccbf9a754f6fefc62d304bbec4447&quot;&gt;Add Algoritma Dan Pemprpraman task&lt;/a&gt; — @mroczect&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tuesday-sep-15-2026&quot;&gt;Tuesday, Sep 15, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/a7b6c031fdf21695fea4c722bfba3d4761cb4266&quot;&gt;add mtk task&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/1f37b5b98b84462878ee2e04f362078a6fefa2de&quot;&gt;update sidebar and add RPL104 week 1 material (#26)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/26&quot;&gt;#26&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/11a356902a7b68b6c65391deea81f3509f12a28b&quot;&gt;Update changelog.md&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 6 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/a6940053700ee18266f4832ca88292f7c57a3d46&quot;&gt;add D2 cheat sheets and VitePress documentation guide (#25)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/25&quot;&gt;#25&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;monday-sep-14-2026&quot;&gt;Monday, Sep 14, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/21c6737942b5e775a99d1ff54f3707b2cb53edd7&quot;&gt;Update changelog.md&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 55 insertions(+), 96 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;scripts&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/daaff4efb6beab12d1970c47fcaf7dd60f210276&quot;&gt;improve auto changelog&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 22 insertions(+), 41 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/6c93d64cee8c20629d49aedd37f2984529e5d0a5&quot;&gt;add changelog&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 107 insertions(+), 3 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/4819ac6774adc5fabad115f41b6a1fe45cd90475&quot;&gt;add auto changelog add clean temp files&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/c2d20d5c3a3545fd60bcc7d32a4df5870bd3cb20&quot;&gt;Update index.md&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 6 insertions(+), 4 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/5e3e3de2540ab5b0b1193d1874c46afbd1de438a&quot;&gt;add RPL106 practical task 2 ERD&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/f18780dce22c25b21a44dc562aebebf73ee4d0e9&quot;&gt;new strukture and docs&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;sunday-sep-13-2026&quot;&gt;Sunday, Sep 13, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/ea1e006405519c622c1c8c5dbb5a3dee52055cbb&quot;&gt;make it minialist&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/49781ebc96220b94e6f3253c8c6e483ac191ce93&quot;&gt;make it minialist&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/72a4f42cef647eb782b495c16be9fe91d878cf46&quot;&gt;add nwe task 106&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;saturday-sep-12-2026&quot;&gt;Saturday, Sep 12, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/ac2426b4956c2eceddcc132126f7c57ae804f376&quot;&gt;docs : write docs&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/b1dd127c0f048e0e4935eb4f293ad04e4b3165ee&quot;&gt;Update format.md&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 637 insertions(+), 182 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/045633cdc8798db228e234b5db2dc93ddab96d94&quot;&gt;expand documentation with course pages and information (#12)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/12&quot;&gt;#12&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/592adb658edf505778a21819a3f3aac2696a7326&quot;&gt;move license to root and translate pages (#11)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/11&quot;&gt;#11&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/f78d7b5eff28562539126f4aea0c3a94d9bf6072&quot;&gt;reorganize courses into per-code directories (#10)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/10&quot;&gt;#10&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/39f4ed554a500005cb26e21390e00ab9d0cf69da&quot;&gt;corrtct brach name&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 1 insertion(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;fix&lt;/strong&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/f2c8f9d3eb72b4fc4d0512407365b2f5cbb7dfbd&quot;&gt;correct license from MIT to CC BY-NC-SA 4.0&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 2 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/6029d559a0a5a55261548c5181086f7e146d75e1&quot;&gt;Update deploy.yml&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 15 insertions(+), 5 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;pwa&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/196cfb94259086e1386b59b9a912ba02ea7ac0af&quot;&gt;enable auto-update and cleanup old caches&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 8 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/a0cd8da724fcc23fcc1768d98670b387c804284d&quot;&gt;bust CDN cache&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/3f60602a82154878966c389585cd5d9a5ca82977&quot;&gt;Update sidebar.json&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 2 insertions(+), 2 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/6bfa0d3a0a13bfd5a335c56a8d50e5f2ae4deeca&quot;&gt;Update config.ts&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 2 insertions(+)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/0ca861cd56b7e923006f9b3e922c67285fe942a1&quot;&gt;Update config.ts&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 2 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/5ade65a89362e0e6ce7be9c196fdbe49386105c9&quot;&gt;restructure into versioned docs and add format guide (#9)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/9&quot;&gt;#9&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/282b5e1fd796c4ae8e1d91a875a6d83afb79ecec&quot;&gt;Update config.ts&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 1 insertion(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/df343312c08d0c2c6c393f81ae40ee39ba276669&quot;&gt;translate pages and add tasks (#8)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/8&quot;&gt;#8&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;docs&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/d6ad37d73743954bce0d68547ac8cc2f268292be&quot;&gt;translate vitepress config to English (#7)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/7&quot;&gt;#7&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/b547f45c2e61265feca074d8dcc33ce582bd8513&quot;&gt;Update kontak-dosen.md&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 80 insertions(+)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;code&gt;information&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/fdb4163f32781fe1af38c6f59c9ba695c31aa11e&quot;&gt;add PBL and schedule pages (#6)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/6&quot;&gt;#6&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ci &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/464a79d68a6df2a21aeb9b338d628c32ef230b94&quot;&gt;setup GitHub Pages deploy with Bun&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 13 insertions(+), 16 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;code&gt;docs&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/0c23523c2c896489a584b9de1814e2718b3bc7aa&quot;&gt;add lectures documentation site (#5)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/5&quot;&gt;#5&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;pkg&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/bcba6436e8556dd1a980ce57136341f886e8f351&quot;&gt;add docs plugins and tooling&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 33 insertions(+), 11 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;code&gt;docs&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/38d9a78b3efb7ef80a46cba2c948d7aaf5b1a04c&quot;&gt;enhance vitepress configuration&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 318 insertions(+), 158 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;code&gt;deps&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/3a0efa4aa000932ce64f54e9da27402d10def182&quot;&gt;update lockfile for docs tooling&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 1231 insertions(+), 31 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;docs &lt;code&gt;readme&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/deea3a756cdb0f93cd1f0caff11e3e97934ab80e&quot;&gt;simplify project description&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 1 insertion(+), 13 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/af0c1bd68aee3a4c0d8e0526d87a139f0efee579&quot;&gt;add VitePress docs and tooling (#2)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/2&quot;&gt;#2&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/c1383c95138100061926955ca435d7b2b3353b8c&quot;&gt;Update .gitignore&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 2 insertions(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;feat&lt;/strong&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/af4d70e35f6df113a86264d0e080c0de7250110c&quot;&gt;initialize Bun TypeScript project (#1)&lt;/a&gt; (&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/pull/1&quot;&gt;#1&lt;/a&gt;) — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;refactor &lt;code&gt;clean&lt;/code&gt; &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/ff2d1407bf083b5aff4143d30af3c7a654396724&quot;&gt;Rebuilding everything from scratch and migrating to the VitePress ecosystem.&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/15e1471eb3daeac1957e31df41470ccbd9514ebc&quot;&gt;new chages mtk&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/bfab8046034eaf5c2aacdcc9876eea982ceadc6c&quot;&gt;new changes&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;friday-sep-11-2026&quot;&gt;Friday, Sep 11, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/35ab4851cca562a582a0c31eb0bcc71b0ab020d2&quot;&gt;add module mtk and impre ci&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/d42a347fd7dad65d4191962abc79d4942546796f&quot;&gt;clean and make form scrath&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/bcc773658306e75a8012ad7e31d18be6f6489c68&quot;&gt;add supmdule adn agama pertemuan 1&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;chore &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/9ad3c045dda97f9f5a266e18abee843b15d88c97&quot;&gt;formater and lint code&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 84 insertions(+), 85 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/b60dd586ad45696c17dd60e959abb97b148a5b0e&quot;&gt;add task&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;thursday-sep-10-2026&quot;&gt;Thursday, Sep 10, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/d512936868917fa542454b5dfd437a732a02dbff&quot;&gt;write docs&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/a36f9ccac693bae0b709f8f19c1041c456f74672&quot;&gt;write docs&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 1 insertion(+), 1 deletion(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/1c7d42fb6a5293868fd75c82fdf92cc475fea287&quot;&gt;write docs&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 164 deletions(-)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/b31651c7c27ebe3a09b0580ded5da6289c923629&quot;&gt;write docs&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/466f2b0730e43321a054d1cbbef50b09ce27394d&quot;&gt;write docs&lt;/a&gt; — @mroczect
&lt;sub&gt;1 file changed, 26 insertions(+)&lt;/sub&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/587bd0eeea7db4f9ff39cc1390a4e7c110f5f42f&quot;&gt;write docs&lt;/a&gt; — @mroczect&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;monday-sep-07-2026&quot;&gt;Monday, Sep 07, 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/commit/aff434eafd6d9aa233af8032d25e1d0f75b40078&quot;&gt;Initial commit&lt;/a&gt; — @mroczect&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Pertemuan 1 — Introduction to Database Concepts</title>
        <published>2026-09-22T00:00:00+00:00</published>
        <updated>2026-09-22T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-1/"/>
        <id>https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-1/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-1/">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Basis data bukan sekadar “kumpulan file”. Ia adalah sistem yang menyimpan,
mengelola, dan melindungi data agar bisa diandalkan banyak pengguna sekaligus. Pertemuan
ini meletakkan fondasi: apa itu data, DBMS, model data, bahasa query, dan kenapa kita
butuh semuanya sebelum menyentuh SQL di pertemuan 6.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;tujuan-pembelajaran&quot;&gt;Tujuan Pembelajaran&lt;/h2&gt;
&lt;p&gt;Setelah pertemuan ini, mahasiswa mampu:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Membedakan data, basis data, dan DBMS.&lt;/li&gt;
&lt;li&gt;Menjelaskan alasan DBMS menggantikan file system.&lt;/li&gt;
&lt;li&gt;Mengenali model data yang umum dipakai (relasional, ER, semi-terstruktur).&lt;/li&gt;
&lt;li&gt;Membedakan DDL, DML, dan bahasa query.&lt;/li&gt;
&lt;li&gt;Memahami tahapan perancangan basis data.&lt;/li&gt;
&lt;li&gt;Mengidentifikasi komponen arsitektur sistem basis data.&lt;/li&gt;
&lt;li&gt;Menerapkan analisis relasional pada studi kasus nyata.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;1-konsep-dasar&quot;&gt;1. Konsep Dasar&lt;/h2&gt;
&lt;h3 id=&quot;1-1-data-basis-data-dbms&quot;&gt;1.1 Data, Basis Data, DBMS&lt;/h3&gt;
&lt;p&gt;Sebelum bicara teknologi, kita perlu sepakati istilahnya dulu. Salah kaprah paling umum: menganggap &lt;strong&gt;data&lt;/strong&gt;, &lt;strong&gt;basis data&lt;/strong&gt;, dan &lt;strong&gt;DBMS&lt;/strong&gt; itu sama. Padahal tiga hal berbeda.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Istilah&lt;/th&gt;&lt;th&gt;Arti&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Data&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Nilai mentah yang belum bermakna (angka, teks, gambar).&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Informasi&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Data yang sudah diolah dan bermakna.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Basis Data (Database)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Kumpulan data yang saling berhubungan dan terorganisir.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DBMS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Software yang mengelola basis data: menyimpan, mengambil, mengubah, mengamankan, dan mengontrol akses.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sistem Basis Data&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Gabungan basis data + DBMS + aplikasi + pengguna.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Contoh DBMS yang umum dipakai:&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;DBMS&lt;/th&gt;&lt;th&gt;Tipe&lt;/th&gt;&lt;th&gt;Umum di&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;MySQL&lt;/td&gt;&lt;td&gt;Relasional&lt;/td&gt;&lt;td&gt;Web app, startup&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;PostgreSQL&lt;/td&gt;&lt;td&gt;Relasional&lt;/td&gt;&lt;td&gt;Sistem enterprise, analitik&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Oracle&lt;/td&gt;&lt;td&gt;Relasional&lt;/td&gt;&lt;td&gt;Perbankan, korporat besar&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SQL Server&lt;/td&gt;&lt;td&gt;Relasional&lt;/td&gt;&lt;td&gt;Ekosistem Microsoft&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;SQLite&lt;/td&gt;&lt;td&gt;Relasional&lt;/td&gt;&lt;td&gt;Mobile, embedded, prototipe&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;MongoDB&lt;/td&gt;&lt;td&gt;Dokumen (NoSQL)&lt;/td&gt;&lt;td&gt;Data fleksibel, aplikasi modern&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Datum → Data → Informasi:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Datum:&lt;/strong&gt; &lt;code&gt;&quot;Budi&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data:&lt;/strong&gt; &lt;code&gt;(&quot;Budi&quot;, 25, &quot;Bandung&quot;)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Informasi:&lt;/strong&gt; &lt;em&gt;“Budi, 25 tahun, dari Bandung”&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Satu datum tidak bisa dikaitkan ke siapa pun. Begitu digabung jadi tuple &lt;code&gt;(nama, umur, kota)&lt;/code&gt;, ia baru bermakna. Ini poin penting: &lt;strong&gt;basis data menyimpan data, tapi tujuannya menghasilkan informasi&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum:&lt;/strong&gt; menyebut MySQL sebagai “basis data”. MySQL adalah &lt;strong&gt;DBMS&lt;/strong&gt; — software. Basis datanya adalah kumpulan tabel yang dikelola oleh MySQL. Bedakan keduanya.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;1-2-peran-basis-data-di-aplikasi-nyata&quot;&gt;1.2 Peran Basis Data di Aplikasi Nyata&lt;/h3&gt;
&lt;p&gt;Hampir semua aplikasi modern yang menyimpan state pakai basis data. Contoh:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Aplikasi&lt;/th&gt;&lt;th&gt;Basis Data dipakai untuk&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Media sosial&lt;/td&gt;&lt;td&gt;User, post, komentar, like, follower&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;E-commerce&lt;/td&gt;&lt;td&gt;Produk, pesanan, pembayaran, pengiriman&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Perbankan&lt;/td&gt;&lt;td&gt;Nasabah, transaksi, saldo, pinjaman&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Peta digital&lt;/td&gt;&lt;td&gt;Jalan, lokasi, rute, titik minat&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Rumah sakit&lt;/td&gt;&lt;td&gt;Pasien, dokter, rekam medis, jadwal&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Kampus&lt;/td&gt;&lt;td&gt;Mahasiswa, dosen, mata kuliah, nilai&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Pertanyaan diagnostik: kalau aplikasimu &lt;strong&gt;hilang semua datanya&lt;/strong&gt;, apakah masih berguna? Kalau jawabannya tidak, berarti basis data adalah &lt;strong&gt;jantung&lt;/strong&gt; aplikasi itu.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;2-kenapa-dbms-bukan-file-system&quot;&gt;2. Kenapa DBMS, Bukan File System?&lt;/h2&gt;
&lt;p&gt;Sebelum era DBMS (1960-an), aplikasi menyimpan data di file biasa — TXT, CSV, Excel. Ini masih umum di proyek kecil dan script sederhana. Tapi begitu aplikasi tumbuh, file system mulai &lt;strong&gt;retak&lt;/strong&gt;.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Masalah File System&lt;/th&gt;&lt;th&gt;Solusi DBMS&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Redundansi &amp;amp; inkonsistensi&lt;/td&gt;&lt;td&gt;Normalisasi + constraint&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Sulit akses data (harus tulis program)&lt;/td&gt;&lt;td&gt;Query language (SQL)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Isolasi data (format berbeda tiap file)&lt;/td&gt;&lt;td&gt;Skema terpusat&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Masalah integritas&lt;/td&gt;&lt;td&gt;Constraint, foreign key, transaksi ACID&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Konkurensi terbatas&lt;/td&gt;&lt;td&gt;Concurrency control&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Keamanan minim&lt;/td&gt;&lt;td&gt;Autentikasi + role + privilege&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Sulit recovery&lt;/td&gt;&lt;td&gt;Log &amp;amp; backup otomatis&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Contoh nyata:&lt;/strong&gt; bayangkan dua file — &lt;code&gt;mahasiswa.csv&lt;/code&gt; dan &lt;code&gt;nilai.csv&lt;/code&gt;. Keduanya menyimpan &lt;code&gt;NIM&lt;/code&gt; dan &lt;code&gt;nama_mahasiswa&lt;/code&gt;. Kalau Budi ganti nama, kamu harus update di dua file. Kalau salah satu lupa di-update, data jadi &lt;strong&gt;inkonsisten&lt;/strong&gt; — dan tidak ada yang mendeteksi. Di DBMS, ini dicegah oleh &lt;strong&gt;normalisasi&lt;/strong&gt; (nama disimpan sekali) dan &lt;strong&gt;foreign key&lt;/strong&gt; (relasi antar-tabel dijaga).&lt;/p&gt;
&lt;h3 id=&quot;acid-empat-jaminan-transaksi&quot;&gt;ACID — Empat Jaminan Transaksi&lt;/h3&gt;
&lt;p&gt;Ini alasan paling sering orang beralih dari file system: &lt;strong&gt;transaksi&lt;/strong&gt;. Saat transfer uang antar rekening, kamu tidak mau saldo terpotong di satu sisi tapi tidak masuk di sisi lain. DBMS menjamin ini dengan empat properti — singkatan &lt;strong&gt;ACID&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Properti&lt;/th&gt;&lt;th&gt;Arti&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Atomicity&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Semua atau tidak sama sekali. Transfer gagal → tidak ada perubahan.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Consistency&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Data tetap valid sebelum dan sesudah transaksi.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Isolation&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Transaksi yang berjalan bersamaan tidak saling mengganggu.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Durability&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Setelah commit, data tersimpan permanen — walau listrik mati.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum:&lt;/strong&gt; menganggap ACID itu otomatis di semua DBMS. Tidak. Banyak operasi bisa dimatikan (mis. &lt;code&gt;SET autocommit=1&lt;/code&gt; di MySQL) atau memang tidak didukung (sebagian NoSQL hanya eventual consistency). Untuk sistem keuangan, ACID &lt;strong&gt;wajib&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;3-model-data&quot;&gt;3. Model Data&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Model data&lt;/strong&gt; = cara menggambarkan struktur data, relasi, dan constraint. Ini abstraksi — bukan implementasi. Bayangkan blueprint arsitek vs bangunan jadi.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Model&lt;/th&gt;&lt;th&gt;Deskripsi&lt;/th&gt;&lt;th&gt;Dipakai di&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Relasional&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Tabel + relasi antar tabel&lt;/td&gt;&lt;td&gt;MySQL, PostgreSQL, Oracle&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Entity-Relationship (ER)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Entitas + relasi (untuk perancangan)&lt;/td&gt;&lt;td&gt;Tahap desain&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Semi-terstruktur&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Data fleksibel (JSON, XML)&lt;/td&gt;&lt;td&gt;MongoDB, web services&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Object-based&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Objek + class + inheritance&lt;/td&gt;&lt;td&gt;OODBMS (jarang)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Hierarkis / Jaringan&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Pohon / graf&lt;/td&gt;&lt;td&gt;Sistem legacy&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Yang dominan saat ini: &lt;strong&gt;relasional&lt;/strong&gt;. Sederhana, matang, dan didukung banyak tools. Tapi bukan berarti yang lain mati — NoSQL tumbuh pesat karena kebutuhan data fleksibel (log, sensor, media sosial).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum:&lt;/strong&gt; menganggap NoSQL “lebih modern = lebih baik”. Tidak. NoSQL menang di skenario tertentu (data tidak terstruktur, horizontal scaling). Untuk transaksi keuangan yang butuh ACID ketat, relasional tetap juara.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Model ER dan EER dipelajari detail di &lt;a href=&quot;../rpl106-pertemuan-2/&quot;&gt;Pertemuan 2&lt;/a&gt; dan &lt;a href=&quot;../rpl106-pertemuan-3/&quot;&gt;Pertemuan 3&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;4-bahasa-basis-data&quot;&gt;4. Bahasa Basis Data&lt;/h2&gt;
&lt;p&gt;Interaksi dengan basis data relasional pakai &lt;strong&gt;SQL&lt;/strong&gt;, tapi SQL sebenarnya payung untuk beberapa sub-bahasa. Masing-masing punya peran berbeda:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Kategori&lt;/th&gt;&lt;th&gt;Fungsi&lt;/th&gt;&lt;th&gt;Contoh perintah&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDL&lt;/strong&gt; (Data Definition Language)&lt;/td&gt;&lt;td&gt;Mendefinisikan skema&lt;/td&gt;&lt;td&gt;&lt;code&gt;CREATE TABLE&lt;/code&gt;, &lt;code&gt;ALTER&lt;/code&gt;, &lt;code&gt;DROP&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DML&lt;/strong&gt; (Data Manipulation Language)&lt;/td&gt;&lt;td&gt;Mengubah &amp;amp; mengambil data&lt;/td&gt;&lt;td&gt;&lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DQL&lt;/strong&gt; (Data Query Language)&lt;/td&gt;&lt;td&gt;Mengambil data&lt;/td&gt;&lt;td&gt;&lt;code&gt;SELECT&lt;/code&gt; (sering dimasukkan DML)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DCL&lt;/strong&gt; (Data Control Language)&lt;/td&gt;&lt;td&gt;Kontrol akses&lt;/td&gt;&lt;td&gt;&lt;code&gt;GRANT&lt;/code&gt;, &lt;code&gt;REVOKE&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;TCL&lt;/strong&gt; (Transaction Control)&lt;/td&gt;&lt;td&gt;Kelola transaksi&lt;/td&gt;&lt;td&gt;&lt;code&gt;COMMIT&lt;/code&gt;, &lt;code&gt;ROLLBACK&lt;/code&gt;, &lt;code&gt;SAVEPOINT&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Contoh DDL — bikin tabel:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt;CREATE TABLE&lt;/span&gt;&lt;span style=&quot;color: #4078F2;&quot;&gt; Mahasiswa&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  nim      &lt;/span&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt;CHAR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span style=&quot;color: #986801;&quot;&gt;10&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt; PRIMARY KEY&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  nama     &lt;/span&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt;VARCHAR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span style=&quot;color: #986801;&quot;&gt;100&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt; NOT NULL&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  angkatan &lt;/span&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt;INT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Contoh DML/DQL — ambil data:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;sql&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt;SELECT&lt;/span&gt;&lt;span&gt; nama &lt;/span&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt;FROM&lt;/span&gt;&lt;span&gt; Mahasiswa &lt;/span&gt;&lt;span style=&quot;color: #A626A4;&quot;&gt;WHERE&lt;/span&gt;&lt;span&gt; angkatan =&lt;/span&gt;&lt;span style=&quot;color: #986801;&quot;&gt; 2026&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dua perintah ini kelihatan mirip, tapi beda peran: DDL mengubah &lt;strong&gt;struktur&lt;/strong&gt;, DML/DQL mengubah atau membaca &lt;strong&gt;isi&lt;/strong&gt;. DDL jarang dijalankan runtime; DML/DQL dipanggil terus-menerus oleh aplikasi.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum:&lt;/strong&gt; menganggap &lt;code&gt;SELECT&lt;/code&gt; itu DML. Secara teknis ia DQL (Data Query Language) — meski banyak buku menggabungkannya ke DML karena keduanya bekerja di level data, bukan skema.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Detail lengkap DDL, DML, DCL, TCL akan dibahas di Pertemuan 6–10.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;5-perancangan-basis-data&quot;&gt;5. Perancangan Basis Data&lt;/h2&gt;
&lt;p&gt;Basis data yang baik tidak muncul begitu saja dari kepala. Ada tahapan formal:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Requirement analysis&lt;/strong&gt; — pahami kebutuhan pengguna.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conceptual design&lt;/strong&gt; — model ER: entitas, atribut, relasi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logical design&lt;/strong&gt; — konversi ER ke skema relasional (tabel, PK, FK).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema refinement&lt;/strong&gt; — normalisasi untuk kurangi redundansi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Physical design&lt;/strong&gt; — index, storage, tuning.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Normalisasi&lt;/strong&gt; memisahkan data ke tabel sesuai entitasnya. Tujuan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menghindari duplikasi.&lt;/li&gt;
&lt;li&gt;Mencegah &lt;strong&gt;anomali&lt;/strong&gt; insert/update/delete.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Contoh sederhana: data penerbangan dan data penumpang dipisah — bukan digabung jadi satu tabel besar. Alasannya di &lt;a href=&quot;https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-1/#103-kenapa-dipisah&quot;&gt;section 10.3&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum:&lt;/strong&gt; melompat langsung ke “bikin tabel di MySQL” tanpa modeling. Akibatnya: kolom duplikat, constraint berantakan, dan mengubah skema setelah produksi jadi mimpi buruk.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;6-arsitektur-sistem-basis-data&quot;&gt;6. Arsitektur Sistem Basis Data&lt;/h2&gt;
&lt;h3 id=&quot;6-1-tiga-level-abstraksi&quot;&gt;6.1 Tiga Level Abstraksi&lt;/h3&gt;
&lt;p&gt;DBMS menyembunyikan kompleksitas dari pengguna lewat tiga level abstraksi:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Level&lt;/th&gt;&lt;th&gt;Deskripsi&lt;/th&gt;&lt;th&gt;Contoh&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Physical&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Bagaimana data disimpan di disk&lt;/td&gt;&lt;td&gt;Blok, index, page&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Logical&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Apa data yang disimpan&lt;/td&gt;&lt;td&gt;Tabel, kolom, relasi&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;View&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Bagaimana pengguna melihat&lt;/td&gt;&lt;td&gt;Report, dashboard&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Ini disebut &lt;strong&gt;data abstraction&lt;/strong&gt;. Kamu sebagai developer &lt;strong&gt;tidak perlu tahu&lt;/strong&gt; bagaimana DBMS menyimpan baris di disk. Cukup pakai SQL, sisanya DBMS urus.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum:&lt;/strong&gt; mengira “physical” = “hardware”. Bukan. Physical design adalah &lt;strong&gt;struktur file internal DBMS&lt;/strong&gt; — page size, B-tree index, tablespace. Ini ranah DBA, bukan developer biasa.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;6-2-application-architecture&quot;&gt;6.2 Application Architecture&lt;/h3&gt;
&lt;p&gt;Bagaimana aplikasi terhubung ke DBMS? Ada tiga pola umum:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Arsitektur&lt;/th&gt;&lt;th&gt;Deskripsi&lt;/th&gt;&lt;th&gt;Contoh&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Two-tier&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Aplikasi ↔ DBMS langsung&lt;/td&gt;&lt;td&gt;Aplikasi desktop lama&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Three-tier&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Client ↔ App server ↔ DBMS&lt;/td&gt;&lt;td&gt;Web aplikasi modern&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;N-tier&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Multi-layer, ada API gateway, cache&lt;/td&gt;&lt;td&gt;Sistem enterprise&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Aplikasi web modern umumnya &lt;strong&gt;three-tier&lt;/strong&gt;: frontend (React/Vue) di browser, backend (Node/Python/Go) di server, dan DBMS (PostgreSQL/MySQL) di belakang. Frontend &lt;strong&gt;tidak pernah&lt;/strong&gt; bicara langsung ke DBMS — selalu lewat API backend. Ini penting untuk keamanan dan validasi.&lt;/p&gt;
&lt;h3 id=&quot;6-3-database-architecture&quot;&gt;6.3 Database Architecture&lt;/h3&gt;
&lt;p&gt;Dari sisi deployment DBMS:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tipe&lt;/th&gt;&lt;th&gt;Deskripsi&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Centralized&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Satu server, semua klien terhubung ke sana&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Client-server&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Server basis data + banyak klien&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Parallel&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Beberapa CPU/disk untuk kecepatan&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Distributed&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Data tersebar di beberapa lokasi&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Untuk skala kecil–menengah, &lt;strong&gt;client-server&lt;/strong&gt; sudah cukup. Distributed baru relevan ketika data harus ada di beberapa region geografis (mis. e-commerce multi-negara).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;7-sejarah-singkat-dbms&quot;&gt;7. Sejarah Singkat DBMS&lt;/h2&gt;
&lt;p&gt;Kenapa belajar sejarah? Supaya tahu &lt;strong&gt;kenapa&lt;/strong&gt; DBMS hari ini seperti ini — bukan sekadar aturan yang dihafal.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Era&lt;/th&gt;&lt;th&gt;Perkembangan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1960-an&lt;/td&gt;&lt;td&gt;Hierarkis (IMS), jaringan (CODASYL)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1970-an&lt;/td&gt;&lt;td&gt;Model relasional (Codd). Sistem: System R, Ingres&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1980-an&lt;/td&gt;&lt;td&gt;SQL jadi standar, DBMS komersial (Oracle, DB2)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1990-an&lt;/td&gt;&lt;td&gt;Data warehouse, OLAP, object-oriented&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2000-an&lt;/td&gt;&lt;td&gt;XML, web database&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2010-an&lt;/td&gt;&lt;td&gt;NoSQL, distributed (Hadoop, Cassandra), NewSQL&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2020-an&lt;/td&gt;&lt;td&gt;Cloud DBMS, serverless, multi-cloud&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Poin pentingnya: &lt;strong&gt;model relasional bukan yang pertama&lt;/strong&gt;, tapi menang karena sederhana dan formal. NoSQL muncul di 2010-an bukan untuk menggantikan relasional, tapi &lt;strong&gt;melengkapi&lt;/strong&gt; untuk kasus yang tidak cocok (data tidak terstruktur, skala horizontal).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;8-peran-karir-terkait&quot;&gt;8. Peran Karir Terkait&lt;/h2&gt;
&lt;p&gt;Belajar basis data membuka banyak jalur karier:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Peran&lt;/th&gt;&lt;th&gt;Fokus&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Database Administrator (DBA)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Instalasi, backup, tuning, security&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Database Developer&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Skema, query, stored procedure&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Data Analyst&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Query &amp;amp; visualisasi data&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Data Engineer&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Pipeline data, ETL, warehouse&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Data Scientist&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Model statistik &amp;amp; ML dari data&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Backend Developer&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Integrasi aplikasi ↔ DBMS&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Skill dasarnya sama: &lt;strong&gt;memodelkan data, menulis query, dan memahami trade-off&lt;/strong&gt;. Sisanya spesialisasi.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;9-studi-kasus-1-facebook-status&quot;&gt;9. Studi Kasus 1 — Facebook Status&lt;/h2&gt;
&lt;p&gt;Modul memberikan screenshot status Facebook. Kita analisis jadi tabel relasional. Ini latihan pertama melihat dunia nyata sebagai &lt;strong&gt;tabel yang saling terhubung&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;9-1-identifikasi-entitas&quot;&gt;9.1 Identifikasi Entitas&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;User&lt;/strong&gt; — pembuat status &amp;amp; komentar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Status&lt;/strong&gt; — postingan utama.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comment&lt;/strong&gt; — komentar atas status.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reply&lt;/strong&gt; — balasan atas komentar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;9-2-tabel-status&quot;&gt;9.2 Tabel Status&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Id&lt;/th&gt;&lt;th&gt;Creator&lt;/th&gt;&lt;th&gt;Date&lt;/th&gt;&lt;th&gt;Place&lt;/th&gt;&lt;th&gt;Status&lt;/th&gt;&lt;th&gt;Link&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Budi Rahardjo&lt;/td&gt;&lt;td&gt;Aug 18, 6:59am&lt;/td&gt;&lt;td&gt;Bandung&lt;/td&gt;&lt;td&gt;Kewarganegaraan 1.0: “Maka kalau sekarang…”&lt;/td&gt;&lt;td&gt;rahard.wordpress.com&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;code&gt;Id&lt;/code&gt; = &lt;strong&gt;Primary Key&lt;/strong&gt;. Setiap baris punya &lt;code&gt;Id&lt;/code&gt; unik.&lt;/p&gt;
&lt;h3 id=&quot;9-3-tabel-comments&quot;&gt;9.3 Tabel Comments&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Id_Status&lt;/th&gt;&lt;th&gt;Id_Comment&lt;/th&gt;&lt;th&gt;Comment&lt;/th&gt;&lt;th&gt;Commentator&lt;/th&gt;&lt;th&gt;Date&lt;/th&gt;&lt;th&gt;Time&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;yaaay, saya sudah di 3.0 dong prof!&lt;/td&gt;&lt;td&gt;Syahrul Pribadi&lt;/td&gt;&lt;td&gt;Aug 18&lt;/td&gt;&lt;td&gt;7:17am&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Karena perekonomian kita masih versi BETA…&lt;/td&gt;&lt;td&gt;Pramudya Yuanauto&lt;/td&gt;&lt;td&gt;Aug 18&lt;/td&gt;&lt;td&gt;8:15am&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Setuju pak. Soal UU kewarganegaraan…&lt;/td&gt;&lt;td&gt;Iman Fattah&lt;/td&gt;&lt;td&gt;Aug 18&lt;/td&gt;&lt;td&gt;7:39am&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;kalo memang WNA boleh jadi pejabat publik…&lt;/td&gt;&lt;td&gt;Pulung Bimasakti Ulung&lt;/td&gt;&lt;td&gt;Aug 18&lt;/td&gt;&lt;td&gt;9:02am&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Id_Status&lt;/code&gt; = &lt;strong&gt;Foreign Key&lt;/strong&gt; ke tabel Status.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Id_Comment&lt;/code&gt; = &lt;strong&gt;Primary Key&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Perhatikan: &lt;code&gt;Id_Status&lt;/code&gt; semua bernilai &lt;code&gt;1&lt;/code&gt;. Artinya semua komentar ini menempel ke status yang sama.&lt;/p&gt;
&lt;h3 id=&quot;9-4-tabel-reply-comments&quot;&gt;9.4 Tabel Reply Comments&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Id_Status&lt;/th&gt;&lt;th&gt;Id_Comment&lt;/th&gt;&lt;th&gt;Id_Reply&lt;/th&gt;&lt;th&gt;Comment&lt;/th&gt;&lt;th&gt;Commentator&lt;/th&gt;&lt;th&gt;Date&lt;/th&gt;&lt;th&gt;Time&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Indonesia Tanah Air masih versi BETA&lt;/td&gt;&lt;td&gt;Wikan Danar Sunindyo&lt;/td&gt;&lt;td&gt;Aug 18&lt;/td&gt;&lt;td&gt;8:14am&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Nah tuh paham … hihihi&lt;/td&gt;&lt;td&gt;Pramudya Yuanauto&lt;/td&gt;&lt;td&gt;Aug 18&lt;/td&gt;&lt;td&gt;8:15am&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;mungkin juga bagus, supaya gak punya hubungan keluarga…&lt;/td&gt;&lt;td&gt;Budi Rahardjo&lt;/td&gt;&lt;td&gt;Aug 18&lt;/td&gt;&lt;td&gt;9:12am&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Id_Comment&lt;/code&gt; = &lt;strong&gt;Foreign Key&lt;/strong&gt; ke tabel Comments.&lt;/li&gt;
&lt;li&gt;Dua baris pertama punya &lt;code&gt;Id_Comment = 2&lt;/code&gt; — artinya keduanya &lt;strong&gt;membalas komentar yang sama&lt;/strong&gt; (komentar Pramudya).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;9-5-tabel-user&quot;&gt;9.5 Tabel User&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Email&lt;/th&gt;&lt;th&gt;Password&lt;/th&gt;&lt;th&gt;User_name&lt;/th&gt;&lt;th&gt;Profile_picture&lt;/th&gt;&lt;th&gt;Join_Date&lt;/th&gt;&lt;th&gt;Address&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;budi@example.com&lt;/td&gt;&lt;td&gt;••••••&lt;/td&gt;&lt;td&gt;Budi Rahardjo&lt;/td&gt;&lt;td&gt;Budi.jpg&lt;/td&gt;&lt;td&gt;20 Jan 2014&lt;/td&gt;&lt;td&gt;Bandung&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;syahrul@example.com&lt;/td&gt;&lt;td&gt;••••••&lt;/td&gt;&lt;td&gt;Syahrul Pribadi&lt;/td&gt;&lt;td&gt;syahrul.jpg&lt;/td&gt;&lt;td&gt;15 Mar 2015&lt;/td&gt;&lt;td&gt;Jakarta&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;pramudya@example.com&lt;/td&gt;&lt;td&gt;••••••&lt;/td&gt;&lt;td&gt;Pramudya Yuanauto&lt;/td&gt;&lt;td&gt;pramudya.jpg&lt;/td&gt;&lt;td&gt;10 Aug 2013&lt;/td&gt;&lt;td&gt;Surabaya&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;iman@example.com&lt;/td&gt;&lt;td&gt;••••••&lt;/td&gt;&lt;td&gt;Iman Fattah&lt;/td&gt;&lt;td&gt;iman.jpg&lt;/td&gt;&lt;td&gt;05 Feb 2016&lt;/td&gt;&lt;td&gt;Yogyakarta&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;pulung@example.com&lt;/td&gt;&lt;td&gt;••••••&lt;/td&gt;&lt;td&gt;Pulung Bimasakti Ulung&lt;/td&gt;&lt;td&gt;pulung.jpg&lt;/td&gt;&lt;td&gt;22 Nov 2014&lt;/td&gt;&lt;td&gt;Semarang&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;wikan@example.com&lt;/td&gt;&lt;td&gt;••••••&lt;/td&gt;&lt;td&gt;Wikan Danar Sunindyo&lt;/td&gt;&lt;td&gt;wikan.jpg&lt;/td&gt;&lt;td&gt;08 Jul 2012&lt;/td&gt;&lt;td&gt;Bandung&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Catatan penting:&lt;/strong&gt; password di sistem nyata &lt;strong&gt;tidak pernah&lt;/strong&gt; disimpan plaintext. Sistem pakai hash (bcrypt, argon2, scrypt). Kolom &lt;code&gt;••••••&lt;/code&gt; di sini hanya placeholder. Modul meminta “use dummy data except the user name” — jadi kolom selain &lt;code&gt;User_name&lt;/code&gt; boleh diisi apa saja.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;9-6-diagram-relasi&quot;&gt;9.6 Diagram Relasi&lt;/h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;User ──&amp;lt; Status ──&amp;lt; Comment ──&amp;lt; Reply&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tanda &lt;code&gt;──&amp;lt;&lt;/code&gt; artinya &lt;strong&gt;one-to-many&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 user punya banyak status.&lt;/li&gt;
&lt;li&gt;1 status punya banyak komentar.&lt;/li&gt;
&lt;li&gt;1 komentar punya banyak balasan.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum saat analisis:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menjadikan “Reply” sebagai kolom di tabel Comments (padahal relasi satu-ke-banyak — butuh tabel sendiri).&lt;/li&gt;
&lt;li&gt;Lupa FK di tabel Comment ke Status.&lt;/li&gt;
&lt;li&gt;Menggabung semua jadi satu tabel besar (jadi tidak ternormalisasi).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;10-studi-kasus-2-flight-data&quot;&gt;10. Studi Kasus 2 — Flight Data&lt;/h2&gt;
&lt;p&gt;Modul meminta konversi data penerbangan (Figure 2) jadi 2 tabel. Ini latihan kedua: &lt;strong&gt;normalisasi konkret&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;10-1-tabel-flight&quot;&gt;10.1 Tabel Flight&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attribute&lt;/th&gt;&lt;th&gt;Data&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Flight_ID&lt;/td&gt;&lt;td&gt;GA-101&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Airline&lt;/td&gt;&lt;td&gt;Garuda Indonesia&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Origin&lt;/td&gt;&lt;td&gt;Jakarta (CGK)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Destination&lt;/td&gt;&lt;td&gt;Denpasar (DPS)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Departure_Time&lt;/td&gt;&lt;td&gt;08:30&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Arrival_Time&lt;/td&gt;&lt;td&gt;11:15&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Aircraft_Type&lt;/td&gt;&lt;td&gt;Boeing 737-800&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;code&gt;Flight_ID&lt;/code&gt; = &lt;strong&gt;Primary Key&lt;/strong&gt;. Satu baris = satu penerbangan.&lt;/p&gt;
&lt;h3 id=&quot;10-2-tabel-flight-details&quot;&gt;10.2 Tabel Flight Details&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Flight_ID&lt;/th&gt;&lt;th&gt;Passenger_ID&lt;/th&gt;&lt;th&gt;Passenger_Name&lt;/th&gt;&lt;th&gt;Seat&lt;/th&gt;&lt;th&gt;Class&lt;/th&gt;&lt;th&gt;Ticket_Price&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;GA-101&lt;/td&gt;&lt;td&gt;P001&lt;/td&gt;&lt;td&gt;Andi Wijaya&lt;/td&gt;&lt;td&gt;12A&lt;/td&gt;&lt;td&gt;Economy&lt;/td&gt;&lt;td&gt;1.250.000&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GA-101&lt;/td&gt;&lt;td&gt;P002&lt;/td&gt;&lt;td&gt;Siti Nurhaliza&lt;/td&gt;&lt;td&gt;12B&lt;/td&gt;&lt;td&gt;Economy&lt;/td&gt;&lt;td&gt;1.250.000&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GA-101&lt;/td&gt;&lt;td&gt;P003&lt;/td&gt;&lt;td&gt;Budi Santoso&lt;/td&gt;&lt;td&gt;03A&lt;/td&gt;&lt;td&gt;Business&lt;/td&gt;&lt;td&gt;3.500.000&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Flight_ID&lt;/code&gt; = &lt;strong&gt;Foreign Key&lt;/strong&gt; ke tabel Flight.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;(Flight_ID, Passenger_ID)&lt;/code&gt; = &lt;strong&gt;composite Primary Key&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Composite PK dipakai karena satu penumpang bisa ikut banyak penerbangan — yang unik adalah &lt;strong&gt;pasangan&lt;/strong&gt; &lt;code&gt;(penerbangan, penumpang)&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;10-3-kenapa-dipisah&quot;&gt;10.3 Kenapa Dipisah?&lt;/h3&gt;
&lt;p&gt;Kalau digabung jadi satu tabel:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Flight_ID&lt;/th&gt;&lt;th&gt;Airline&lt;/th&gt;&lt;th&gt;Origin&lt;/th&gt;&lt;th&gt;Destination&lt;/th&gt;&lt;th&gt;Departure&lt;/th&gt;&lt;th&gt;…&lt;/th&gt;&lt;th&gt;Passenger_ID&lt;/th&gt;&lt;th&gt;Passenger_Name&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;GA-101&lt;/td&gt;&lt;td&gt;Garuda Indonesia&lt;/td&gt;&lt;td&gt;CGK&lt;/td&gt;&lt;td&gt;DPS&lt;/td&gt;&lt;td&gt;08:30&lt;/td&gt;&lt;td&gt;…&lt;/td&gt;&lt;td&gt;P001&lt;/td&gt;&lt;td&gt;Andi Wijaya&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GA-101&lt;/td&gt;&lt;td&gt;Garuda Indonesia&lt;/td&gt;&lt;td&gt;CGK&lt;/td&gt;&lt;td&gt;DPS&lt;/td&gt;&lt;td&gt;08:30&lt;/td&gt;&lt;td&gt;…&lt;/td&gt;&lt;td&gt;P002&lt;/td&gt;&lt;td&gt;Siti Nurhaliza&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GA-101&lt;/td&gt;&lt;td&gt;Garuda Indonesia&lt;/td&gt;&lt;td&gt;CGK&lt;/td&gt;&lt;td&gt;DPS&lt;/td&gt;&lt;td&gt;08:30&lt;/td&gt;&lt;td&gt;…&lt;/td&gt;&lt;td&gt;P003&lt;/td&gt;&lt;td&gt;Budi Santoso&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Masalahnya:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kolom &lt;code&gt;Airline&lt;/code&gt;, &lt;code&gt;Origin&lt;/code&gt;, &lt;code&gt;Destination&lt;/code&gt;, &lt;code&gt;Departure&lt;/code&gt; &lt;strong&gt;diulang&lt;/strong&gt; tiap baris penumpang — redundansi.&lt;/li&gt;
&lt;li&gt;Kalau jadwal berubah (mis. departure jadi 08:45), harus &lt;strong&gt;update semua baris&lt;/strong&gt;. Kalau ada satu terlewat → inkonsisten.&lt;/li&gt;
&lt;li&gt;Tidak ada tempat menyimpan penerbangan &lt;strong&gt;tanpa penumpang&lt;/strong&gt; — setiap baris butuh penumpang.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dengan dipecah 2 tabel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Data penerbangan disimpan &lt;strong&gt;sekali&lt;/strong&gt; di tabel &lt;code&gt;Flight&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Update jadwal = update &lt;strong&gt;1 baris&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Penerbangan kosong bisa disimpan (belum ada yang beli tiket).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inilah &lt;strong&gt;normalisasi&lt;/strong&gt;: memisahkan data ke tabel sesuai entitas, menghilangkan duplikasi.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum:&lt;/strong&gt; menyimpan data penerbangan dan penumpang di satu tabel karena “kelihatannya lebih gampang di-query”. Ini jebakan jangka pendek — jangka panjang rusak karena inkonsistensi.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;11-task-3-analisis-software-pilihan&quot;&gt;11. Task 3 — Analisis Software Pilihan&lt;/h2&gt;
&lt;p&gt;Pilih software / aplikasi lain yang menggunakan basis data. &lt;strong&gt;Tidak boleh sama dengan teman sekelas&lt;/strong&gt; — ini memaksa kamu berpikir sendiri, bukan copy-paste.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Langkah:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Pilih software + satu fitur utama. Contoh: Gojek → Pesan GoFood.&lt;/li&gt;
&lt;li&gt;Tanya: &lt;em&gt;“Objek apa saja yang terlibat?”&lt;/em&gt; → Restoran, Menu, Pelanggan, Pesanan, Kurir.&lt;/li&gt;
&lt;li&gt;Tentukan atribut tiap objek.&lt;/li&gt;
&lt;li&gt;Tentukan PK &amp;amp; FK.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Isi di sini:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nama software:&lt;/li&gt;
&lt;li&gt;Fitur utama:&lt;/li&gt;
&lt;li&gt;Screenshot fitur:&lt;/li&gt;
&lt;li&gt;Tabel yang terlibat:&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Nama Tabel&lt;/th&gt;&lt;th&gt;Atribut&lt;/th&gt;&lt;th&gt;Keterangan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Contoh (GoFood):&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Nama Tabel&lt;/th&gt;&lt;th&gt;Atribut&lt;/th&gt;&lt;th&gt;Keterangan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Restoran&lt;/td&gt;&lt;td&gt;ID, Nama, Alamat, Rating&lt;/td&gt;&lt;td&gt;Data restoran mitra&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Menu&lt;/td&gt;&lt;td&gt;ID, ID_Resto, Nama, Harga, Kategori&lt;/td&gt;&lt;td&gt;Item makanan per restoran&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Pesanan&lt;/td&gt;&lt;td&gt;ID, ID_Pelanggan, ID_Resto, Waktu, Total, Status&lt;/td&gt;&lt;td&gt;Transaksi&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Kurir&lt;/td&gt;&lt;td&gt;ID, Nama, Kendaraan, Rating&lt;/td&gt;&lt;td&gt;Data pengantar&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Kesalahan umum:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Menjadikan &lt;strong&gt;atribut&lt;/strong&gt; (mis. “Alamat”) sebagai tabel. Alamat adalah kolom di Restoran, bukan entitas sendiri.&lt;/li&gt;
&lt;li&gt;Lupa PK di salah satu tabel.&lt;/li&gt;
&lt;li&gt;Menggabung semua jadi &lt;strong&gt;satu tabel besar&lt;/strong&gt; — melanggar normalisasi.&lt;/li&gt;
&lt;li&gt;Menyalin contoh GoFood — pilih software lain yang kamu benar-benar paham.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;12-ringkasan&quot;&gt;12. Ringkasan&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Konsep&lt;/th&gt;&lt;th&gt;Poin Kunci&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Data vs DBMS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Data = isi, DBMS = software pengelola&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Kenapa DBMS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;ACID, konkurensi, keamanan, skalabilitas — empat hal yang file system lemah&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Model data&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Relasional dominan; ER untuk desain; NoSQL untuk kasus fleksibel&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Bahasa DBMS&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;DDL (skema), DML (isi), DCL (akses), TCL (transaksi)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Perancangan&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Requirement → ER → relasional → normalisasi → physical&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Arsitektur&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;3 level abstraksi (physical, logical, view) + 3-tier application&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Skill inti&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Melihat dunia nyata sebagai tabel yang saling terhubung&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;13-tugas-teori-resume-video&quot;&gt;13. Tugas Teori — Resume Video&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Ketentuan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Jenis&lt;/td&gt;&lt;td&gt;Selfie video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Platform&lt;/td&gt;&lt;td&gt;YouTube Shorts / TikTok / Reels IG/FB (pilih satu)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Durasi&lt;/td&gt;&lt;td&gt;Maksimal &lt;strong&gt;90 detik&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Komentar&lt;/td&gt;&lt;td&gt;Jangan dimatikan&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Format pengumpulan (&lt;code&gt;.txt&lt;/code&gt; atau &lt;code&gt;.pdf&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Nama :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;NIM :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kelas :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kode Dosen :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Link Video :&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Upload ke &lt;strong&gt;Pengumpulan Tugas Teori Pertemuan 1&lt;/strong&gt; di e-learning.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;14-tugas-praktikum-analisis-software&quot;&gt;14. Tugas Praktikum — Analisis Software&lt;/h2&gt;
&lt;p&gt;Kerjakan sesuai instruksi di &lt;strong&gt;Modul Praktikum Pertemuan 1&lt;/strong&gt;.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Ketentuan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Format&lt;/td&gt;&lt;td&gt;PDF&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Nama file&lt;/td&gt;&lt;td&gt;&lt;code&gt;P1_NIM_Kelas_Pagi/Malam.pdf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Contoh&lt;/td&gt;&lt;td&gt;&lt;code&gt;P1_4342611034_KelasA_Pagi.pdf&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Deadline&lt;/td&gt;&lt;td&gt;1 pekan sejak tugas diberikan&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Tempat&lt;/td&gt;&lt;td&gt;E-learning → Pengumpulan Tugas Praktikum Pertemuan 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Isi laporan:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Software &amp;amp; fitur yang dipilih (berbeda dari teman sekelas).&lt;/li&gt;
&lt;li&gt;Daftar entitas yang terlibat.&lt;/li&gt;
&lt;li&gt;Atribut tiap entitas (minimal PK).&lt;/li&gt;
&lt;li&gt;Sketsa tabel &amp;amp; relasi (boleh diagram sederhana).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Presensi praktikum divalidasi bagi mahasiswa yang sudah mengumpulkan.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;15-checklist-sebelum-kumpul&quot;&gt;15. Checklist Sebelum Kumpul&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Video resume sudah direkam (durasi ≤ 90 detik).&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Komentar video tidak dimatikan.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
File &lt;code&gt;.txt&lt;/code&gt; atau &lt;code&gt;.pdf&lt;/code&gt; memuat Nama, NIM, Kelas, Kode Dosen, Link Video.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Task 3 sudah dipilih (software &amp;amp; fitur, bukan GoFood).&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Entitas sudah teridentifikasi (minimal 3).&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Setiap tabel punya PK.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
FK sudah dicatat di tabel yang tepat.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Sketsa relasi sudah digambar.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
File laporan dinamai &lt;code&gt;P1_NIM_Kelas.pdf&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;16-referensi&quot;&gt;16. Referensi&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Silberschatz, Korth, Sudarshan. &lt;em&gt;Database System Concepts&lt;/em&gt; (6th ed.). McGraw-Hill. Bab 1: Introduction.&lt;/li&gt;
&lt;li&gt;Connolly &amp;amp; Begg. &lt;em&gt;Database Systems&lt;/em&gt; (6th ed.). Pearson, 2015. Bab 1–2.&lt;/li&gt;
&lt;li&gt;Elmasri &amp;amp; Navathe. &lt;em&gt;Fundamentals of Database Systems&lt;/em&gt; (7th ed.). Pearson. Bab 1.&lt;/li&gt;
&lt;li&gt;Yanto, R. &lt;em&gt;Manajemen Basis Data Menggunakan MySQL&lt;/em&gt;. Deepublish, 2016.&lt;/li&gt;
&lt;li&gt;Codd, E. F. (1970). &lt;em&gt;A Relational Model of Data for Large Shared Data Banks&lt;/em&gt;. Communications of the ACM.&lt;/li&gt;
&lt;li&gt;Slide RPL106 Pertemuan 1 — Ahmadi Irmansyah Lubis.&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Pertemuan 2 — Data Modelling: Entity Relationship Diagram (ER-Diagram)</title>
        <published>2026-09-22T00:00:00+00:00</published>
        <updated>2026-09-22T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-2/"/>
        <id>https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-2/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-2/">&lt;p&gt;Pertemuan 1 menjawab “kenapa butuh basis data”. Pertemuan 2 menjawab “bagaimana caranya
merancang basis data”. Alat utamanya: &lt;strong&gt;ER Diagram&lt;/strong&gt; — sketsa konseptual sebelum menyentuh
SQL sama sekali.&lt;/p&gt;
&lt;h2 id=&quot;tujuan-pembelajaran&quot;&gt;Tujuan Pembelajaran&lt;/h2&gt;
&lt;p&gt;Setelah pertemuan ini, mahasiswa mampu:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Menjelaskan mengapa pemodelan data dibutuhkan dan posisinya dalam siklus perancangan basis data.&lt;/li&gt;
&lt;li&gt;Mengidentifikasi komponen ERD: entitas, atribut, relasi, dan kunci.&lt;/li&gt;
&lt;li&gt;Membedakan superkey, candidate key, dan primary key.&lt;/li&gt;
&lt;li&gt;Menganalisis peran (role) entitas dalam relasi rekursif.&lt;/li&gt;
&lt;li&gt;Menganalisis derajat relasi: unary, binary, ternary.&lt;/li&gt;
&lt;li&gt;Menganalisis kardinalitas: 1:1, 1:N, M:N.&lt;/li&gt;
&lt;li&gt;Membedakan total participation dan partial participation.&lt;/li&gt;
&lt;li&gt;Mengidentifikasi weak entity dan discriminator-nya.&lt;/li&gt;
&lt;li&gt;Mentransformasikan skema ERD ke rancangan tabel relasional.&lt;/li&gt;
&lt;li&gt;Merancang ERD dengan draw.io.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;1-kenapa-harus-menggambar-dulu&quot;&gt;1. Kenapa Harus Menggambar Dulu?&lt;/h2&gt;
&lt;p&gt;Bayangkan kamu disuruh membuat aplikasi perpustakaan. Tanpa berpikir panjang, kamu mungkin langsung buka MySQL dan bikin tabel &lt;code&gt;buku&lt;/code&gt;, &lt;code&gt;anggota&lt;/code&gt;, &lt;code&gt;peminjaman&lt;/code&gt;. Kelihatannya masuk akal. Tapi begitu aplikasi jalan sebulan, muncul pertanyaan:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Buku bisa dipinjam berkali-kali. Bagaimana menyimpan &lt;strong&gt;riwayat&lt;/strong&gt; peminjaman?&lt;/li&gt;
&lt;li&gt;Satu peminjaman bisa berisi 3 buku. Disimpan di kolom mana?&lt;/li&gt;
&lt;li&gt;Kalau anggota ganti alamat, apakah harus update di semua baris peminjaman?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Semua pertanyaan ini muncul karena &lt;strong&gt;tabelnya dibuat tanpa rancangan&lt;/strong&gt;. Kodenya jalan, tapi struktur datanya rapuh.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ERD memaksa kita berpikir di level konsep dulu&lt;/strong&gt;, sebelum menyentuh DBMS. Di tahap ini, semua masih di atas kertas — murah untuk diubah, murah untuk didiskusikan dengan customer, murah untuk dibuang kalau salah. Bandingkan dengan mengubah tabel yang sudah produksi dan menyimpan 100.000 baris data — itu mahal, berisiko, dan seringkali tidak mungkin tanpa downtime.&lt;/p&gt;
&lt;h3 id=&quot;posisi-erd-dalam-siklus-perancangan&quot;&gt;Posisi ERD dalam Siklus Perancangan&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-siklus.svg&quot; alt=&quot;erd-siklus&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Perhatikan: ERD bukan langkah pertama (itu requirement analysis) dan bukan langkah terakhir (itu physical design). ERD ada &lt;strong&gt;di tengah&lt;/strong&gt; — jembatan yang menerjemahkan bahasa bisnis (“pelanggan bisa pesan banyak produk”) menjadi bahasa teknis (“tabel, kolom, kunci”).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;2-conceptual-design-apa-yang-sebenarnya-kita-lakukan&quot;&gt;2. Conceptual Design — Apa yang Sebenarnya Kita Lakukan?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Model ER&lt;/strong&gt; adalah teknik pemodelan data yang menggambarkan entitas dan relasi antar entitas secara visual. Kata “konseptual” di sini penting: kita &lt;strong&gt;belum bicara tipe data&lt;/strong&gt;. Belum ada &lt;code&gt;VARCHAR(50)&lt;/code&gt;, &lt;code&gt;INT&lt;/code&gt;, &lt;code&gt;DATE&lt;/code&gt;. Belum ada index. Belum ada engine. Semua itu nanti di tahap physical design.&lt;/p&gt;
&lt;p&gt;Di tahap konseptual, kita hanya menjawab empat pertanyaan:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Entitas apa saja&lt;/strong&gt; yang terlibat? (Pegawai? Departemen? Proyek?)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Relasi apa&lt;/strong&gt; yang menghubungkan mereka? (Pegawai &lt;em&gt;bekerja di&lt;/em&gt; Departemen)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Informasi apa&lt;/strong&gt; yang harus disimpan dari entitas &amp;amp; relasi itu?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aturan bisnis apa&lt;/strong&gt; yang berlaku? (“Satu departemen hanya boleh punya satu manajer”)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hasilnya: &lt;strong&gt;ER Diagram&lt;/strong&gt; — gambar. Nanti diagram ini dipetakan menjadi &lt;strong&gt;skema relasional&lt;/strong&gt; (kumpulan tabel SQL).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;3-notasi-er-diagram&quot;&gt;3. Notasi ER Diagram&lt;/h2&gt;
&lt;p&gt;Notasi yang dipakai di modul ini adalah &lt;strong&gt;Chen notation&lt;/strong&gt; — gaya klasik dengan bentuk geometris berbeda untuk setiap komponen. Ini notasi paling jelas untuk dipelajari karena setiap elemen punya bentuk khas.&lt;/p&gt;
&lt;h3 id=&quot;3-1-simbol-dasar&quot;&gt;3.1 Simbol Dasar&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Simbol&lt;/th&gt;&lt;th&gt;Arti&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Persegi panjang&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Entity set&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Persegi panjang garis ganda&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Weak entity set&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Belah ketupat&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Relationship set&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Belah ketupat garis ganda&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Identifying relationship&lt;/strong&gt; (untuk weak entity)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Elips&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Atribut&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Elips garis ganda&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Multivalued attribute&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Elips garis putus-putus&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Derived attribute&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Garis bawah pada atribut&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Primary key&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Garis penghubung&lt;/td&gt;&lt;td&gt;Menghubungkan atribut ↔ entitas, entitas ↔ relasi&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;3-2-contoh-notasi-lengkap&quot;&gt;3.2 Contoh Notasi Lengkap&lt;/h3&gt;
&lt;p&gt;Perhatikan ERD pegawai–departemen berikut:&lt;/p&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-pegawai-dept.svg&quot; alt=&quot;erd-pegawai-dept&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Yang perlu kamu perhatikan dari diagram ini:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nopeg&lt;/code&gt; adalah &lt;strong&gt;primary key&lt;/strong&gt; — digarisbawahi. Fungsinya: membedakan satu pegawai dari pegawai lain.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nama&lt;/code&gt; adalah &lt;strong&gt;composite attribute&lt;/strong&gt; — bisa dipecah jadi &lt;code&gt;namadpn&lt;/code&gt; dan &lt;code&gt;namablkg&lt;/code&gt;. Kenapa dipisah? Karena kadang kita perlu mencari “semua pegawai dengan nama depan Budi”.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;notelp&lt;/code&gt; adalah &lt;strong&gt;multivalued&lt;/strong&gt; — satu pegawai bisa punya nomor HP dan nomor kantor. Karena bisa lebih dari satu, dia digambar dengan elips garis ganda.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;umur&lt;/code&gt; adalah &lt;strong&gt;derived&lt;/strong&gt; — nilainya bisa dihitung dari &lt;code&gt;tgllahir&lt;/code&gt;. Jadi sebenarnya tidak perlu disimpan; tapi kalau digambar, dia pakai elips garis putus-putus.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BEKERJA_DI&lt;/code&gt; adalah &lt;strong&gt;relationship&lt;/strong&gt; dengan atributnya sendiri, &lt;code&gt;mulai&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Empat hal ini sering ditanyakan di ujian: kapan atribut jadi composite, kapan jadi multivalued, kapan jadi derived.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;4-entity-benda-yang-kita-bicara&quot;&gt;4. Entity — Benda yang Kita Bicara&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Entity&lt;/strong&gt; = objek di dunia nyata yang bisa dibedakan dari objek lain. Bisa berupa orang (Pegawai), benda (Buku), tempat (Ruang), kejadian (Transaksi), atau konsep abstrak (Mata Kuliah).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Entity set&lt;/strong&gt; = kumpulan entity sejenis. Kalau “Pegawai Budi” adalah entity, “semua pegawai di kampus” adalah entity set.&lt;/p&gt;
&lt;p&gt;Dua aturan penting:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Semua entity dalam satu entity set punya atribut yang sama.&lt;/strong&gt; Kalau Pegawai punya &lt;code&gt;nopeg&lt;/code&gt;, &lt;code&gt;nama&lt;/code&gt;, &lt;code&gt;alamat&lt;/code&gt;, maka semua pegawai punya ketiga atribut itu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Setiap entity set wajib punya key.&lt;/strong&gt; Kalau tidak ada key, kita tidak bisa membedakan satu instance dari instance lain.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-pegawai-basic.svg&quot; alt=&quot;erd-pegawai-basic&quot; loading=&quot;lazy&quot;&gt;
&lt;h3 id=&quot;strong-entity-vs-weak-entity&quot;&gt;Strong Entity vs Weak Entity&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Strong Entity&lt;/th&gt;&lt;th&gt;Weak Entity&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Primary key&lt;/td&gt;&lt;td&gt;Punya sendiri&lt;/td&gt;&lt;td&gt;Tidak punya&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Keberadaan&lt;/td&gt;&lt;td&gt;Mandiri&lt;/td&gt;&lt;td&gt;Bergantung pada entitas lain&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Notasi&lt;/td&gt;&lt;td&gt;Persegi panjang tunggal&lt;/td&gt;&lt;td&gt;Persegi panjang garis ganda&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Contoh&lt;/td&gt;&lt;td&gt;Pegawai&lt;/td&gt;&lt;td&gt;Tanggungan pegawai&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Weak entity jarang muncul di soal, tapi wajib dipahami. Dibahas lengkap di &lt;a href=&quot;https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-2/#13-weak-entity&quot;&gt;section 13&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;5-attribute-properti-dari-entity&quot;&gt;5. Attribute — Properti dari Entity&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Atribut&lt;/strong&gt; adalah properti dari entitas. Setiap atribut punya &lt;strong&gt;domain&lt;/strong&gt; — himpunan nilai yang boleh dimiliki. Contoh domain: &lt;code&gt;18 &amp;lt; umur &amp;lt; 65&lt;/code&gt; untuk umur pegawai.&lt;/p&gt;
&lt;h3 id=&quot;5-1-enam-jenis-atribut&quot;&gt;5.1 Enam Jenis Atribut&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Jenis&lt;/th&gt;&lt;th&gt;Definisi&lt;/th&gt;&lt;th&gt;Contoh&lt;/th&gt;&lt;th&gt;Notasi&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Simple&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Tidak bisa dipecah&lt;/td&gt;&lt;td&gt;&lt;code&gt;nopeg&lt;/code&gt;, &lt;code&gt;namadpn&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Elips biasa&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Composite&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Bisa dipecah jadi sub-atribut&lt;/td&gt;&lt;td&gt;&lt;code&gt;nama&lt;/code&gt; → &lt;code&gt;namadpn&lt;/code&gt; + &lt;code&gt;namablkg&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Elips bercabang&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Single-valued&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Satu nilai per entitas&lt;/td&gt;&lt;td&gt;&lt;code&gt;nopeg&lt;/code&gt;, &lt;code&gt;tgllahir&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Elips biasa&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Multivalued&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Bisa banyak nilai&lt;/td&gt;&lt;td&gt;&lt;code&gt;notelp&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Elips garis ganda&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Derived&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Dihitung dari atribut lain&lt;/td&gt;&lt;td&gt;&lt;code&gt;umur&lt;/code&gt; dari &lt;code&gt;tgllahir&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Elips garis putus-putus&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Key&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Unik mengidentifikasi&lt;/td&gt;&lt;td&gt;&lt;code&gt;nopeg&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Teks digarisbawahi&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Cara berpikir yang membantu:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kalau nilainya cuma satu dan tidak bisa dipecah lagi → &lt;strong&gt;simple&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Kalau nilainya bisa dipecah (nama → nama depan + nama belakang) → &lt;strong&gt;composite&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Kalau satu orang bisa punya banyak nilai (nomor HP) → &lt;strong&gt;multivalued&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Kalau nilainya bisa dihitung dari atribut lain (umur dari tanggal lahir) → &lt;strong&gt;derived&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;5-2-contoh-visual&quot;&gt;5.2 Contoh Visual&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-pegawai-composite.svg&quot; alt=&quot;erd-pegawai-composite&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Perhatikan &lt;code&gt;umur&lt;/code&gt; — dia derived dari &lt;code&gt;tgllahir&lt;/code&gt;. Di dunia nyata, menyimpan umur di database itu &lt;strong&gt;ide buruk&lt;/strong&gt;: tahun depan umurnya salah. Lebih baik hitung langsung saat query.&lt;/p&gt;
&lt;p&gt;Hal yang sama berlaku untuk composite: menyimpan &lt;code&gt;nama&lt;/code&gt; sebagai satu kolom oke, tapi kalau kamu butuh mencari “semua orang dengan nama depan Budi”, kamu harus parsing string. Kalau dipecah jadi dua kolom, pencarian jadi trivial.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;6-relationship-hubungan-antar-entity&quot;&gt;6. Relationship — Hubungan antar Entity&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Relationship&lt;/strong&gt; adalah asosiasi antara dua entitas atau lebih. Contoh: &lt;em&gt;“Pegawai Budi bekerja di Departemen Farmasi”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Di diagram, relationship digambar sebagai belah ketupat yang menghubungkan dua entitas. Yang sering membingungkan: &lt;strong&gt;relationship juga bisa punya atribut&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;6-1-relationship-set&quot;&gt;6.1 Relationship Set&lt;/h3&gt;
&lt;p&gt;Himpunan relationship sejenis. Contoh: himpunan semua pasangan (pegawai, departemen) yang terhubung oleh &lt;code&gt;bekerja_di&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;6-2-atribut-pada-relationship&quot;&gt;6.2 Atribut pada Relationship&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-bekerja-di.svg&quot; alt=&quot;erd-bekerja-di&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Perhatikan relasi &lt;code&gt;BEKERJA_DI&lt;/code&gt; punya atribut &lt;code&gt;mulai&lt;/code&gt; — tanggal pegawai mulai bekerja di departemen itu. Kenapa &lt;code&gt;mulai&lt;/code&gt; tidak ditaruh di PEGAWAI atau DEPARTEMEN?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kalau ditaruh di &lt;strong&gt;PEGAWAI&lt;/strong&gt;: satu pegawai bisa pindah departemen. Kalau pindah, &lt;code&gt;mulai&lt;/code&gt; di-update, dan tanggal mulai di departemen lama hilang. Padahal kita mungkin butuh riwayat.&lt;/li&gt;
&lt;li&gt;Kalau ditaruh di &lt;strong&gt;DEPARTEMEN&lt;/strong&gt;: satu departemen punya banyak pegawai. &lt;code&gt;mulai&lt;/code&gt; jadi ambigu — mulai apa?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jadi &lt;code&gt;mulai&lt;/code&gt; &lt;strong&gt;milik relasi&lt;/strong&gt;, bukan milik entitas. Ini contoh bagus bagaimana ERD memaksa kita menempatkan atribut di tempat yang benar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cara cepat menentukan&lt;/strong&gt;: tanya “nilai ini berubah kalau pasangan (A, B) berubah?” Kalau ya, berarti atribut itu milik relasi.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;7-keys-cara-membedakan-entity&quot;&gt;7. Keys — Cara Membedakan Entity&lt;/h2&gt;
&lt;p&gt;Dari perspektif basis data, setiap entity harus bisa dibedakan dari entity lain. Bayangkan ada dua pegawai bernama “Budi Santoso”. Bagaimana membedakan mereka? Lewat &lt;code&gt;nopeg&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;7-1-tiga-level-key&quot;&gt;7.1 Tiga Level Key&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-keys-flow.svg&quot; alt=&quot;erd-keys-flow&quot; loading=&quot;lazy&quot;&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Istilah&lt;/th&gt;&lt;th&gt;Definisi&lt;/th&gt;&lt;th&gt;Contoh&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Superkey&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Satu atau lebih atribut yang nilainya unik per entitas&lt;/td&gt;&lt;td&gt;&lt;code&gt;{nopeg}&lt;/code&gt;, &lt;code&gt;{nopeg, nama}&lt;/code&gt;, &lt;code&gt;{nopeg, tgllahir}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Candidate key&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Superkey &lt;strong&gt;paling minimal&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;{nopeg}&lt;/code&gt;, &lt;code&gt;{email}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Primary key&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Candidate key yang &lt;strong&gt;dipilih&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;{nopeg}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Mari kita bedah dengan contoh konkret:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{nopeg}&lt;/code&gt; → &lt;strong&gt;superkey&lt;/strong&gt; (unik). Juga &lt;strong&gt;candidate key&lt;/strong&gt; (tidak ada subset yang unik — &lt;code&gt;nopeg&lt;/code&gt; sendiri sudah unik).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{email}&lt;/code&gt; → &lt;strong&gt;superkey&lt;/strong&gt; (asumsi semua pegawai punya email unik). Juga &lt;strong&gt;candidate key&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{nopeg, nama}&lt;/code&gt; → &lt;strong&gt;superkey&lt;/strong&gt; (masih unik karena &lt;code&gt;nopeg&lt;/code&gt; unik). Tapi &lt;strong&gt;bukan candidate key&lt;/strong&gt; karena tidak minimal — &lt;code&gt;nama&lt;/code&gt; tidak perlu.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dari sekian candidate key, kita &lt;strong&gt;pilih satu&lt;/strong&gt; sebagai &lt;strong&gt;primary key&lt;/strong&gt;. Biasanya yang paling stabil (tidak akan berubah seumur hidup entitas). Email bisa berubah; nomor pegawai biasanya tidak.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;8-role-in-relationship-peran-entity&quot;&gt;8. Role in Relationship — Peran Entity&lt;/h2&gt;
&lt;p&gt;Ada dua skenario yang sering muncul:&lt;/p&gt;
&lt;h3 id=&quot;8-1-satu-entity-di-beberapa-relationship&quot;&gt;8.1 Satu Entity di Beberapa Relationship&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-book-multirel.svg&quot; alt=&quot;erd-book-multirel&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;&lt;code&gt;BOOK&lt;/code&gt; berpartisipasi di dua relationship: &lt;code&gt;borrow&lt;/code&gt; (dengan &lt;code&gt;STUDENT&lt;/code&gt;) dan &lt;code&gt;has&lt;/code&gt; (dengan &lt;code&gt;BOOK_TYPE&lt;/code&gt;). Masing-masing relasi berbeda peran dan berbeda atribut. Ini normal — satu entity bisa terlibat banyak relasi.&lt;/p&gt;
&lt;h3 id=&quot;8-2-recursive-relationship-self-relationship&quot;&gt;8.2 Recursive Relationship (Self-Relationship)&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-pegawai-recursive.svg&quot; alt=&quot;erd-pegawai-recursive&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Kasus khusus: satu entity berelasi &lt;strong&gt;dengan dirinya sendiri&lt;/strong&gt;. Contoh klasik: pegawai bisa jadi &lt;strong&gt;supervisor&lt;/strong&gt; dari pegawai lain, sekaligus jadi &lt;strong&gt;bawahan&lt;/strong&gt; dari pegawai lain lagi.&lt;/p&gt;
&lt;p&gt;Di sini ada dua &lt;strong&gt;role&lt;/strong&gt; berbeda dalam satu relasi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Peran &lt;strong&gt;supervisor&lt;/strong&gt; (yang atasan)&lt;/li&gt;
&lt;li&gt;Peran &lt;strong&gt;bawahan&lt;/strong&gt; (yang anak buah)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Role ini penting untuk menentukan arah relasi. Kalau tidak ditulis, diagram jadi ambigu.&lt;/p&gt;
&lt;p&gt;Bentuk tabelnya: &lt;code&gt;BertanggungJawab(supervisor_nopeg, bawahan_nopeg)&lt;/code&gt;. Perhatikan kedua kolom adalah FK yang menunjuk ke tabel &lt;code&gt;Pegawai&lt;/code&gt; yang sama.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;9-derajat-relasi-berapa-entity-yang-terlibat&quot;&gt;9. Derajat Relasi — Berapa Entity yang Terlibat?&lt;/h2&gt;
&lt;p&gt;Derajat = &lt;strong&gt;jumlah entity set&lt;/strong&gt; yang terlibat dalam satu relationship.&lt;/p&gt;
&lt;h3 id=&quot;9-1-unary-degree-1&quot;&gt;9.1 Unary (Degree 1)&lt;/h3&gt;
&lt;p&gt;Satu entity dengan dirinya sendiri. Contoh: &lt;code&gt;Pegawai&lt;/code&gt; mengawasi &lt;code&gt;Pegawai&lt;/code&gt; (lihat &lt;a href=&quot;https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-2/#82-recursive-relationship-self-relationship&quot;&gt;section 8.2&lt;/a&gt;).&lt;/p&gt;
&lt;h3 id=&quot;9-2-binary-degree-2&quot;&gt;9.2 Binary (Degree 2)&lt;/h3&gt;
&lt;p&gt;Paling umum. Dua entity terlibat.&lt;/p&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-binary.svg&quot; alt=&quot;erd-binary&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Bentuk tabel: &lt;code&gt;Work_In(id, deptno)&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;9-3-ternary-degree-3&quot;&gt;9.3 Ternary (Degree 3)&lt;/h3&gt;
&lt;p&gt;Tiga entity terlibat &lt;strong&gt;bersamaan&lt;/strong&gt;.&lt;/p&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-ternary.svg&quot; alt=&quot;erd-ternary&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Contoh: &lt;code&gt;EMPLOYEE&lt;/code&gt; bekerja di &lt;code&gt;DEPARTMENT&lt;/code&gt; pada &lt;code&gt;JOB&lt;/code&gt; tertentu. Bentuk tabel: &lt;code&gt;Work_In(id, deptno, job_id)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hal yang sering salah dipahami:&lt;/strong&gt; ternary relationship &lt;strong&gt;bukan&lt;/strong&gt; tiga binary relationship. Perbedaannya:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tiga binary terpisah&lt;/strong&gt;: “A bekerja di B” dan “A punya jabatan C” dan “B punya jabatan C” — tiga fakta independen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Satu ternary&lt;/strong&gt;: “A bekerja di B &lt;strong&gt;dengan jabatan&lt;/strong&gt; C” — fakta ini &lt;strong&gt;baru ada&lt;/strong&gt; kalau ketiga komponen hadir bersamaan.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Contoh konkret: seorang dokter bisa bekerja di beberapa rumah sakit, dan punya beberapa spesialisasi. Tapi “dokter A berpraktik di RS B dengan spesialisasi C” adalah satu fakta ternary yang tidak bisa dipecah.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;10-cardinality-berapa-banyak&quot;&gt;10. Cardinality — Berapa Banyak?&lt;/h2&gt;
&lt;p&gt;Cardinality menyatakan &lt;strong&gt;jumlah entitas&lt;/strong&gt; yang bisa diasosiasikan dengan entitas lain melalui relationship.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Kardinalitas&lt;/th&gt;&lt;th&gt;Arti&lt;/th&gt;&lt;th&gt;Contoh&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;1 : 1&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Satu ↔ satu&lt;/td&gt;&lt;td&gt;Departemen ↔ Manajer&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;1 : N&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Satu ↔ banyak&lt;/td&gt;&lt;td&gt;Manajer ↔ Departemen (yang dikelola)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;M : N&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Banyak ↔ banyak&lt;/td&gt;&lt;td&gt;Pegawai ↔ Departemen&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;10-1-one-to-one-1-1&quot;&gt;10.1 One-to-One (1:1)&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-cardinality-1-1.svg&quot; alt=&quot;erd-cardinality-1-1&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Setiap departemen punya paling banyak &lt;strong&gt;satu&lt;/strong&gt; manajer, dan setiap manajer mengelola paling banyak &lt;strong&gt;satu&lt;/strong&gt; departemen. Relasi ini jarang di dunia nyata, tapi ada — misalnya suami-istri (dalam sistem monogami), atau pegawai-kartu pegawai.&lt;/p&gt;
&lt;h3 id=&quot;10-2-one-to-many-1-n&quot;&gt;10.2 One-to-Many (1:N)&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-cardinality-1-n.svg&quot; alt=&quot;erd-cardinality-1-n&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Setiap departemen punya paling banyak &lt;strong&gt;satu&lt;/strong&gt; manajer, tapi satu manajer bisa mengelola &lt;strong&gt;beberapa&lt;/strong&gt; departemen. Ini disebut one-to-many dari sisi manajer, atau many-to-one dari sisi departemen.&lt;/p&gt;
&lt;p&gt;Cara baca kardinalitas: lihat angka di &lt;strong&gt;ujung garis&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ujung &lt;code&gt;manajer&lt;/code&gt; = &lt;code&gt;1&lt;/code&gt; → “satu manajer”&lt;/li&gt;
&lt;li&gt;Ujung &lt;code&gt;departemen&lt;/code&gt; = &lt;code&gt;N&lt;/code&gt; → “banyak departemen”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jadi kalau dibaca dari sisi manajer: “1 manajer mengelola N departemen”.&lt;/p&gt;
&lt;h3 id=&quot;10-3-many-to-many-m-n&quot;&gt;10.3 Many-to-Many (M:N)&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-cardinality-m-n.svg&quot; alt=&quot;erd-cardinality-m-n&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;Seorang pegawai bisa bekerja di beberapa departemen, dan satu departemen bisa punya banyak pegawai. Ini &lt;strong&gt;tidak bisa&lt;/strong&gt; langsung jadi tabel — harus dipecah jadi &lt;strong&gt;tabel asosiasi&lt;/strong&gt; dengan 2 foreign key. Caranya di &lt;a href=&quot;https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-2/#14-transformasi-erd-ke-skema-relasional&quot;&gt;section 14&lt;/a&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;11-arti-tanda-panah&quot;&gt;11. Arti Tanda Panah&lt;/h2&gt;
&lt;p&gt;Ini topik yang paling sering disalahpahami. Tanda panah dalam ERD berarti &lt;strong&gt;“paling banyak satu”&lt;/strong&gt; (at most one). &lt;strong&gt;Bukan&lt;/strong&gt; berarti “wajib ada”.&lt;/p&gt;
&lt;p&gt;Pertimbangkan panah &lt;code&gt;Departemen → Pegawai&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Artinya: setiap departemen punya paling banyak &lt;strong&gt;satu&lt;/strong&gt; manajer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tidak&lt;/strong&gt; berarti: setiap departemen &lt;strong&gt;wajib&lt;/strong&gt; punya manajer. Departemen tanpa manajer masih valid.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Untuk menyatakan “wajib ada”, kamu butuh &lt;strong&gt;participation constraint&lt;/strong&gt; (lihat &lt;a href=&quot;https://mroczect.biz.id/lectures/courses/rpl106/rpl106-pertemuan-2/#12-participation-constraint&quot;&gt;section 12&lt;/a&gt;). Ini dua hal berbeda:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kardinalitas&lt;/strong&gt; menjawab: “berapa banyak?”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Participation&lt;/strong&gt; menjawab: “wajib atau opsional?”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;11-1-perbandingan-arah-panah&quot;&gt;11.1 Perbandingan Arah Panah&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;ERD&lt;/th&gt;&lt;th&gt;Panah&lt;/th&gt;&lt;th&gt;Arti&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;(a)&lt;/td&gt;&lt;td&gt;&lt;code&gt;pinjaman → nasabah&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Setiap pinjaman punya paling banyak 1 nasabah (banyak pinjaman bisa milik satu nasabah)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;(b)&lt;/td&gt;&lt;td&gt;&lt;code&gt;nasabah → pinjaman&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Setiap nasabah punya paling banyak 1 pinjaman (satu nasabah hanya boleh pinjam sekali)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;(c)&lt;/td&gt;&lt;td&gt;Keduanya&lt;/td&gt;&lt;td&gt;Setiap nasabah punya paling banyak 1 pinjaman, dan setiap pinjaman punya paling banyak 1 nasabah (one-to-one)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Perbedaan arah panah &lt;strong&gt;mengubah kardinalitas secara fundamental&lt;/strong&gt;. Jadi saat menggambar ERD, selalu periksa arah panahnya dengan cermat.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;12-participation-constraint-wajib-atau-opsional&quot;&gt;12. Participation Constraint — Wajib atau Opsional?&lt;/h2&gt;
&lt;p&gt;Menentukan apakah &lt;strong&gt;semua&lt;/strong&gt; instance entitas &lt;strong&gt;wajib&lt;/strong&gt; terlibat dalam relasi.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Jenis&lt;/th&gt;&lt;th&gt;Arti&lt;/th&gt;&lt;th&gt;Notasi&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Total participation&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Semua instance &lt;strong&gt;wajib&lt;/strong&gt; ikut&lt;/td&gt;&lt;td&gt;Garis ganda &lt;code&gt;==&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Partial participation&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Sebagian boleh tidak ikut&lt;/td&gt;&lt;td&gt;Garis tunggal &lt;code&gt;—&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;12-1-contoh-kasus-bank&quot;&gt;12.1 Contoh Kasus Bank&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-participation.svg&quot; alt=&quot;erd-participation&quot; loading=&quot;lazy&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pinjaman → Peminjaman = total.&lt;/strong&gt; Setiap pinjaman &lt;strong&gt;wajib&lt;/strong&gt; punya nasabah yang terhubung. Pinjaman tidak bisa ada tanpa nasabah.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Customer → Peminjaman = partial.&lt;/strong&gt; Sebagian customer mungkin hanya punya tabungan, tidak punya pinjaman. Jadi keikutsertaan mereka di relasi &lt;code&gt;peminjaman&lt;/code&gt; bersifat opsional.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;12-2-kombinasi-total-kardinalitas&quot;&gt;12.2 Kombinasi Total + Kardinalitas&lt;/h3&gt;
&lt;p&gt;Ini contoh yang sering muncul di ujian. Pertanyaan: &lt;em&gt;“Apa yang terjadi jika Departemen memiliki partisipasi total dalam Mengelola?”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Analisis:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Partisipasi &lt;strong&gt;total&lt;/strong&gt; → setiap departemen &lt;strong&gt;wajib&lt;/strong&gt; ikut relasi &lt;code&gt;Mengelola&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Kardinalitas &lt;code&gt;1:N&lt;/code&gt; (dari sisi departemen) → setiap departemen dikelola paling banyak &lt;strong&gt;satu&lt;/strong&gt; manajer.&lt;/li&gt;
&lt;li&gt;Gabungan keduanya: setiap departemen &lt;strong&gt;pasti&lt;/strong&gt; punya &lt;strong&gt;tepat satu&lt;/strong&gt; manajer.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Konsekuensi praktisnya: kalau kamu hapus manajer dari departemen, itu &lt;strong&gt;melanggar aturan&lt;/strong&gt;. Ini yang disebut &lt;strong&gt;referential integrity constraint&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;13-weak-entity-entity-yang-bergantung&quot;&gt;13. Weak Entity — Entity yang Bergantung&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Weak entity&lt;/strong&gt; adalah entity set yang &lt;strong&gt;tidak punya primary key sendiri&lt;/strong&gt;. Keberadaannya bergantung pada entity lain yang disebut &lt;strong&gt;identifying entity set&lt;/strong&gt; (atau owner).&lt;/p&gt;
&lt;h3 id=&quot;13-1-tiga-aturan-weak-entity&quot;&gt;13.1 Tiga Aturan Weak Entity&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Harus berhubungan dengan owner melalui &lt;strong&gt;total, one-to-many relationship&lt;/strong&gt; (dari owner ke weak entity).&lt;/li&gt;
&lt;li&gt;Punya &lt;strong&gt;discriminator&lt;/strong&gt; (partial key) — atribut yang membedakan weak entity &lt;strong&gt;dalam konteks owner-nya&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Primary key weak entity = &lt;strong&gt;PK owner + discriminator&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;13-2-notasi&quot;&gt;13.2 Notasi&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Weak entity: persegi panjang &lt;strong&gt;garis ganda&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Identifying relationship: belah ketupat &lt;strong&gt;garis ganda&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Discriminator: &lt;strong&gt;garis bawah putus-putus&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;13-3-contoh-pembayaran-pinjaman&quot;&gt;13.3 Contoh: Pembayaran Pinjaman&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-weak-pembayaran.svg&quot; alt=&quot;erd-weak-pembayaran&quot; loading=&quot;lazy&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;PINJAMAN&lt;/code&gt; = owner (strong entity).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PEMBAYARAN&lt;/code&gt; = weak entity.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no_byr&lt;/code&gt; = discriminator.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Primary key PEMBAYARAN&lt;/strong&gt; = &lt;code&gt;(no_pinjam, no_byr)&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Kenapa &lt;code&gt;no_byr&lt;/code&gt; saja tidak cukup?&lt;/strong&gt; Karena dua pinjaman berbeda bisa punya pembayaran dengan nomor yang sama (keduanya &lt;code&gt;001&lt;/code&gt;). Nomor pembayaran baru unik kalau dikombinasikan dengan nomor pinjaman.&lt;/p&gt;
&lt;p&gt;Analoginya seperti nomor urut dalam buku: “Bab 1, halaman 5” berbeda dari “Bab 2, halaman 5” — halaman 5 saja ambigu.&lt;/p&gt;
&lt;h3 id=&quot;13-4-beda-strong-vs-weak-entity&quot;&gt;13.4 Beda Strong vs Weak Entity&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Strong Entity&lt;/th&gt;&lt;th&gt;Weak Entity&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Primary key&lt;/td&gt;&lt;td&gt;Ada, cukup atribut sendiri&lt;/td&gt;&lt;td&gt;Tidak ada, harus impor dari owner&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Keberadaan&lt;/td&gt;&lt;td&gt;Independen&lt;/td&gt;&lt;td&gt;Bergantung owner&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Notasi&lt;/td&gt;&lt;td&gt;Persegi panjang tunggal&lt;/td&gt;&lt;td&gt;Persegi panjang ganda&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Relasi ke owner&lt;/td&gt;&lt;td&gt;Bebas&lt;/td&gt;&lt;td&gt;Wajib: total 1:N dari owner&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;14-transformasi-erd-ke-skema-relasional&quot;&gt;14. Transformasi ERD ke Skema Relasional&lt;/h2&gt;
&lt;p&gt;Setelah ERD selesai, saatnya konversi ke tabel. Ini aturan bakunya:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Komponen ERD&lt;/th&gt;&lt;th&gt;Jadi apa&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Strong entity&lt;/td&gt;&lt;td&gt;Tabel dengan PK sendiri&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Weak entity&lt;/td&gt;&lt;td&gt;Tabel dengan PK gabungan (owner PK + discriminator)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1:1&lt;/td&gt;&lt;td&gt;FK di salah satu sisi (biasanya di sisi total participation)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1:N&lt;/td&gt;&lt;td&gt;FK di sisi N&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;M:N&lt;/td&gt;&lt;td&gt;Tabel asosiasi baru dengan 2 FK&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Atribut multivalued&lt;/td&gt;&lt;td&gt;Tabel terpisah&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Atribut composite&lt;/td&gt;&lt;td&gt;Kolom-kolom terpisah&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Recursive relationship&lt;/td&gt;&lt;td&gt;Tabel dengan 2 FK yang sama-sama menunjuk entitas yang sama&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;14-1-contoh-m-n-mahasiswa-x-mata-kuliah&quot;&gt;14.1 Contoh M:N — Mahasiswa × Mata Kuliah&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ERD:&lt;/strong&gt; Mahasiswa —&amp;lt; Mengambil &amp;gt;— Mata Kuliah&lt;/p&gt;
&lt;p&gt;M:N tidak bisa langsung jadi tabel. Kita butuh &lt;strong&gt;tabel asosiasi&lt;/strong&gt;:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Mahasiswa(nim, nama, alamat, tanggal_lahir)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Mata_Kuliah(kode_mk, nama_mk, sks)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Mengambil(nim, kode_mk, semester, nilai)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PK: (nim, kode_mk)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: nim → Mahasiswa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: kode_mk → Mata_Kuliah&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Perhatikan: PK &lt;code&gt;Mengambil&lt;/code&gt; adalah &lt;strong&gt;composite&lt;/strong&gt; dari dua FK. Ini logis — satu mahasiswa hanya boleh mengambil satu mata kuliah &lt;strong&gt;satu kali&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;14-2-contoh-1-n-dosen-x-mata-kuliah&quot;&gt;14.2 Contoh 1:N — Dosen × Mata Kuliah&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ERD:&lt;/strong&gt; Dosen —&amp;lt; Mata_Kuliah&lt;/p&gt;
&lt;p&gt;Untuk 1:N, &lt;strong&gt;tidak butuh&lt;/strong&gt; tabel baru. Cukup tambahkan FK di sisi N:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Dosen(nidn, nama)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Mata_Kuliah(kode_mk, nama_mk, sks, nidn)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: nidn → Dosen&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;14-3-contoh-weak-entity-pinjaman-x-pembayaran&quot;&gt;14.3 Contoh Weak Entity — Pinjaman × Pembayaran&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ERD:&lt;/strong&gt; Pinjaman —&amp;lt; Pembayaran&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Pinjaman(no_pinjam, jumlah)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Pembayaran(no_pinjam, no_byr, jml_byr, tanggal)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PK: (no_pinjam, no_byr)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: no_pinjam → Pinjaman&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;14-4-contoh-recursive-pegawai-x-pegawai&quot;&gt;14.4 Contoh Recursive — Pegawai × Pegawai&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ERD:&lt;/strong&gt; Pegawai —&amp;lt; BertanggungJawab &amp;gt;— Pegawai&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Pegawai(nopeg, nama, lokasi)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;BertanggungJawab(supervisor_nopeg, bawahan_nopeg)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PK: (supervisor_nopeg, bawahan_nopeg)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: supervisor_nopeg → Pegawai&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: bawahan_nopeg → Pegawai&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Kedua FK menunjuk ke tabel &lt;code&gt;Pegawai&lt;/code&gt; yang sama, tapi dengan &lt;strong&gt;peran berbeda&lt;/strong&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;15-cdm-vs-pdm&quot;&gt;15. CDM vs PDM&lt;/h2&gt;
&lt;p&gt;Sebelum masuk ke SQL DDL, ada dua level model yang perlu dipahami:&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tahap&lt;/th&gt;&lt;th&gt;Isi&lt;/th&gt;&lt;th&gt;Tool&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;CDM&lt;/strong&gt; (Conceptual Data Model)&lt;/td&gt;&lt;td&gt;Entitas, relasi, atribut — tanpa tipe data spesifik&lt;/td&gt;&lt;td&gt;ERD&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;PDM&lt;/strong&gt; (Physical Data Model)&lt;/td&gt;&lt;td&gt;Tabel, kolom, tipe data, PK, FK, index&lt;/td&gt;&lt;td&gt;SQL DDL&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Alur: &lt;strong&gt;CDM → PDM → SQL DDL&lt;/strong&gt;. CDM adalah ERD yang kita gambar. PDM adalah versi teknisnya dengan tipe data. SQL DDL adalah perintah &lt;code&gt;CREATE TABLE&lt;/code&gt; yang sebenarnya dijalankan di DBMS.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;16-praktikum-dengan-draw-io&quot;&gt;16. Praktikum dengan draw.io&lt;/h2&gt;
&lt;h3 id=&quot;16-1-setup&quot;&gt;16.1 Setup&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Buka &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://app.diagrams.net&quot;&gt;app.diagrams.net&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Create New Diagram&lt;/strong&gt; → &lt;strong&gt;Blank Diagram&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Panel kiri → &lt;strong&gt;More Shapes&lt;/strong&gt; → centang &lt;strong&gt;Entity Relation&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;16-2-shape-yang-sering-dipakai&quot;&gt;16.2 Shape yang Sering Dipakai&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Shape&lt;/th&gt;&lt;th&gt;Dipakai untuk&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Rectangle&lt;/td&gt;&lt;td&gt;Entity (strong)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Double Rectangle&lt;/td&gt;&lt;td&gt;Entity (weak)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Diamond&lt;/td&gt;&lt;td&gt;Relationship (Chen notation)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Rounded Rectangle&lt;/td&gt;&lt;td&gt;Relationship (Crow’s foot)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Ellipse&lt;/td&gt;&lt;td&gt;Attribute&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Double Ellipse&lt;/td&gt;&lt;td&gt;Multivalued attribute&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Dashed Ellipse&lt;/td&gt;&lt;td&gt;Derived attribute&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Line / connector&lt;/td&gt;&lt;td&gt;Penghubung&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;16-3-langkah-membuat-erd&quot;&gt;16.3 Langkah Membuat ERD&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Daftar entitas&lt;/strong&gt; dari studi kasus.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tentukan atribut&lt;/strong&gt; tiap entitas, tandai PK.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gambar relasi&lt;/strong&gt; antar entitas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tentukan kardinalitas&lt;/strong&gt; (1:1, 1:N, M:N).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cek partisipasi&lt;/strong&gt; — total atau partial.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tandai weak entity&lt;/strong&gt; jika ada.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konversi ke skema relasional&lt;/strong&gt; — tulis tabel, PK, FK.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;16-4-video-referensi&quot;&gt;16.4 Video Referensi&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Membuat ERD dengan Draw.io (Studi Kasus Perpustakaan)&lt;/strong&gt; — dasar.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to Draw ER Diagram using Draw.io (From Scratch)&lt;/strong&gt; — penataan shape.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ERD Toko Buku Online, CDM, &amp;amp; PDM (Draw.io)&lt;/strong&gt; — praktik lengkap sampai CDM dan PDM.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;17-studi-kasus-perpustakaan&quot;&gt;17. Studi Kasus — Perpustakaan&lt;/h2&gt;
&lt;p&gt;Ini contoh lengkap dari awal sampai skema relasional. Baca pelan-pelan.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deskripsi:&lt;/strong&gt; Perpustakaan punya banyak buku. Setiap buku bisa dipinjam anggota. Satu peminjaman bisa mencakup beberapa buku.&lt;/p&gt;
&lt;h3 id=&quot;17-1-identifikasi-entitas&quot;&gt;17.1 Identifikasi Entitas&lt;/h3&gt;
&lt;p&gt;Setelah membaca deskripsi, kita identifikasi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anggota&lt;/strong&gt; — orang yang meminjam buku.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Buku&lt;/strong&gt; — item yang dipinjam.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Peminjaman&lt;/strong&gt; — kejadian ketika anggota meminjam buku.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;17-2-tentukan-atribut-pk&quot;&gt;17.2 Tentukan Atribut &amp;amp; PK&lt;/h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Entity&lt;/th&gt;&lt;th&gt;Atribut&lt;/th&gt;&lt;th&gt;PK&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Anggota&lt;/td&gt;&lt;td&gt;id_anggota, nama, alamat, telepon, tanggal_daftar&lt;/td&gt;&lt;td&gt;&lt;code&gt;id_anggota&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Buku&lt;/td&gt;&lt;td&gt;isbn, judul, penulis, penerbit, tahun, stok&lt;/td&gt;&lt;td&gt;&lt;code&gt;isbn&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Peminjaman&lt;/td&gt;&lt;td&gt;id_pinjam, tanggal_pinjam, tanggal_kembali, id_anggota&lt;/td&gt;&lt;td&gt;&lt;code&gt;id_pinjam&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3 id=&quot;17-3-tentukan-relasi-kardinalitas&quot;&gt;17.3 Tentukan Relasi &amp;amp; Kardinalitas&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Anggota → Peminjaman&lt;/strong&gt;: 1:N (satu anggota bisa banyak peminjaman).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Peminjaman → Buku&lt;/strong&gt;: M:N (satu peminjaman bisa banyak buku, satu buku bisa dipinjam di banyak peminjaman berbeda).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;17-4-diagram&quot;&gt;17.4 Diagram&lt;/h3&gt;
&lt;img src=&quot;../../../d2/rpl106/pertemuan-2/erd-perpustakaan.svg&quot; alt=&quot;erd-perpustakaan&quot; loading=&quot;lazy&quot;&gt;
&lt;h3 id=&quot;17-5-skema-relasional&quot;&gt;17.5 Skema Relasional&lt;/h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Anggota(id_anggota, nama, alamat, telepon, tanggal_daftar)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Buku(isbn, judul, penulis, penerbit, tahun, stok)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Peminjaman(id_pinjam, tanggal_pinjam, tanggal_kembali, id_anggota)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Detail_Pinjam(id_pinjam, isbn, jumlah)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;PK: (id_pinjam, isbn)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: id_pinjam → Peminjaman&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FK: isbn → Buku&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Perhatikan: relasi M:N antara Peminjaman dan Buku dipecah jadi tabel &lt;code&gt;Detail_Pinjam&lt;/code&gt; dengan composite PK &lt;code&gt;(id_pinjam, isbn)&lt;/code&gt; dan kolom tambahan &lt;code&gt;jumlah&lt;/code&gt; (karena satu peminjaman bisa meminjam buku yang sama lebih dari satu copy).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;18-tugas-teori-resume-video&quot;&gt;18. Tugas Teori — Resume Video&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Ketentuan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Jenis&lt;/td&gt;&lt;td&gt;Selfie video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Platform&lt;/td&gt;&lt;td&gt;YouTube Shorts / TikTok / Reels IG/FB (pilih satu)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Durasi&lt;/td&gt;&lt;td&gt;Maksimal &lt;strong&gt;90 detik&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Komentar&lt;/td&gt;&lt;td&gt;Jangan dimatikan&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Format pengumpulan (&lt;code&gt;.txt&lt;/code&gt; atau &lt;code&gt;.pdf&lt;/code&gt;):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Nama :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;NIM :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kelas :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kode Dosen :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Link Video :&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Upload ke &lt;strong&gt;Pengumpulan Tugas Teori Pertemuan 2&lt;/strong&gt; di e-learning.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;19-tugas-praktikum-erd&quot;&gt;19. Tugas Praktikum — ERD&lt;/h2&gt;
&lt;p&gt;Kerjakan sesuai instruksi di &lt;strong&gt;Modul Praktikum Pertemuan 2&lt;/strong&gt;.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Item&lt;/th&gt;&lt;th&gt;Ketentuan&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Format&lt;/td&gt;&lt;td&gt;ZIP / RAR&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Nama file&lt;/td&gt;&lt;td&gt;&lt;code&gt;P2_NIM.zip&lt;/code&gt; atau &lt;code&gt;P2_NIM.rar&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Contoh&lt;/td&gt;&lt;td&gt;&lt;code&gt;P2_4342611034.zip&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Deadline&lt;/td&gt;&lt;td&gt;1 pekan sejak tugas diberikan&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Tempat&lt;/td&gt;&lt;td&gt;E-learning → Pengumpulan Tugas Praktikum Pertemuan 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Isi ZIP:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;File ERD (&lt;code&gt;.drawio&lt;/code&gt; atau &lt;code&gt;.png&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;File skema relasional (&lt;code&gt;.md&lt;/code&gt; atau &lt;code&gt;.pdf&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Screenshot ERD.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;20-checklist-sebelum-kumpul&quot;&gt;20. Checklist Sebelum Kumpul&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Semua entitas sudah teridentifikasi.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Setiap strong entity punya PK.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Atribut composite, multivalued, derived sudah ditandai.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Weak entity sudah ditandai dengan discriminator.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Kardinalitas setiap relasi sudah ditentukan (1:1, 1:N, M:N).&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Partisipasi total/partial sudah ditandai.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Relationship dengan atribut sudah dicatat atributnya.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Recursive relationship (jika ada) sudah diidentifikasi.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
M:N sudah dipecah jadi tabel asosiasi.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Skema relasional lengkap dengan PK &amp;amp; FK.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
ERD rapi dan mudah dibaca.&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
File dinamai &lt;code&gt;P2_NIM.zip&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;21-referensi&quot;&gt;21. Referensi&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Silberschatz, Korth, Sudarshan. &lt;em&gt;Database System Concepts&lt;/em&gt; (6th ed.). McGraw-Hill. Bab 7: Database Design — The Entity-Relationship Approach.&lt;/li&gt;
&lt;li&gt;Connolly &amp;amp; Begg. &lt;em&gt;Database Systems&lt;/em&gt; (6th ed.). Pearson, 2015. Bab 12–13.&lt;/li&gt;
&lt;li&gt;Elmasri &amp;amp; Navathe. &lt;em&gt;Fundamentals of Database Systems&lt;/em&gt; (7th ed.). Pearson.&lt;/li&gt;
&lt;li&gt;Chen, P. P. (1976). &lt;em&gt;The Entity-Relationship Model — Toward a Unified View of Data&lt;/em&gt;. ACM TODS.&lt;/li&gt;
&lt;li&gt;Slide RPL106 Pertemuan 2 — Ahmadi Irmansyah Lubis.&lt;/li&gt;
&lt;li&gt;draw.io Documentation — https://www.drawio.com/doc/&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>About</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/about/"/>
        <id>https://mroczect.biz.id/lectures/about/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/about/">&lt;h1 id=&quot;about&quot;&gt;About&lt;/h1&gt;
&lt;p&gt;Lectures is a personal documentation project summarizing course materials, schedules, assignments, and academic references for the Software Engineering Technology program at Politeknik Negeri Batam.&lt;/p&gt;
&lt;p&gt;This is not an official campus publication, but draws from official documents such as RPS and the e-learning platform.&lt;/p&gt;
&lt;h2 id=&quot;maintainer&quot;&gt;Maintainer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Name: Muhammad Riduwan Khafidi&lt;/li&gt;
&lt;li&gt;NIM: 4342611034&lt;/li&gt;
&lt;li&gt;Class: Evening B, Batch 2026&lt;/li&gt;
&lt;li&gt;Role: Documentation maintainer, Semester 1&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;contributing&quot;&gt;Contributing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Report issues via &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures/issues&quot;&gt;GitHub issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Submit fixes via fork and pull request&lt;/li&gt;
&lt;li&gt;Suggest ideas in the issue tracker&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://learningif.polibatam.ac.id&quot;&gt;E-Learning IF Polibatam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://www.polibatam.ac.id&quot;&gt;Politeknik Negeri Batam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://github.com/mroczect/lectures&quot;&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Explore</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/explore/"/>
        <id>https://mroczect.biz.id/lectures/explore/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/explore/"></content>
        
    </entry>
    <entry xml:lang="en">
        <title>Format &amp; Rules</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/format/"/>
        <id>https://mroczect.biz.id/lectures/format/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/format/">&lt;h1 id=&quot;format-rules&quot;&gt;Format &amp;amp; Rules&lt;/h1&gt;
&lt;p&gt;Writing conventions, file naming, and contribution guide.&lt;/p&gt;
&lt;p&gt;Content coming soon.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>License</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/license/"/>
        <id>https://mroczect.biz.id/lectures/license/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/license/">&lt;h1 id=&quot;license&quot;&gt;License&lt;/h1&gt;
&lt;p&gt;Content is published under CC BY-NC-SA 4.0 — free to share and adapt for non-commercial use with attribution.&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #383A42; background-color: #FAFAFA;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Attribution-NonCommercial-ShareAlike 4.0 International&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;=======================================================================&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Creative Commons Corporation (&amp;quot;Creative Commons&amp;quot;) is not a law firm and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;does not provide legal services or legal advice. Distribution of&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Creative Commons public licenses does not create a lawyer-client or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;other relationship. Creative Commons makes its licenses and related&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;information available on an &amp;quot;as-is&amp;quot; basis. Creative Commons gives no&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;warranties regarding its licenses, any material licensed under their&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;terms and conditions, or any related information. Creative Commons&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;disclaims all liability for damages resulting from their use to the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;fullest extent possible.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Using Creative Commons Public Licenses&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Creative Commons public licenses provide a standard set of terms and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;conditions that creators and other rights holders may use to share&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;original works of authorship and other material subject to copyright&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;and certain other rights specified in the public license below. The&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;following considerations are for informational purposes only, are not&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;exhaustive, and do not form part of our licenses.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Considerations for licensors: Our public licenses are&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     intended for use by those authorized to give the public&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     permission to use material in ways otherwise restricted by&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     copyright and certain other rights. Our licenses are&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     irrevocable. Licensors should read and understand the terms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     and conditions of the license they choose before applying it.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Licensors should also secure all rights necessary before&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     applying our licenses so that the public can reuse the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     material as expected. Licensors should clearly mark any&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     material not subject to the license. This includes other CC-&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     licensed material, or material used under an exception or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     limitation to copyright. More considerations for licensors:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    wiki.creativecommons.org/Considerations_for_licensors&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Considerations for the public: By using one of our public&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     licenses, a licensor grants the public permission to use the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     licensed material under specified terms and conditions. If&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     the licensor&amp;#39;s permission is not necessary for any reason--for&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     example, because of any applicable exception or limitation to&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     copyright--then that use is not regulated by the license. Our&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     licenses grant only permissions under copyright and certain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     other rights that a licensor has authority to grant. Use of&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     the licensed material may still be restricted for other&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     reasons, including because others have copyright or other&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     rights in the material. A licensor may make special requests,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     such as asking that all changes be marked or described.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Although not required by our licenses, you are encouraged to&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     respect those requests where reasonable. More considerations&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     for the public:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    wiki.creativecommons.org/Considerations_for_licensees&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;=======================================================================&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Public License&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;By exercising the Licensed Rights (defined below), You accept and agree&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;to be bound by the terms and conditions of this Creative Commons&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Attribution-NonCommercial-ShareAlike 4.0 International Public License&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;(&amp;quot;Public License&amp;quot;). To the extent this Public License may be&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;interpreted as a contract, You are granted the Licensed Rights in&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;consideration of Your acceptance of these terms and conditions, and the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Licensor grants You such rights in consideration of benefits the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Licensor receives from making the Licensed Material available under&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;these terms and conditions.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Section 1 -- Definitions.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a. Adapted Material means material subject to Copyright and Similar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Rights that is derived from or based upon the Licensed Material&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     and in which the Licensed Material is translated, altered,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     arranged, transformed, or otherwise modified in a manner requiring&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     permission under the Copyright and Similar Rights held by the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Licensor. For purposes of this Public License, where the Licensed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Material is a musical work, performance, or sound recording,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Adapted Material is always produced where the Licensed Material is&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     synched in timed relation with a moving image.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b. Adapter&amp;#39;s License means the license You apply to Your Copyright&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     and Similar Rights in Your contributions to Adapted Material in&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     accordance with the terms and conditions of this Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  c. BY-NC-SA Compatible License means a license listed at&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     creativecommons.org/compatiblelicenses, approved by Creative&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Commons as essentially the equivalent of this Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  d. Copyright and Similar Rights means copyright and/or similar rights&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     closely related to copyright including, without limitation,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     performance, broadcast, sound recording, and Sui Generis Database&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Rights, without regard to how the rights are labeled or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     categorized. For purposes of this Public License, the rights&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     specified in Section 2(b)(1)-(2) are not Copyright and Similar&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Rights.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  e. Effective Technological Measures means those measures that, in the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     absence of proper authority, may not be circumvented under laws&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     fulfilling obligations under Article 11 of the WIPO Copyright&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Treaty adopted on December 20, 1996, and/or similar international&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     agreements.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  f. Exceptions and Limitations means fair use, fair dealing, and/or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     any other exception or limitation to Copyright and Similar Rights&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     that applies to Your use of the Licensed Material.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  g. License Elements means the license attributes listed in the name&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     of a Creative Commons Public License. The License Elements of this&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Public License are Attribution, NonCommercial, and ShareAlike.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  h. Licensed Material means the artistic or literary work, database,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     or other material to which the Licensor applied this Public&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  i. Licensed Rights means the rights granted to You subject to the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     terms and conditions of this Public License, which are limited to&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     all Copyright and Similar Rights that apply to Your use of the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Licensed Material and that the Licensor has authority to license.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  j. Licensor means the individual(s) or entity(ies) granting rights&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     under this Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  k. NonCommercial means not primarily intended for or directed towards&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     commercial advantage or monetary compensation. For purposes of&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     this Public License, the exchange of the Licensed Material for&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     other material subject to Copyright and Similar Rights by digital&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     file-sharing or similar means is NonCommercial provided there is&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     no payment of monetary compensation in connection with the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     exchange.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  l. Share means to provide material to the public by any means or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     process that requires permission under the Licensed Rights, such&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     as reproduction, public display, public performance, distribution,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     dissemination, communication, or importation, and to make material&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     available to the public including in ways that members of the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     public may access the material from a place and at a time&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     individually chosen by them.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  m. Sui Generis Database Rights means rights other than copyright&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     resulting from Directive 96/9/EC of the European Parliament and of&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     the Council of 11 March 1996 on the legal protection of databases,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     as amended and/or succeeded, as well as other essentially&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     equivalent rights anywhere in the world.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  n. You means the individual or entity exercising the Licensed Rights&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     under this Public License. Your has a corresponding meaning.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Section 2 -- Scope.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a. License grant.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       1. Subject to the terms and conditions of this Public License,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          the Licensor hereby grants You a worldwide, royalty-free,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          non-sublicensable, non-exclusive, irrevocable license to&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          exercise the Licensed Rights in the Licensed Material to:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            a. reproduce and Share the Licensed Material, in whole or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               in part, for NonCommercial purposes only; and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            b. produce, reproduce, and Share Adapted Material for&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               NonCommercial purposes only.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       2. Exceptions and Limitations. For the avoidance of doubt, where&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Exceptions and Limitations apply to Your use, this Public&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          License does not apply, and You do not need to comply with&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          its terms and conditions.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       3. Term. The term of this Public License is specified in Section&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          6(a).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       4. Media and formats; technical modifications allowed. The&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Licensor authorizes You to exercise the Licensed Rights in&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          all media and formats whether now known or hereafter created,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          and to make technical modifications necessary to do so. The&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Licensor waives and/or agrees not to assert any right or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          authority to forbid You from making technical modifications&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          necessary to exercise the Licensed Rights, including&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          technical modifications necessary to circumvent Effective&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Technological Measures. For purposes of this Public License,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          simply making modifications authorized by this Section 2(a)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          (4) never produces Adapted Material.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       5. Downstream recipients.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            a. Offer from the Licensor -- Licensed Material. Every&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               recipient of the Licensed Material automatically&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               receives an offer from the Licensor to exercise the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               Licensed Rights under the terms and conditions of this&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            b. Additional offer from the Licensor -- Adapted Material.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               Every recipient of Adapted Material from You&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               automatically receives an offer from the Licensor to&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               exercise the Licensed Rights in the Adapted Material&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               under the conditions of the Adapter&amp;#39;s License You apply.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            c. No downstream restrictions. You may not offer or impose&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               any additional or different terms or conditions on, or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               apply any Effective Technological Measures to, the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               Licensed Material if doing so restricts exercise of the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               Licensed Rights by any recipient of the Licensed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               Material.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       6. No endorsement. Nothing in this Public License constitutes or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          may be construed as permission to assert or imply that You&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          are, or that Your use of the Licensed Material is, connected&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          with, or sponsored, endorsed, or granted official status by,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          the Licensor or others designated to receive attribution as&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          provided in Section 3(a)(1)(A)(i).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b. Other rights.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       1. Moral rights, such as the right of integrity, are not&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          licensed under this Public License, nor are publicity,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          privacy, and/or other similar personality rights; however, to&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          the extent possible, the Licensor waives and/or agrees not to&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          assert any such rights held by the Licensor to the limited&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          extent necessary to allow You to exercise the Licensed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Rights, but not otherwise.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       2. Patent and trademark rights are not licensed under this&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       3. To the extent possible, the Licensor waives any right to&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          collect royalties from You for the exercise of the Licensed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Rights, whether directly or through a collecting society&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          under any voluntary or waivable statutory or compulsory&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          licensing scheme. In all other cases the Licensor expressly&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          reserves any right to collect such royalties, including when&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          the Licensed Material is used other than for NonCommercial&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          purposes.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Section 3 -- License Conditions.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Your exercise of the Licensed Rights is expressly made subject to the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;following conditions.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a. Attribution.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       1. If You Share the Licensed Material (including in modified&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          form), You must:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            a. retain the following if it is supplied by the Licensor&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               with the Licensed Material:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                 i. identification of the creator(s) of the Licensed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    Material and any others designated to receive&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    attribution, in any reasonable manner requested by&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    the Licensor (including by pseudonym if&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    designated);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                ii. a copyright notice;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               iii. a notice that refers to this Public License;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                iv. a notice that refers to the disclaimer of&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    warranties;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                 v. a URI or hyperlink to the Licensed Material to the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                    extent reasonably practicable;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            b. indicate if You modified the Licensed Material and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               retain an indication of any previous modifications; and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            c. indicate the Licensed Material is licensed under this&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               Public License, and include the text of, or the URI or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               hyperlink to, this Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       2. You may satisfy the conditions in Section 3(a)(1) in any&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          reasonable manner based on the medium, means, and context in&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          which You Share the Licensed Material. For example, it may be&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          reasonable to satisfy the conditions by providing a URI or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          hyperlink to a resource that includes the required&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          information.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       3. If requested by the Licensor, You must remove any of the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          information required by Section 3(a)(1)(A) to the extent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          reasonably practicable.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b. ShareAlike.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     In addition to the conditions in Section 3(a), if You Share&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Adapted Material You produce, the following conditions also apply.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       1. The Adapter&amp;#39;s License You apply must be a Creative Commons&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          license with the same License Elements, this version or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          later, or a BY-NC-SA Compatible License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       2. You must include the text of, or the URI or hyperlink to, the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Adapter&amp;#39;s License You apply. You may satisfy this condition&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          in any reasonable manner based on the medium, means, and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          context in which You Share Adapted Material.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       3. You may not offer or impose any additional or different terms&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          or conditions on, or apply any Effective Technological&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          Measures to, Adapted Material that restrict exercise of the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          rights granted under the Adapter&amp;#39;s License You apply.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Section 4 -- Sui Generis Database Rights.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Where the Licensed Rights include Sui Generis Database Rights that&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;apply to Your use of the Licensed Material:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a. for the avoidance of doubt, Section 2(a)(1) grants You the right&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     to extract, reuse, reproduce, and Share all or a substantial&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     portion of the contents of the database for NonCommercial purposes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     only;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b. if You include all or a substantial portion of the database&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     contents in a database in which You have Sui Generis Database&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Rights, then the database in which You have Sui Generis Database&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Rights (but not its individual contents) is Adapted Material,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     including for purposes of Section 3(b); and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  c. You must comply with the conditions in Section 3(a) if You Share&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     all or a substantial portion of the contents of the database.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;For the avoidance of doubt, this Section 4 supplements and does not&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;replace Your obligations under this Public License where the Licensed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Rights include other Copyright and Similar Rights.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Section 5 -- Disclaimer of Warranties and Limitation of Liability.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  c. The disclaimer of warranties and limitation of liability provided&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     above shall be interpreted in a manner that, to the extent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     possible, most closely approximates an absolute disclaimer and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     waiver of all liability.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Section 6 -- Term and Termination.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a. This Public License applies for the term of the Copyright and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Similar Rights licensed here. However, if You fail to comply with&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     this Public License, then Your rights under this Public License&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     terminate automatically.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b. Where Your right to use the Licensed Material has terminated under&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Section 6(a), it reinstates:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       1. automatically as of the date the violation is cured, provided&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          it is cured within 30 days of Your discovery of the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;          violation; or&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;       2. upon express reinstatement by the Licensor.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     For the avoidance of doubt, this Section 6(b) does not affect any&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     right the Licensor may have to seek remedies for Your violations&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     of this Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  c. For the avoidance of doubt, the Licensor may also offer the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Licensed Material under separate terms or conditions or stop&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     distributing the Licensed Material at any time; however, doing so&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     will not terminate this Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Section 7 -- Other Terms and Conditions.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a. The Licensor shall not be bound by any additional or different&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     terms or conditions communicated by You unless expressly agreed.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b. Any arrangements, understandings, or agreements regarding the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Licensed Material not stated herein are separate from and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     independent of the terms and conditions of this Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Section 8 -- Interpretation.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  a. For the avoidance of doubt, this Public License does not, and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     shall not be interpreted to, reduce, limit, restrict, or impose&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     conditions on any use of the Licensed Material that could lawfully&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     be made without permission under this Public License.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  b. To the extent possible, if any provision of this Public License is&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     deemed unenforceable, it shall be automatically reformed to the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     minimum extent necessary to make it enforceable. If the provision&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     cannot be reformed, it shall be severed from this Public License&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     without affecting the enforceability of the remaining terms and&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     conditions.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  c. No term or condition of this Public License will be waived and no&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     failure to comply consented to unless expressly agreed to by the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     Licensor.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  d. Nothing in this Public License constitutes or may be interpreted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     as a limitation upon, or waiver of, any privileges and immunities&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     that apply to the Licensor or You, including from the legal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;     processes of any jurisdiction or authority.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;=======================================================================&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Creative Commons is not a party to its public&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;licenses. Notwithstanding, Creative Commons may elect to apply one of&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;its public licenses to material it publishes and in those instances&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;will be considered the “Licensor.” The text of the Creative Commons&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;public licenses is dedicated to the public domain under the CC0 Public&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Domain Dedication. Except for the limited purpose of indicating that&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;material is shared under a Creative Commons public license or as&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;otherwise permitted by the Creative Commons policies published at&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;creativecommons.org/policies, Creative Commons does not authorize the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;use of the trademark &amp;quot;Creative Commons&amp;quot; or any other trademark or logo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;of Creative Commons without its prior written consent including,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;without limitation, in connection with any unauthorized modifications&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;to any of its public licenses or any other arrangements,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;understandings, or agreements concerning use of licensed material. For&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;the avoidance of doubt, this paragraph does not form part of the&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;public licenses.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Creative Commons may be contacted at creativecommons.org.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Class Schedule</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/posts/class-schedule/"/>
        <id>https://mroczect.biz.id/lectures/posts/class-schedule/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/posts/class-schedule/">&lt;p&gt;Evening classes, 18:00–23:00 WIB. Seven courses, five days.&lt;/p&gt;
&lt;h2 id=&quot;monday&quot;&gt;Monday&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Time&lt;/th&gt;&lt;th&gt;Course&lt;/th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Lecturer&lt;/th&gt;&lt;th&gt;Room&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;18:00–18:50&lt;/td&gt;&lt;td&gt;RPL106 Introduction to Databases&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AM&lt;/td&gt;&lt;td&gt;Online&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;18:50–19:40&lt;/td&gt;&lt;td&gt;RPL101 Introduction to Software Engineering&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;MS&lt;/td&gt;&lt;td&gt;Online&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20:30–23:00&lt;/td&gt;&lt;td&gt;RPL106 Lab&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AM&lt;/td&gt;&lt;td&gt;TA 12.4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;tuesday&quot;&gt;Tuesday&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Time&lt;/th&gt;&lt;th&gt;Course&lt;/th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Lecturer&lt;/th&gt;&lt;th&gt;Room&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;18:00–18:50&lt;/td&gt;&lt;td&gt;RPL104 Requirements Analysis and Specification&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;HK&lt;/td&gt;&lt;td&gt;Online&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20:30–23:00&lt;/td&gt;&lt;td&gt;RPL102 Lab&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AY&lt;/td&gt;&lt;td&gt;TA 12.4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;wednesday&quot;&gt;Wednesday&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Time&lt;/th&gt;&lt;th&gt;Course&lt;/th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Lecturer&lt;/th&gt;&lt;th&gt;Room&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;18:00–18:50&lt;/td&gt;&lt;td&gt;RPL102 Algorithms and Programming&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AY&lt;/td&gt;&lt;td&gt;Online&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20:30–23:00&lt;/td&gt;&lt;td&gt;RPL105 Lab&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NR&lt;/td&gt;&lt;td&gt;TA 12.4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;thursday&quot;&gt;Thursday&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Time&lt;/th&gt;&lt;th&gt;Course&lt;/th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Lecturer&lt;/th&gt;&lt;th&gt;Room&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;18:00–20:30&lt;/td&gt;&lt;td&gt;RPL104 Lab&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;HK&lt;/td&gt;&lt;td&gt;TA 11.4&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20:30–23:00&lt;/td&gt;&lt;td&gt;RPL101 Lab&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;IQ&lt;/td&gt;&lt;td&gt;TA 12.3B&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;friday&quot;&gt;Friday&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Time&lt;/th&gt;&lt;th&gt;Course&lt;/th&gt;&lt;th&gt;Lecturer&lt;/th&gt;&lt;th&gt;Room&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;18:00–19:40&lt;/td&gt;&lt;td&gt;PK001RPL Religious Education&lt;/td&gt;&lt;td&gt;Izza / Ester / Laurensius&lt;/td&gt;&lt;td&gt;Online&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20:30–21:20&lt;/td&gt;&lt;td&gt;RPL105 Web Programming&lt;/td&gt;&lt;td&gt;NR&lt;/td&gt;&lt;td&gt;Online&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;21:20–23:00&lt;/td&gt;&lt;td&gt;RPL103 Discrete Mathematics&lt;/td&gt;&lt;td&gt;RK&lt;/td&gt;&lt;td&gt;Online&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Code&lt;/th&gt;&lt;th&gt;Course&lt;/th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Credits&lt;/th&gt;&lt;th&gt;Days&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;PK001RPL&lt;/td&gt;&lt;td&gt;Religious Education&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;2&lt;/td&gt;&lt;td&gt;Friday&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL101&lt;/td&gt;&lt;td&gt;Introduction to Software Engineering&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;3&lt;/td&gt;&lt;td&gt;Monday, Thursday&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL102&lt;/td&gt;&lt;td&gt;Algorithms and Programming&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;3&lt;/td&gt;&lt;td&gt;Tuesday, Wednesday&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL103&lt;/td&gt;&lt;td&gt;Discrete Mathematics&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;3&lt;/td&gt;&lt;td&gt;Friday&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL104&lt;/td&gt;&lt;td&gt;Requirements Analysis and Specification&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;3&lt;/td&gt;&lt;td&gt;Tuesday, Thursday&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL105&lt;/td&gt;&lt;td&gt;Web Programming&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;4&lt;/td&gt;&lt;td&gt;Wednesday, Friday&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL106&lt;/td&gt;&lt;td&gt;Introduction to Databases&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;3&lt;/td&gt;&lt;td&gt;Monday&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;rooms&quot;&gt;Rooms&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Zoom — all theory classes&lt;/li&gt;
&lt;li&gt;TA 12.4 — RPL106, RPL102, RPL105 labs&lt;/li&gt;
&lt;li&gt;TA 11.4 — RPL104 lab&lt;/li&gt;
&lt;li&gt;TA 12.3B — RPL101 lab&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;lecturer-initials&quot;&gt;Lecturer Initials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;AM — RPL106&lt;/li&gt;
&lt;li&gt;MS — RPL101 theory&lt;/li&gt;
&lt;li&gt;HK — RPL104&lt;/li&gt;
&lt;li&gt;AY — RPL102&lt;/li&gt;
&lt;li&gt;NR — RPL105&lt;/li&gt;
&lt;li&gt;IQ — RPL101 lab&lt;/li&gt;
&lt;li&gt;RK — RPL103&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;notes&quot;&gt;Notes&lt;/h2&gt;
&lt;p&gt;Schedule may change. Check official announcements before attending. Valid for the week of September 07–11, 2026. Empty slots mean no class. All theory sessions are online via Zoom; labs are in person.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Lecturer Contacts</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/posts/lecturer-contacts/"/>
        <id>https://mroczect.biz.id/lectures/posts/lecturer-contacts/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/posts/lecturer-contacts/">&lt;p&gt;Directory of 54 lecturers at the Informatics Engineering Department, sorted by initials. These initials are used in the &lt;a href=&quot;/posts/class-schedule&quot;&gt;class schedule&lt;/a&gt; and official documents.&lt;/p&gt;
&lt;p&gt;Phone numbers reflect the latest data. For official matters, contact the department secretariat.&lt;/p&gt;
&lt;h2 id=&quot;directory&quot;&gt;Directory&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;NIK&lt;/th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Initial&lt;/th&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Phone&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;122280&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AA&lt;/td&gt;&lt;td&gt;Amirul Mu’minin, S.Ds., M.Ds.&lt;/td&gt;&lt;td&gt;82290154545&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;119221&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AD&lt;/td&gt;&lt;td&gt;Agung Riyadi, S.Si., M.Kom&lt;/td&gt;&lt;td&gt;81808505919&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;125341&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AI&lt;/td&gt;&lt;td&gt;Arif Rahman, M.T&lt;/td&gt;&lt;td&gt;85729050112&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122275&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AM&lt;/td&gt;&lt;td&gt;Ahmadi Irmansyah Lubis, S.Kom., M.Kom.&lt;/td&gt;&lt;td&gt;82273083850&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122259&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AN&lt;/td&gt;&lt;td&gt;Anis Rahmi, S.Tr.Kom., M.Sn&lt;/td&gt;&lt;td&gt;81268405407&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122276&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AO&lt;/td&gt;&lt;td&gt;Antoni Haikal, S.ST., M.T&lt;/td&gt;&lt;td&gt;85265067803&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122284&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AR&lt;/td&gt;&lt;td&gt;Ardiman Firmanda, S.S.T., M.Tr.Kom.&lt;/td&gt;&lt;td&gt;818113100&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;105038&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AT&lt;/td&gt;&lt;td&gt;Andy Triwinarko, ST., MT., Ph.D&lt;/td&gt;&lt;td&gt;81217141529&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;107051&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AU&lt;/td&gt;&lt;td&gt;Agus Fatulloh, S.T., M.T&lt;/td&gt;&lt;td&gt;83183501532&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;100012&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AW&lt;/td&gt;&lt;td&gt;Ari Wibowo, ST., MT&lt;/td&gt;&lt;td&gt;8127737778&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;107048&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AZ&lt;/td&gt;&lt;td&gt;Afdhol Dzikri, S.ST., M.T&lt;/td&gt;&lt;td&gt;81270182977&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;124313&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;BR&lt;/td&gt;&lt;td&gt;Berliansyah Ramadhan&lt;/td&gt;&lt;td&gt;89675732453&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;118201&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;BY&lt;/td&gt;&lt;td&gt;Satriya Bayu Aji, S.S., M.Hum.&lt;/td&gt;&lt;td&gt;82287826272&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;107054&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;CA&lt;/td&gt;&lt;td&gt;Condra Antoni, SS., M.A&lt;/td&gt;&lt;td&gt;81374303928&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;125331&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;CI&lt;/td&gt;&lt;td&gt;Cyntia Lasmi&lt;/td&gt;&lt;td&gt;+62 822-8386-1533&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122282&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;CM&lt;/td&gt;&lt;td&gt;Cahya Miranto, S.S.T., M.Tr.Kom.&lt;/td&gt;&lt;td&gt;85664563773&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;123298&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;CR&lt;/td&gt;&lt;td&gt;Chairoel Adam, S.Ds., M.Sn.&lt;/td&gt;&lt;td&gt;82163043080&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;118207&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;CY&lt;/td&gt;&lt;td&gt;Siti Noor Chayati, S.T., M.Sc&lt;/td&gt;&lt;td&gt;85162616120&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;112094&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;DE&lt;/td&gt;&lt;td&gt;Dwi Ely Kurniawan, S.Pd., M.Kom&lt;/td&gt;&lt;td&gt;81322460696&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;119222&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;DP&lt;/td&gt;&lt;td&gt;Dodi Prima Resda, S.Pd., M.Kom&lt;/td&gt;&lt;td&gt;85376445446&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;121248&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;DW&lt;/td&gt;&lt;td&gt;Dwi Amalia Purnamasari, S.T., M.Cs&lt;/td&gt;&lt;td&gt;81231963442&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;106042&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;EV&lt;/td&gt;&lt;td&gt;Evaliata Br. Sembiring, S.Kom., M.Cs&lt;/td&gt;&lt;td&gt;81364055215&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122270&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;FB&lt;/td&gt;&lt;td&gt;Feby, M.Pd&lt;/td&gt;&lt;td&gt;85263361736&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;109057&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;FD&lt;/td&gt;&lt;td&gt;Mir’atul Khusna Mufida, S.ST, M.Sc&lt;/td&gt;&lt;td&gt;33658580065&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;—&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;FR&lt;/td&gt;&lt;td&gt;Fendra Dwi R&lt;/td&gt;&lt;td&gt;+62 881-0809-62220&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;119223&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;FS&lt;/td&gt;&lt;td&gt;Fadli Suandi, S.T., M.Kom&lt;/td&gt;&lt;td&gt;85271291482&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122288&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;FW&lt;/td&gt;&lt;td&gt;Festy Winda Sari, S.Tr.Kom&lt;/td&gt;&lt;td&gt;81540016969&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;112086&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;GD&lt;/td&gt;&lt;td&gt;Gendhy Dwi Harlyan, S.Sn., M.Sn&lt;/td&gt;&lt;td&gt;816550310&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122258&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;GS&lt;/td&gt;&lt;td&gt;Aragani Timur Kanistren, S.Sn., M.Sn&lt;/td&gt;&lt;td&gt;82295665553&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;117175&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;HA&lt;/td&gt;&lt;td&gt;Hamdani Arif, S.Pd., M.Sc&lt;/td&gt;&lt;td&gt;85767687475&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;125346&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;HO&lt;/td&gt;&lt;td&gt;Holong Marisi Simalango, M.Kom.&lt;/td&gt;&lt;td&gt;+62 895-0182-7969&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;115143&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;HT&lt;/td&gt;&lt;td&gt;Ahmad Hamim Thohari, S.S.T., M.T.&lt;/td&gt;&lt;td&gt;82283830800&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;102020&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;HW&lt;/td&gt;&lt;td&gt;Hilda Widyastuti, S.T., M.T.&lt;/td&gt;&lt;td&gt;8163674205&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122283&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;ID&lt;/td&gt;&lt;td&gt;Muhammad Idris, S.Tr&lt;/td&gt;&lt;td&gt;81218982998&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;125350&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;KW&lt;/td&gt;&lt;td&gt;Kawan Pandiangan, S.Sn., M.Sn&lt;/td&gt;&lt;td&gt;+62 813-9659-0361&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;124316&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;LK&lt;/td&gt;&lt;td&gt;Luki Aswar, M.Pd.&lt;/td&gt;&lt;td&gt;82176849477&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;113118&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;LM&lt;/td&gt;&lt;td&gt;Liony Lumombo, S.ST., M.IDes&lt;/td&gt;&lt;td&gt;85272721010&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;117196&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;LR&lt;/td&gt;&lt;td&gt;Luthfiya Ratna Sari, S.Si., M.T.&lt;/td&gt;&lt;td&gt;85640441275&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;113103&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;MA&lt;/td&gt;&lt;td&gt;Maria, S.ST., M.Sn&lt;/td&gt;&lt;td&gt;8566523171&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;109064&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;MC&lt;/td&gt;&lt;td&gt;Mira Chandra Kirana, S.T., M.T&lt;/td&gt;&lt;td&gt;85761446116&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;117192&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;MD&lt;/td&gt;&lt;td&gt;Maidel Fani, S.Pd., M.Kom.&lt;/td&gt;&lt;td&gt;087878420952&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;117173&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;MF&lt;/td&gt;&lt;td&gt;Muchamad Fajri Amirul Nasrullah, S.ST., M.Sc&lt;/td&gt;&lt;td&gt;85648010155&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;115148&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;MI&lt;/td&gt;&lt;td&gt;Nelmiawati, B.CS., M.Comp.Sc&lt;/td&gt;&lt;td&gt;87894189520&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;100017&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;MS&lt;/td&gt;&lt;td&gt;Metta Santiputri, S.T., M.Sc, Ph.D&lt;/td&gt;&lt;td&gt;0895365618212&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122279&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NA&lt;/td&gt;&lt;td&gt;Alena Uperiati, S.T, M.Cs&lt;/td&gt;&lt;td&gt;82284070171&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;106044&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NC&lt;/td&gt;&lt;td&gt;Nur Cahyono Kushardianto, S.Si., M.T., M.Sc&lt;/td&gt;&lt;td&gt;8122186711&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;125351&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;ND&lt;/td&gt;&lt;td&gt;Nadya Satya Handayani, M.Kom&lt;/td&gt;&lt;td&gt;+62 823-9045-3258&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;124302&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NH&lt;/td&gt;&lt;td&gt;Nursaimah Harhap&lt;/td&gt;&lt;td&gt;85256350108&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;125352&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NI&lt;/td&gt;&lt;td&gt;Nur Israyani, S.T, M.T&lt;/td&gt;&lt;td&gt;+62 821-9996-9455&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122277&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NR&lt;/td&gt;&lt;td&gt;Noper Ardi, S.Pd., M.Eng&lt;/td&gt;&lt;td&gt;85376166392&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;112087&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NZ&lt;/td&gt;&lt;td&gt;Nur Zahrati Janah, S.Kom., M.Sc&lt;/td&gt;&lt;td&gt;0878-1884-1069&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;115138&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;OG&lt;/td&gt;&lt;td&gt;Oktavianto Gustin, S.T., M.T&lt;/td&gt;&lt;td&gt;85732307391&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;122256&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;RA&lt;/td&gt;&lt;td&gt;Rini Amadia, S.Sn., M.Sn&lt;/td&gt;&lt;td&gt;85274147447&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;125355&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;RC&lt;/td&gt;&lt;td&gt;Recy Harviani Zurwanty, S.Pd., M.Pd&lt;/td&gt;&lt;td&gt;+62 812-6198-8149&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;this-semester-s-lecturers&quot;&gt;This Semester’s Lecturers&lt;/h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Course&lt;/th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Initial&lt;/th&gt;&lt;th&gt;Name&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;RPL101 — Introduction to Software Engineering&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;MS&lt;/td&gt;&lt;td&gt;Metta Santiputri&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL102 — Algorithms and Programming&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NA&lt;/td&gt;&lt;td&gt;Alena Uperiati&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL102 — Algorithms and Programming&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AW&lt;/td&gt;&lt;td&gt;Ari Wibowo&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL105 — Web Programming&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;NR&lt;/td&gt;&lt;td&gt;Noper Ardi&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;RPL106 — Introduction to Databases&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;AM&lt;/td&gt;&lt;td&gt;Ahmadi Irmansyah Lubis&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Several lab lecturers (Iqbal Afif, Supardianto, Kevin Riady, Banu Failasuf) are not in the main table — likely from other departments or not yet captured in the data snapshot. For contact, reach out to the Informatics Department secretariat.&lt;/p&gt;
&lt;h2 id=&quot;contact-etiquette&quot;&gt;Contact Etiquette&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Use official email for academic matters.&lt;/li&gt;
&lt;li&gt;Include your name, NIM, class, and course.&lt;/li&gt;
&lt;li&gt;Keep the tone polite and formal.&lt;/li&gt;
&lt;li&gt;Respect working hours — avoid contacting outside reasonable times.&lt;/li&gt;
&lt;li&gt;Allow 1–2 days for a response.&lt;/li&gt;
&lt;li&gt;For sensitive matters, use official department channels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Phone numbers are an alternative contact, not the primary channel.&lt;/p&gt;
&lt;h2 id=&quot;faq&quot;&gt;FAQ&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Why are some lecturers missing from the list?&lt;/strong&gt;
They may be from other departments or not yet registered. Contact the Informatics Department secretariat.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Can I use phone numbers for consultation?&lt;/strong&gt;
For academic matters, prioritize official email and e-learning.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is NIK?&lt;/strong&gt;
Employee ID Number (Nomor Induk Karyawan), used for official correspondence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The data is inaccurate, what should I do?&lt;/strong&gt;
Verify through the official department website or e-learning, and confirm with the secretariat.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Search</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mroczect.biz.id/lectures/search/"/>
        <id>https://mroczect.biz.id/lectures/search/</id>
        
        <content type="html" xml:base="https://mroczect.biz.id/lectures/search/"></content>
        
    </entry>
</feed>
