مقدمه و تعاریف پایه
- داده (Data): واقعیتهای خام بدون پردازش، مانند عدد یا نام. به تنهایی معنای خاصی ندارند.
- مثال: عدد 25 به خودی خود اطلاعاتی دربر ندارد.
- اطلاعات (Information): دادههای پردازششده و معنادار که به پرسشها پاسخ میدهند.
- مثال: سن کاربر = 25 سال، یک قطعه اطلاعات است.
- دانش (Knowledge): تحلیل و درک عمیق اطلاعات برای تصمیمگیری و پیشبینی با استخراج الگوها.
- مثال: میانگین سن کاربران 30 سال است.
مبانی اولیه و انگیزه استفاده از DBMS
- دو رویه طراحی سیستم ذخیرهسازی:
- 1) مشی سنتی یا فایلینگ
- 2) مشی پایگاهی (DBMS)
- مزایای استفاده از پایگاه داده (DBMS):
- کاهش افزونگی داده
- حفظ یکپارچگی دادهها و سازگاری
- اشتراکگذاری دادهها به سهولت
- کنترل دقیق امنیت و دسترسی
- مقایسه بین پایگاه داده و روش فایل-مبنای ذخیرهسازی:
- فایل-مبنا: دادهها در فایلهای مجزا و مستقل ذخیره میشوند؛ هر برنامه منطق خود را پیادهسازی میکند.
- DBMS: دادهها مجتمع و با واسطه یک سیستم مدیریت پایگاه داده واحد مدیریت میشوند.
- پیام کلیدی: کاهش افزونگی، ایجاد واحد عملیاتی منسجم و افزایش ایمنی
معماری سیستم پایگاه داده و سهطرحواره (Three-Schema)
- سه طرحواره اصلی:
- طرحواره داخلی (Internal Level): توصیف ساختارهای ذخیرهسازی فیزیکی و مسیرهای دسترسی (مثلاً ایندکسها).
- طرحواره مفهومی/ منطقی (Conceptual/ Logical Level): توصیف ساختار پایگاه داده برای کاربران دامنه و مدل دادهای مشترک.
- طرحوارههای خارجی (External Level): نمایش دیدگاههای مختلف کاربران به دادهها.
- هدف سهطرحواره:
- استقلال برنامه-داده (Program-Data Independence): تغییر در سطح فیزیکی بدون تأثیر روی سطح منطقی و خارجی.
- پشتیبانی از چند دیدگاه از دادهها (Multiple Views of Data)
- Mapping بین سطوح و نقش زبانهای مختلف DBMS.
زبانهای DBMS و مفاهیم اصلی
- زبان تعریف دادهها (DDL): برای مشخصکردن طرحواره پایگاه داده (CREATE, ALTER, DROP).
- زبان دستکاری دادهها (DML): برای بازیابی و بهروزرسانی دادهها (INSERT, UPDATE, DELETE, SELECT).
- زبانهای سطح بالا/ غیرروی (High-Level/Non-procedural): مانند SQL.
- زبانهای سطح پایین/رویّهای (Low-Level/Procedural): شامل جنبههای رویهای برای پردازش گامبهگام.
- رابطهای DBMS: برای تعامل کاربران و برنامهها با DBMS (Embeded, Standalone, JDBC/ODBC و غیره).
مدلهای داده و سطوح آنها
- مدلهای داده به سه دسته تقسیم میشوند:
- مدل مفهومی (Conceptual): سطح بالا، معنایی؛ نزدیک به درک کاربران.
- مدل منطقی (Logical): جزئیات بیشتر از مفهوم، بدون در نظر گرفتن پیادهسازی DBMS.
- مدل فیزیکی (Physical): نمايي از نحوه ذخیرهسازی در دیسک و پیادهسازی داخلی.
- مدلهای پیادهسازی (Implementation) و مدلهای شی-رابطی (Object-Relational) نیز وجود دارند.
مدل ER و طراحی مفهومی
- مفهوم ER شامل:
- موجودیتها (Entities): اشیا یا چیزهای خاص دنیای واقعی.
- ویژگیها/ATTRIBUTES: صفات توصیفکننده هر موجودیت.
- کلیدها (Keys): کلید اصلی (PK) که هر موجودیت باید مقدار منحصر به فردی داشته باشد.
- روابط (Relationships): ارتباطهای بین موجودیتها با انواعی مانند 1:1، 1:N، N:M.
- انواع صفات: ساده، مركب، چند مقداری، مشتق، صفات کلیدی، صفات طراحیشده (derived).
- موجودیتهای قوی و ضعیف:
- موجودیت قوی: مستقل از سایر موجودیتها.
- موجودیت ضعیف: وابسته به موجودیت دیگری و شناسه مستقل ندارد.
- نمودار ER و نمادگذاری:
- مستطیل: موجودیت
- بیضی: ویژگیها
- لوزی: رابطه
- خطوط زیرین روی ویژگیهای کلیدی
- رابطهها و درجات آنها:
- درجه رابطه (arity) با نشانۀ n، مانند 1-ary, 2-ary, 3-ary.
- نمونهها: 1:1، 1:N، N:M
- نمودار ER و مفاهیم پیشرفته:
- رابطههای با درجه بالا از دو یا سه سطح، نقشها و قیود ساختاری
- نگاهی به مدلِ بهبودیافته هستنده-ارتباط (Enhanced ER, EER): زیرکلاسها، ارثبری، و قیود جدید
- مثالهای عملی:
- مثال HOTEL: موجودیتهای Hotel, Room, Reservation, Customer
- نمونه COMPANY: Departments, Projects, Employees, Dependents؛ رابطههایی مانند Works_On، Manages و غیره
مدل رابطهای و نگاشت ER→Relational
- مفاهیم پایه مدل رابطهای:
- دادهها در قالب جداول با سطرها و ستونها ذخیره میشوند.
- کلیدهای اصلی (Primary Keys) و خارجی (Foreign Keys) برای تعیین ارتباطها.
- قیود (Constraints) مانند CHECK، NOT NULL و … برقرار میشود.
- نگاشت از ER به مدل رابطهای:
- موجودیتها به جداول تبدیل میشوند.
- روابط به کلیدهای خارجی یا جداول رابط تبدیل میشوند (بسته به سطح قیود).
- مثال ساده از ساخت جداول و قیود:
- مثال شرکت: تبدیل موجودیتهای EMPLOYEE، DEPARTMENT، PROJECT و DEPENDENT به جداول و تعیین کلیدهای اصلی و خارجی.
طرحواره و وضعیت پایگاه داده
- طرحواره (Schema): تعریف کلی ساختار پایگاه داده، انواع دادهها، و محدودیتها.
- وضعیت (State/Instance): دادههای واقعی ذخیرهشده در یک لحظه زمان.
- تمایز:
- Schema به ندرت تغییر میکند؛ State تغییر میکند.
- طرحواره (Schema) به لحاظ Инسنسن intension است و حالت (State) به extension.
طراحی مفهومی بهبود یافته و نرمالسازی
- هدف از بهبود مدل ER:
- حذف افزونگی دادهها
- شفافسازی روابط مبهم (مثلاً تعیین دقیق 1:1 یا N:M و ویژگیهای رابطه)
- نرمالسازی برای جلوگیری از ناهنجاریهای درج/حذف/بهروزرسانی
- حفظ قیود یکپارچگی (Integrity Constraints)
- آمادهسازی برای طراحی منطقی رابطهای
- اصول n به 1، 1 به n، N به M در روابط
- زیرکلاسها و ارثبری: استفاده از ارثدهی برای نگاشت بهتر به جداول و کاهش پیچیدگی
طرحوارههای DBMS و معماریهای کلان
- معماری سهطرحواره:
- External Level (سادهترین دید کاربران): دیدگاههای مختلف از دادهها
- Conceptual/Logical Level (سطح منطقی): طرحواره عمومی پایگاه داده
- Internal Level (سطح فیزیکی): طرحواره ذخیرهسازی و مسیرهای دسترسی
- Mapping بین سطحها (External↔Conceptual, Conceptual↔Internal)
- اهداف معماری سه Schemas:
- استقلال برنامه-داده
- پشتیبانی از چند دیدگاه از دادهها
- سه سطح انتزاع برای سازماندهی بهتر
زبانها و رابطهای DBMS (SQL و فراتر)
- زبانهای DBMS:
- DDL: تعریف Database Schema (CREATE, ALTER, DROP)
- DML: دستکاری دادهها (INSERT, UPDATE, DELETE, SELECT)
- زبانهای سطح بالا/غیر رویهای (Non-Procedural): SQL
- زبانهای سطح پایین/رویّهای (Procedural): PL/SQL, T-SQL و غیره
- مثالهای SQL معرفیشده در منابع:
CREATE TABLE Student (
StudentID SERIAL PRIMARY KEY,
Name VARCHAR(100) NOT NULL,
Major VARCHAR(50)
);
CREATE TABLE Course (
CourseID SERIAL PRIMARY KEY,
Title VARCHAR(200) NOT NULL,
Credits INT CHECK (Credits > 0)
);
- تعریف جدول Enrollment با کلیدهای خارجی و کلید ترکیبی:
CREATE TABLE Enrollment (
StudentID INT REFERENCES Student(StudentID),
CourseID INT REFERENCES Course(CourseID),
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseID)
);
- DDL و DML به همراه نمونههای کاربردی در محیطهای Embed و Standalone، و رابطهای JDBC/ODBC
رابطهای کاربری و محیطهای توسعه DBMS
- رابطهای کاربری مبتنی بر منو/ فرم/ گرافیک برای وب و دسکتاپ
- رابطهای برنامهنویس برای جاسازی DML در زبانهای برنامهنویسی (Embedded) و استفادههای بیرونی (Standalone)
- رویکردهای دسترسی:
- Embedded SQL در زبانهایی مانند C/C++، Java
- JDBC برای Java و ODBC برای زبانهای دیگر
- ابزارهای DBMS برای مدیریت، طراحی، و مانیتورینگ:
- ERD tools, Query tools, Schema diff, Backup/Restore, Performance monitoring
معماریهای کلاينت-سرور و توزیعی
- معماری متمرکز: همه چیز در یک سیستم با سختافزار و نرمافزار متمرکز
- معماری دو سطح (2-Tier): کلاینت-سرور با لایه کاربری و لایه دیتابیس
- معماری سه سطح (Three-Tier): Presentation Layer (Web UI)، Business Logic/Application Server، Database Server
- معماریهای توزیعی/Distributed DBMS:
- DDBMS همگن و ناهمگن
- مدلهای فدرال و چندپایگاهی
- مزایا: امنیت بیشتر، مقیاسپذیری، پارتیشنبندی و مدیریت کلاینتهای متنوع
انواع مدلهای داده و تاریخچه آنها
- مدلهای داده متنوع تاریخی:
- مدل سلسلهای (Hierarchical)
- مدل شبکهای (Network)
- مدل رابطهای (Relational)
- مدلهای شیگرا (Object-oriented), O/R و NoSQL
- تبیین ویژگیها و معایب هر مدل:
- سلسلهای: پیمایش سریع، اما محدودیت روابط n-to-many
- شبکهای: روابط چند-به-چند، اما طراحی مسیرهای پیچیده است
- رابطهای: ساده، استفاده از SQL، ولی محدودیتهایی در نمایش ساختارهای پیچیده
- مفهوم NoSQL برای دادههای غیرساختیافته و مقیاسپذیری
نمونههای ER و نگاشتهای عملی
- نمونه ER COMPANY و HOTEL:
- ENTITYs: DEPARTMENT, PROJECT, EMPLOYEE, DEPENDENT, STUDENT, COURSE, SECTION, GRADE_REPORT
- روابط: WORKS_ON (EMPLOYEE–PROJECT)، MANAGES (EMPLOYEE–DEPARTMENT)، HAS (مثلاً HOTEL–ROOM)، …
- نگاشت به مدل مرتبۀ رابطهای و SQLهای نمونه برای ایجاد جداول و کلیدهای خارجی
- اصول کلیدی در نگاشت ER→Relational:
- نمودار ER به صورت جداول با PK و FK، و قیود مرتبط
- کاربرد constrained keys برای حفظ صحت داده
مفاهیم عملی تکمیلی و نکات آموزشی
- رابطهها به سه دسته تقسیم میشوند: 1:1، 1:N، N:M
- رابطههای سه-موجودیتی (t-uple) و نکات مربوط به وارثیت و ارثبری
- اصول نرمالسازی:
- هدف جلوگیری از افزونگی، حفظ سازگاری و امکان نگهداری آسان
- مثال: تفکیک موجودیت دانشجو و درس و استفاده از ارتباط ثبتنام
- مفهوم منبع داده: data dictionary (کاتالوگ داده) در DBMS و تفاوت میان دادههای فعال و غیرفعال
- نقش CASE و ابزارهای توسعه: IDEهای طراحی پایگاه داده مثل Oracle JDeveloper، JBuilder، و غیره
نکات کلیدی و تمرینها
- سوالات تمرینی برای ER و طراحی مفهومی بهبود یافته:
- چگونه یک سیستم ثبت نام دانشگاه را با چند درس و چند استاد مدل میکنید؟
- چگونه از ER به مدل رابطهای نگاشت میکنید و چه محدودیتهایی ممکن است پیش بیاید؟
- هدف اصلی از استفاده از سهمقام طرحواره چیست؟ استقلال برنامه از داده و چند دیدگاه از دادهها.
- مفاهیم کلیدی در طراحی مفهومی بهبود یافته (EER): همارثی، نقشها، و زیرکلاسهها.
نکتههای اخلاقی و عملی
- طراحی دیتابیس باید منطبق با نیازهای عملی کاربران باشد و دادهها را به شکل امن، دقیق و بدون افزونگی نگه دارد.
- اهمیت مدیریت دسترسی و امنیت دادهها با تعریف سطوح دسترسی مناسب برای کاربران و برنامهها.
- حفظ پایداری دادهها و رعایت قیود صحت داده در همه سطحها از اهمیت بالایی برخوردار است.
مراجع و منابع یادگیری
- Fundamentals of Database Systems (7th edition) - Elmasri & Navathe (2015)
- منابع فارسی مرتبط با مفاهیم پایگاه داده و ER و SQL
- منابع آنلاین مانند W3C School و مستندات DBMSهای معتبر
پیوست: نمونههایی برای مرور سریع
- مثال سطحی از طرحواره COMPANY با موجودیتهای DEPARTMENT، PROJECT، EMPLOYEE و DEPENDENT و روابط WORKSFOR، MANAGES، WORKSON
- نمونه کد SQL ساده برای ایجاد جداول پایه و کلیدهای خارجی:
CREATE TABLE Student (
StudentID SERIAL PRIMARY KEY,
Name VARCHAR(100) NOT NULL,
Major VARCHAR(50)
);
- تعریف COURSE و CHECK constraint:
CREATE TABLE Course (
CourseID SERIAL PRIMARY KEY,
Title VARCHAR(200) NOT NULL,
Credits INT CHECK (Credits > 0)
);
- نگارش Enrollment با کلید ترکیبی:
CREATE TABLE Enrollment (
StudentID INT REFERENCES Student(StudentID),
CourseID INT REFERENCES Course(CourseID),
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseID)
);
- نکته: بین سطح External، Conceptual و Internal mappings چگونه جریان دارد و چه تفاوتی در نمایش دادهها ایجاد میکند.