طراحی پایگاه دادهها
| مدرس: دکتر مریم رمضانی | پیشنیاز: دادهساختارها و الگوریتمها |
| ترم: تابستان ۱۴۰۴ | محل برگزاری: کلاس مجازی |
| زمان ارائه: دوشنبه ۱۶:۰۰ تا ۱۹:۰۰ | مشاهده: دریافت لایسنس |
معرفی درس
پایگاه داده؛ از طراحی و SQL تا بهینهسازی و فناوریهای نوین داده
پایگاه داده یکی از اجزای اصلی سامانههای نرمافزاری است و تقریباً در هر کاربردی که با ذخیرهسازی، سازماندهی و پردازش اطلاعات سروکار دارد، نقشی اساسی ایفا میکند. طراحی درست پایگاه داده و انتخاب روش مناسب برای ذخیرهسازی و بازیابی اطلاعات، علاوه بر حفظ صحت و سازگاری دادهها، بر کارایی، مقیاسپذیری و قابلیت اطمینان سامانه نیز تأثیر مستقیم دارد.
در این درس، با اصول طراحی و پیادهسازی پایگاه داده آشنا میشوید و میآموزید چگونه دادهها را مدلسازی و ساختاردهی کنید و با استفاده از SQL آنها را مدیریت و پردازش کنید. مباحثی مانند مدل رابطهای، طراحی مفهومی با نمودارهای ER و EER، تبدیل مدل مفهومی به طراحی منطقی و نرمالسازی، پایههای طراحی اصولی پایگاه داده را تشکیل میدهند. همچنین، با قابلیتهای SQL از جمله انواع اتصال جداول، زیرپرسوجوها، توابع پنجرهای و پرسوجوهای بازگشتی آشنا خواهید شد.
در ادامه، موضوعاتی مانند جامعیت دادهها، رویهها و محرکها، تحلیل و بهینهسازی اجرای پرسوجوها، شاخصگذاری و افراز دادهها بررسی میشوند تا با روشهای بهبود عملکرد پایگاه داده آشنا شوید. علاوه بر این، درس به فناوریهای نوین ذخیرهسازی و پردازش داده نیز میپردازد؛ از جمله انبار داده و فرایند ETL، پایگاه دادههای غیررابطهای و معماریهای توزیعشده، آشنایی با MongoDB و Neo4j و نیز معرفی پایگاه دادههای برداری و کاربرد آنها در هوش مصنوعی.
در پایان این درس چه تواناییهایی کسب میکنید؟
- درک مفاهیم بنیادی پایگاه دادهها، معماری سیستمهای پایگاهی و ویژگیهای تراکنشهای ACID
- شناخت مدل رابطهای، انواع کلیدها، محدودیتها و عملیات رابطهای
- استفاده از SQL برای تعریف ساختار دادهها، درج و تغییر اطلاعات، مدیریت دسترسی و اجرای پرسوجوهای پیچیده
- طراحی مفهومی و منطقی پایگاه داده با استفاده از مدلهای ER و EER
- شناخت اصول نرمالسازی و روشهای کاهش افزونگی و جلوگیری از مشکلات طراحی
- آشنایی با سازوکارهای تضمین جامعیت دادهها، رویهها، توابع و محرکها
- تحلیل برنامه اجرای پرسوجوها و آشنایی با شاخصگذاری و روشهای بهینهسازی عملکرد پایگاه داده
- درک مفاهیم انبار داده، معماریهای آن و فرایند استخراج، تبدیل و بارگذاری دادهها (ETL)
- شناخت انواع پایگاه دادههای NoSQL و تفاوتهای آنها از نظر مدل داده، مقیاسپذیری و معماری
- آشنایی با MongoDB و Neo4j و کاربردهای آنها در مسائل واقعی
- آشنایی با پایگاه دادههای برداری و نقش آنها در کاربردهای هوش مصنوعی
این درس برای دانشجویان و دانشآموختگان مهندسی کامپیوتر و علوم کامپیوتر، برنامهنویسان و توسعهدهندگان نرمافزار و افرادی که با طراحی، پیادهسازی یا تحلیل سامانههای دادهمحور سروکار دارند، مناسب است. همچنین، برای کسانی که میخواهند دانش خود را از کار با SQL و طراحی پایگاه داده تا مفاهیم پیشرفتهتر مدیریت و پردازش داده گسترش دهند، این دوره میتواند پایهای منسجم و کاربردی فراهم کند.
پیشنیاز
آشنایی مقدماتی با برنامهنویسی و مفاهیم پایه الگوریتمها برای بهرهگیری بهتر از این درس توصیه میشود. آشنایی قبلی با SQL ضروری نیست؛ با این حال، دانشجویان باید از هفته سوم درس، همزمان با پیشرفت مباحث، مطالعه و تمرین SQL را آغاز کنند تا بتوانند مثالها و مباحث عملی درس را بهخوبی دنبال کنند.
سرفصلها
- مقدمه و معرفی سیستمهای پایگاهی (۱ جلسه)
- معرفی درس
- تعریف و اهمیت پایگاه دادهها
- عناصر کلیدی محیط پایگاه داده
- ACID Properties
- انواع معماری سیستم پایگاهی (متمرکز، مشتری-خدمتگزار، توزیعشده)
- اجزای سیستم مدیریت پایگاه داده رابطهای (RDBMS)
- مدل رابطهای (۱ جلسه)
- رابطه و مفاهیم مربوطه
- انواع کلید
- عملیات رابطهای
- Constraints
- پیادهسازی SQL (۴ جلسه)
- زبان پایگاه دادهی جدولی (SQL)
- دستورات DDL
- دستورات DML
- دستورات DCL
- دستورات TCL
- Subqueries
- انواع Join
- View & Materialized View
- طراحی پایگاه داده (۴ جلسه)
- مدلسازی معنایی
- موجودیت، صفت، ارتباط
- نمودار ER و EER
- Aggregation و Generalization
- تبدیل مدلسازی معنایی به طراحی منطقی
- نرمالسازی (Normalization) - سطوح 3NF, 2NF, 1NF و BCNF
- انواع دامها و نحوهی حل آنها
- Modern SQL (۱ جلسه)
- Output Control + Redirection
- Window Functions
- Nested Queries
- Lateral Joins
- Common Table Expressions (CTE)
- Recursive Queries
- جامعیت در مدل رابطهای (۱ جلسه)
- Integrity
- Assertion
- Procedure, Function
- Trigger
- بهینهسازی عملکرد پایگاه داده (۲ جلسه)
- Query Execution Plan و Query Profiling
- Indexes Clustered & Non-Clustered
- Database Tuning
- Data Purging
- Data Partitioning
- انبار داده (Data Warehouse) (۱ جلسه)
- مفهوم و اهمیت انبار دادهها
- مدلهای مختلف معماری انبار داده
- فرآیندهای استخراج، تبدیل و بارگذاری دادهها (ETL)
- طراحی و ساخت Data Mart (انبار دادههای خاص)
- پیادهسازی Normalized و Denormalized دادهها
- دادهکاوی در انبار دادهها
- پایگاهداده غیررابطهای (NoSQL DBMS) (۱ جلسه)
- دلایل استفاده از پایگاه دادههای غیررابطهای (NoSQL)
- تئوری CAP
- پایگاه دادههای کلید-مقدار، ستون-محور، گراف-محور و سند-محور و ترکیبی (Multi-Model)
- مقیاسپذیری افقی و عمودی
- طراحی پایگاه داده برای دادههای بزرگ و معماری توزیعشده
- معرفی و کار با پایگاهدادههای Mongo و Neo4J به همراه کاربرد آنها در مسائل واقعی (۱ جلسه)
- معرفی Vector Databases به همراه کاربردهای آنها در دنیای هوش مصنوعی (۱ جلسه)
توجه: از مرحله معرفی ساختارهای دادهای جدولی و پس از آن، هرجا که لازم باشد، از SQL برای ارائه مثال استفاده میشود. دانشجو بایستی از هفته سوم و همروند با پیشرفت درس، SQL را مطالعه کند.
ارزیابی
- تمرینهای عملی هفتگی: ۵۰٪ نمره
- آزمون پایانی: ۵۰٪ نمره
منابع
- سید محمد تقی روحانی رانکوهی، "مفاهیم بنیادی پایگاه دادهها"، ویراست چهارم، ۱۳۹۰.
- R. Elmasri, S. Navathe. Fundamentals of Database Systems. 8th Edition, Pearson, 2019.
- A. Silberschatz, H. F. Korth, S. Sudarshan. Database System Concepts. 6th Edition, McGraw-Hill, 2010.
- C. J. Date. An Introduction to Database Systems 8th Edition, Pearson, 2003.
- T. Connolly, C. Begg. Database Systems. 6th Edition, Pearson, 2014.
- R. Ramakrishnan, J. Gehrke. Database Management Systems. 4th Edition, McGraw-Hill, 2014.