Chapter 2 — Databases (قواعد البيانات)
Quand j’ai commencé à apprendre l’informatique, je me suis rapidement rendu compte d’une chose : presque toutes les ressources étaient en anglais ou en arabe classique.
Pour comprendre une seule notion, il fallait traduire, interpréter, puis essayer de l’adapter à notre réalité tunisienne. Beaucoup d’étudiants se découragent à ce stade : non pas parce qu’ils manquent de curiosité ou d’intelligence, mais simplement parce que la barrière linguistique rend l’accès au savoir plus difficile qu’il ne devrait l’être.
Tech B Derja est né de cette frustration — et d’un rêve : rendre la technologie compréhensible dans la langue que nous utilisons tous les jours.
Je voulais qu’un étudiant, un développeur débutant, ou même quelqu’un qui aime la tech sans être ingénieur, puisse ouvrir ce livre et dire : “Ah, enfin un cours qui parle comme moi.”
Parce que la Derja n’est pas un obstacle : c’est un pont entre notre culture et la connaissance moderne.
Ce livre n’a pas la prétention d’être académique. Il cherche simplement à expliquer les grands principes du Software Engineering d’une manière directe, humaine, et fidèle à notre manière tunisienne de raisonner : simple, concrète, et souvent pleine d’humour.
Les termes techniques restent en anglais — parce qu’ils font partie du langage universel des ingénieurs — mais tout ce qui entoure ces mots, tout ce qui fait sens, est raconté avec la voix du pays, avec nos expressions, notre ton, notre réalité.
J’espère que Tech B Derja donnera envie à une nouvelle génération de Tunisiens de comprendre la technologie, de créer, et de partager leurs idées.
Si, grâce à ce livre, un étudiant réussit à voir le code autrement — non plus comme une langue étrangère, mais comme un outil qu’il peut maîtriser — alors le pari est gagné.
Sami BELHADJ
Auteur & Formateur en Technologies
Tunis, 2025
Ki bdit ntaallam fi domaine ta3 l’informatique, chft elli akther men 90% men l resources kolhom b anglais, w elli ba9i b 3arbi fous7a ki te9ra fih, t7ess rouhek ta9ra traduction, mochkla fel logha 9bal ma tkon mochkla fel tech.
Bech tfhem concept wahda, tkoun 3andek trois mashakel : logha, contexte, w style ta3 teaching li ma ychabahch lina. W barcha tlamdha ysaybou el parcours 5aterhom ma y9drouch ywaff9ou bin el terminology ta3 tech w el 3arbi el 9adim.
Men hna ja l’idée ta3 Tech B Derja.
7bit na3mel livre tech fi loghetna — Derja — logha li nkalmo beha kol youm, li fahminha, li t3abber 3lina.
7bit el student ki y7ell el livre, y9oul : “eyy, hadha yekalmni, mafhmou w 9rib men 9albi.”
Tech B Derja ma houwech cours académique, houwa mouch dictionary ta3 code.
Houwa kitab yfassar el concepts ta3 Software Engineering b derja sahla, b exemples men el 7ay w b respect lel technical terms fi anglais.
El anglaizi b9a f ma7lou, 5ater el engineer fi el dounya lkol yesta3melha, ama el fahm walla fi loughtek inti.
El message ta3i b ssa7 : el tech ma hyaach 7a9r 3la wa7din, w el Derja ma hyaach 3a9ba.
El Derja najmou biha nfahmou, n5arjou projects kbira, w na3mlou innovation men bladna.
Inchallah Tech B Derja ykoun sabab bich talmidh wala developer tounsi yfhem el code b twensa, y7ess elli el tech 9riba menou, w elli el “engineering” ma houwech logha ghorba, bel hiya logha najmou n5alouha tounsia ken na3rfou kif.
Sami BELHADJ
Auteur w Formateur fi Technologies
Tounes, 2025
من أوّل ما بديت نتعلّم في الإعلاميّة، لحظت حاجة: أغلب الدروس والمصادر يا بالإنڨليزي، يا بالعربي الفصحى اللي ما نحكيوهاش في حياتنا.
باش تفهم فكرة وحدة، لازم ترجّعها في مخّك، وتفسّرها، وتخمّم فيها بثلاث لغات، وهاك اللوجيك يضيع بيناتهم.
وبرشا طلبة صغار ولا حتّى ديڤلوبر جداد، يتقلقو ويوقّفو، موش خاطر ما عندهمش مخّ، أمّا خاطر اللّغة وقفت قدّامهم.
من غادي جات الفكرة متاع Tech B Derja.
قلت: علاش ما نكتبش كتاب في التكنولوچيا بلغتنا نحنا؟
بالدرجة، بالأسلوب اللي نحكيو بيه كلّ يوم، بلا تكليف، بلا فصحى، بلا غُربة.
نحبّ الطالب كي يقرى يقول: “هاو الكتاب هذا يفهمني، يحكي كيفي، ومخّي يمشي معاه.”
Tech B Derja موش كتاب أكاديمي جامد، وموش قاموس متاع كود.
هو كتاب يحكي على مفاهيم Software Engineering بطريقة قريبة، ساهلة، وبأسلوب تونسي يخليك تفهم وتتصوّر.
خليت المصطلحات التقنية بالإنڨليزي خاطرها لغة الكود في العالم الكلّ، أمّا الباقي كلّو تونسي، مفهوم، وديما قريب من الواقع.
الفكرة إنّو التكنولوچيا ما هيش حاجة بعيدة علينا، وما ثماش سبب يخلّينا نحسّوها غريبة.
الدرجة تنجم تكون لغة علم، كيف ما كانت زمان لغة شعر وتاريخ.
بها نجّمو نفسّرو، نتعلّمو، ونبنيو حاجات كبار من بلادنا.
إن شاء الله Tech B Derja يكون سبب باش تلميذ تونسي ولا شابّ ديڤلوبر يفهم الكود بلغتو،
ويحسّ إليّ الدنيا الرقميّة ما هيش للناس اللّي “فهمين وحدهم”،
بل هي لينا الكلّ،
كيف نفهموها بطريقتنا.
سامي بالحاج
كاتب ومكوّن في التكنولوچيا
تونس، 2025
الـ Database هي قلب أي system.
ما تنجمش تلقى application تخدم من غير ما تخزّن معلومات: users، produits، commandes، transactions…
الكلّها لازمها بلاصة منظمة نحطّو فيها الـ data، نجم نرجعوها، نبدّلوها، ولا نحذفوها وقت اللي نحبّ.
من غير database، الـ application تبقى كيما دار من غير أساس:
الواجهة (interface) تنجّم تكون باهية، أما من داخل فارغة.
في الفصل هذا، باش نحكيو على المفاهيم الأساسية متاع قواعد البيانات، الفرق بين الأنواع، كيفاش نحافظو على الأمان، وكيف نختارو التصميم الصحيح.
الـ Database ببساطة هي مجموعة منظّمة من الـ data، مربوطة ببعضها في شكل جداول (tables).
كل table فيها rows (سجلات) وcolumns (حقول).
كل row يمثّل record واحد، كيما user ولا commande.
وكل column يمثّل نوع من البيانات: الاسم، العمر، التاريخ، المبلغ…
الـ DBMS (Database Management System) هو البرنامج اللي يدير العملية الكل:
يخزّن، يقرى، يبدّل، ويحمي الـ data.
أمثلة: MySQL, PostgreSQL, SQL Server, Oracle, MongoDB.
هي النوع الكلاسيكي والمعروف.
البيانات فيها مربوطة ببعضها بعلاقات (relations)، وكلّ شي منظم في tables.
اللغة المستعملة معاها هي SQL (Structured Query Language).
مثلاً باش نجيبو users من table:
SELECT * FROM users WHERE age > 25;
الفايدة متاعها: منظمة، قوية في العلاقات، تحافظ على consistency.
أما أحياناً ثقيلة كيما يكبر الـ system برشة.
أمثلة: MySQL, PostgreSQL, SQL Server.
تخدم بطريقة مختلفة.
ما فيهاش structure ثابت، وتستعملها كي يكون عندك data متنوّعة وكبيرة برشة (Big Data).
الـ NoSQL فيها أربع أنواع كبار:
الـ NoSQL أسرع في الـ scalability، أما تنقصها شوية consistency مقارنة بالـ SQL.
باش تكون الـ database محترمة من ناحية الموثوقيّة، لازمها تتبع 4 خصائص أساسية نسمّيوهم ACID:
| الحرف | المعنى | التفسير |
|---|---|---|
| A – Atomicity | العملية تصير كاملة ولا ما تصيرش | يا الكل يا بلاش |
| C – Consistency | الحالة تبقى صحيحة بعد كل عملية | الـ data ما تتكسّرش |
| I – Isolation | كل عملية مستقلة | ما تتداخلش العمليات |
| D – Durability | البيانات تبقى حتى بعد crash | ما تتنساش بعد restart |
مثلاً: كي تعمل تحويل بنكي، ما يصيرش سحب من حساب واحد بلا ما يصير إضافة في الآخر.
العمليّة يا تكمل الكل، يا تتلغا.
الـ Index في الـ database يخدم كيف index متاع كتاب.
يعاونك تلقى الـ data أسرع.
مثلاً، عندك table فيها 1 مليون user.
كي تعمل بحث على user_name من غير index، الـ database تمشي سطر بسطر (Full Table Scan).
لكن وقت تعمل index على العمود، تولّي تلقى النتيجة في ثواني.
أما لازم تعرف:
كل index ياخذ مساحة ويبطّئ الـ inserts،
خاطر كل مرة تدخل record جديد، لازم يبدّل الـ index زادة.
معناها نقسم الـ data بطريقة تقلّل التكرار (redundancy) وتحافظ على التنظيم.
مثلاً ما نكرّروش اسم المستخدم في كل table، نحطّوه في table وحدة ونعمل foreign keys.
المستوى الكلاسيكي هو 3NF (Third Normal Form) — ينظّم الـ tables بطريقة تخليهم خفاف وواضحين.
الفايدة:
لكن في المقابل، الاستعلامات (queries) تولّي معقّدة أكثر، وتستحق joins بزاف.
العكس متاع normalization.
نكرّرو شوية الـ data باش نحسّنو الأداء.
مناسبة في الأنظمة الكبيرة كيما analytics وreporting وين السرعة أهمّ من التنظيم.
الأمان ما هوش كماليّة، هو ضروري.
أغلب الاختراقات تصير من ضعف في database configuration ولا SQL Injection.
هي كي المستخدم يدخل code خايب بدل ما يدخل بيانات.
مثلاً:
SELECT * FROM users WHERE username = 'admin' AND password = '';
لو ما تعملش input validation، ينجم hacker يدخل ' OR '1'='1 ويدخل للنظام بلا كلمة سر.
باش تتفادى الحكاية هذي:
الـ Backup هو نسخة احتياطية من الـ data،
والـ Recovery هو كيفاش نرجعوها وقت يصير crash ولا خطأ.
أنواع الـ backup:
ما تستناش يصيرلك مشكل باش تعمل backup.
ينجم crash صغير يطيّحلك مشروع كامل.
الـ Replication معناها تعمل أكثر من نسخة من نفس الـ database في servers مختلفين.
الهدف: نحافظو على availability ونقلّصو الضغط على نسخة وحدة.
الأنواع:
كي الـ database تكبر، نحتاج نوسّعها (scale) كيف باقي السيستام.
نقوّي السيرفر بزيادة CPU وRAM.
ساهل، أما محدود.
نقسم الـ data على أكثر من server (sharding).
كل shard يخزّن جزء من الـ data.
مفيد للأنظمة الكبيرة كيما مواقع التجارة الإلكترونية.
في الأنظمة الحديثة، ما عادش نحكيو على database وحدة.
نلقاو hybrid systems:
مثلاً PostgreSQL مع Redis،
ولا MongoDB مع Elasticsearch.
كل وحدة عندها دور:
الفكرة إنك تبني architecture متكاملة تخدم المشروع بالأنسب.
الـ Database هي أساس السيستام، واللي يفهمها مليح يفهم كيفاش يخدم كل النظام.
باش تكون efficient، لازم:
الـ data اليوم هي البترول متاع العصر الرقمي.
واللي يعرف كيفاش ينظّمها، يخزّنها، ويستعملها،
هو اللي يقرّر شنوة ينجّم السيستام يعمل وغدوة شكون يكون عندو القيمة.