রিলেশনাল ডেটাবেজ
সব তথ্য এক বিশাল টেবিলে না রেখে আলাদা টেবিলে রেখে "কী" দিয়ে যুক্ত করাই রিলেশনাল ডেটাবেজ-এর মূল ভাবনা। এতে একই তথ্য বারবার লিখতে হয় না।
উদাহরণ
| Students (প্রাইমারি কী: Roll) | |
|---|---|
| Roll | Name |
| 1 | রাফি |
| 2 | সুমাইয়া |
| Results (ফরেন কী: Roll) | ||
|---|---|---|
| Roll | Subject | Marks |
| 1 | ICT | 85 |
| 1 | Math | 78 |
| 2 | ICT | 92 |
রাফির নাম Results টেবিলে বারবার লিখতে হলো না। নাম বদলালে এক জায়গায় বদলালেই হবে।
সম্পর্কের ধরন
| ধরন | অর্থ | উদাহরণ |
|---|---|---|
| One-to-One (১:১) | একটি রেকর্ডের সাথে অন্য টেবিলের একটি রেকর্ড | একজন নাগরিক ↔ একটি এনআইডি |
| One-to-Many (১:n) | একটি রেকর্ডের সাথে অনেকগুলো রেকর্ড | এক শিক্ষার্থী → অনেক বিষয়ের ফল |
| Many-to-Many (n:n) | দুই দিকেই অনেকগুলো | অনেক শিক্ষার্থী ↔ অনেক কোর্স |
Many-to-Many সরাসরি করা যায় না; মাঝে একটি তৃতীয় টেবিল (Junction Table) লাগে। যেমন: Students ও Courses-এর মাঝে Enrollments।
নরমালাইজেশন
বড় টেবিলকে ভেঙে পুনরাবৃত্তি কমানো ও তথ্য সুসংগঠিত করার প্রক্রিয়াই নরমালাইজেশন।
মনে রাখো: One-to-Many-তে "Many" দিকের টেবিলে ফরেন কী থাকে।
অনুশীলনী
- স্কুলে শিক্ষক ও বিষয়ের মধ্যে কোন ধরনের সম্পর্ক হতে পারে? ব্যাখ্যা করো।
- গ্রাহক ও অর্ডারের দুটি টেবিল নকশা করো, প্রাইমারি ও ফরেন কী চিহ্নিত করো।
- একই তথ্য বারবার রাখলে কী সমস্যা হয়?