آشنایی با پایگاه های داده رابطه ای
# معرفی
سیستم های مدیریت پایگاه داده (DBMS) برنامه های کامپیوتری هستند که به کاربران اجازه می دهند با پایگاه داده تعامل داشته باشند. یک DBMS به کاربران این امکان را می دهد که دسترسی به پایگاه داده را کنترل کنند، داده ها را بنویسند، پرس و جوها را اجرا کنند و سایر وظایف مربوط به مدیریت پایگاه داده را انجام دهند.
با این حال، برای انجام هر یک از این وظایف، DBMS باید نوعی مدل اساسی داشته باشد که نحوه سازماندهی داده ها را تعریف کند. مدل رابطهای یکی از روشهای سازماندهی دادهها است که از زمانی که برای اولین بار در اواخر دهه 1960 ابداع شد، در نرمافزار پایگاهداده کاربرد گستردهای پیدا کرد.
این مقاله مفهومی تاریخچه مدل رابطهای، نحوه سازماندهی دادهها توسط پایگاههای داده رابطهای و نحوه استفاده از آنها در دنیای امروز را تشریح میکند.
دوره مرتبط: دوره آموزش زبان SQL
# تاریخچه مدل رابطهای
پایگاههای داده خوشه های منطقی اطلاعات یا داده ها هستند. هر مجموعه ای از داده ها یک پایگاه داده است، صرف نظر از اینکه چگونه یا کجا ذخیره می شوند. حتی یک کابینت پرونده حاوی اطلاعات حقوق و دستمزد یک پایگاه داده است، مانند پشته ای از فرم های بیماران بیمارستان، یا مجموعه ای از اطلاعات مشتری یک شرکت که در چندین مکان پخش شده است. قبل از اینکه ذخیرهسازی و مدیریت دادهها با رایانه رایج باشد، پایگاههای اطلاعاتی فیزیکی تنها پایگاههای اطلاعاتی در دسترس دولت و سازمانهای تجاری بودند که نیاز به ذخیره اطلاعات داشتند.
در اواسط قرن بیستم، پیشرفتها در علم کامپیوتر منجر به تولید ماشینهایی با قدرت پردازش بیشتر و همچنین ظرفیت ذخیرهسازی محلی و خارجی بیشتر شد. این پیشرفتها باعث شد که دانشمندان کامپیوتر پتانسیل این ماشینها را برای ذخیرهسازی و مدیریت مقادیر بیشتری از دادهها شناسایی کنند.
با این حال، هیچ نظریه ای برای اینکه چگونه کامپیوترها بتوانند داده ها را به روش های معنی دار و منطقی سازماندهی کنند وجود نداشت. ذخیرهسازی دادههای مرتبنشده روی یک ماشین یک چیز است، اما طراحی سیستمهایی که به شما امکان میدهند آن دادهها را به روشهای منسجم و عملی اضافه، بازیابی، مرتبسازی و مدیریت کنید، بسیار پیچیدهتر است. نیاز به یک چارچوب منطقی برای ذخیره سازی و سازماندهی داده ها منجر به ارائه تعدادی پیشنهاد برای نحوه مهار رایانه ها برای مدیریت داده ها شد.
یکی از مدلهای پایگاه داده اولیه، مدل سلسله مراتبی بود که در آن دادهها در ساختاری درختمانند، شبیه به سیستمهای فایل امروزی سازماندهی میشوند. مثال زیر نشان می دهد که طرح بخشی از یک پایگاه داده سلسله مراتبی که برای دسته بندی حیوانات استفاده می شود چگونه ممکن است به نظر برسد:
مدل سلسله مراتبی به طور گسترده در سیستم های مدیریت پایگاه داده اولیه پیاده سازی شد، اما ثابت شد که تا حدودی انعطاف ناپذیر است. در این مدل، حتی اگر رکوردهای فردی می توانند چندین "فرزند" داشته باشند، هر رکورد فقط می تواند یک "والد" در سلسله مراتب داشته باشد. به همین دلیل، این پایگاههای داده سلسله مراتبی قبلی تنها به نمایش روابط «یک به یک» و «یک به چند» محدود میشدند. این فقدان روابط «چند به چند» میتواند منجر به مشکلاتی در هنگام کار با نقاط دادهای شود که میخواهید با بیش از یک والدین مرتبط کنید.
در اواخر دهه 1960، ادگار اف. کاد، دانشمند کامپیوتری که در IBM کار می کرد، مدل رابطه ای مدیریت پایگاه داده را ابداع کرد. مدل رابطهای Codd به رکوردهای فردی اجازه میدهد تا با بیش از یک جدول مرتبط شوند، در نتیجه روابط «چند به چند» را بین نقاط داده علاوه بر روابط «یک به چند» ممکن میسازد. این امر نسبت به سایر مدلهای موجود در طراحی ساختارهای پایگاهداده انعطافپذیری بیشتری را ارائه میدهد و به این معنی است که سیستمهای مدیریت پایگاه داده رابطهای (RDBMS) میتوانند طیف وسیعتری از نیازهای تجاری را برآورده کنند.
Codd زبانی را برای مدیریت داده های رابطه ای به نام آلفا پیشنهاد کرد که بر توسعه زبان های پایگاه داده بعدی تأثیر گذاشت. دو تن از همکاران کاد در آیبیام، دونالد چمبرلین و ریموند بویس، یکی از این زبانها را با الهام از آلفا ایجاد کردند. آنها زبان خود را SEQUEL نامیدند که مخفف عبارت Structured English Query Language است، اما به دلیل یک علامت تجاری موجود، نام زبان خود را به SQL کوتاه کردند (که به طور رسمی تر به عنوان زبان پرس و جو ساختاریافته نامیده می شود).
به دلیل محدودیتهای سختافزاری، پایگاههای اطلاعاتی رابطهای اولیه هنوز به شدت کند بودند و مدتی طول کشید تا این فناوری فراگیر شود. اما در اواسط دهه 1980، مدل رابطه ای Codd در تعدادی از محصولات مدیریت پایگاه داده تجاری هم از IBM و هم از رقبای آن پیاده سازی شد. این فروشندگان همچنین با توسعه و پیاده سازی گویش های SQL خود، از IBM پیروی کردند. تا سال 1987، مؤسسه استاندارد ملی آمریکا و سازمان بینالمللی استاندارد استانداردهایی را برای SQL تأیید و منتشر کردند و وضعیت آن را به عنوان زبان پذیرفتهشده برای مدیریت RDBMS تثبیت کردند.
استفاده گسترده از مدل رابطه ای در صنایع متعدد منجر به این شد که به عنوان مدل استاندارد برای مدیریت داده شناخته شود. حتی با ظهور پایگاههای مختلف NoSQL در سالهای اخیر، پایگاههای داده رابطهای همچنان ابزار غالب برای ذخیره و سازماندهی دادهها هستند.
مقاله پیشنهادی: آموزش کار با mysql در پایتون
# دیتابیسهای رابطهای چطور اطلاعات را سازماندهی میکنند؟
اکنون که درک کلی از تاریخچه مدل رابطه ای دارید، بیایید نگاهی دقیق تر به نحوه سازماندهی داده ها از مدل بیندازیم.
اساسی ترین عناصر در مدل رابطه ای، روابطی هستند که کاربران و RDBMS های مدرن آنها را به عنوان جداول تشخیص می دهند. یک رابطه مجموعه ای از تاپل ها یا ردیف ها در یک جدول است که هر تاپل مجموعه ای از ویژگی ها یا ستون ها را به اشتراک می گذارد:
یک ستون(column) کوچکترین ساختار سازمانی یک پایگاه داده رابطه ای است و جنبه های مختلفی را نشان می دهد که رکوردها را در جدول تعریف می کنند. از این رو نام رسمی تر آنها، ویژگی(attributes) است. شما می توانید هر تاپل را به عنوان یک نمونه منحصر به فرد از هر نوع افراد، اشیاء، رویدادها یا تداعی های جدول در نظر بگیرید. این موارد ممکن است مواردی مانند کارمندان یک شرکت، فروش از یک تجارت آنلاین یا نتایج آزمایش آزمایشگاهی باشد. به عنوان مثال، در جدولی که سوابق کارمندان معلمان یک مدرسه را نگه میدارد، تاپلها ممکن است دارای ویژگیهایی مانند نام، موضوعات، تاریخ شروع و غیره باشند.
هنگام ایجاد ستون ها، نوع داده ای را مشخص می کنید که نوع ورودی های مجاز در آن ستون را دیکته می کند. RDBMS ها اغلب انواع داده های منحصر به فرد خود را پیاده سازی می کنند، که ممکن است به طور مستقیم با انواع داده های مشابه در سیستم های دیگر قابل تعویض نباشند. برخی از انواع داده های رایج عبارتند از تاریخ، رشته، اعداد صحیح و بولی.
در مدل رابطه ای، هر جدول شامل حداقل یک ستون است که می تواند برای شناسایی منحصر به فرد هر سطر به نام کلید اصلی(primary key) استفاده شود. این مهم است، زیرا به این معنی است که کاربران نیازی به دانستن مکان ذخیره فیزیکی داده های آنها در یک ماشین ندارند. در عوض، DBMS آنها می تواند هر رکورد را ردیابی کند و آنها را به صورت موقت بازگرداند. به نوبه خود، این بدان معنی است که رکوردها هیچ ترتیب منطقی تعریف شده ای ندارند و کاربران می توانند داده های خود را به هر ترتیب یا از طریق هر فیلتری که می خواهند برگردانند.
اگر دو جدول دارید که میخواهید آنها را با یکدیگر مرتبط کنید، یکی از راههای انجام این کار با یک کلید خارجی(foreign key) است. یک کلید خارجی اساساً کپی کلید اصلی یک جدول (جدول "والد") است که در یک ستون در جدول دیگر ("فرزند") درج شده است. مثال زیر رابطه بین دو جدول را نشان می دهد، یکی برای ثبت اطلاعات در مورد کارکنان یک شرکت و دیگری برای ردیابی فروش شرکت استفاده می شود. در این مثال، کلید اصلی جدول EMPLOYEES به عنوان کلید خارجی جدول SALES استفاده می شود:
اگر بخواهید رکوردی را به جدول فرزند اضافه کنید و مقدار وارد شده در ستون کلید خارجی در کلید اصلی جدول والد وجود نداشته باشد، دستور درج نامعتبر خواهد بود. این به حفظ یکپارچگی در سطح رابطه کمک می کند، زیرا ردیف های هر دو جدول همیشه به درستی مرتبط هستند.
عناصر ساختاری مدل رابطهای به نگهداری دادهها به روشی سازمانیافته کمک میکنند، اما ذخیره دادهها تنها در صورتی مفید است که بتوانید آنها را بازیابی کنید. برای بازیابی اطلاعات از یک RDBMS، می توانید یک پرس و جو یا یک درخواست ساختاریافته برای مجموعه ای از اطلاعات صادر کنید. همانطور که قبلا ذکر شد، اکثر پایگاه های داده رابطه ای از SQL برای مدیریت و جستجوی داده ها استفاده می کنند. SQL به شما این امکان را می دهد که نتایج پرس و جو را با انواع عبارت ها، گزاره ها و عبارات فیلتر و دستکاری کنید و به شما کنترل دقیقی بر روی داده هایی که در مجموعه نتایج ظاهر می شوند را می دهد.
مقاله پیشنهادی: تفاوت نرمافزار رایگان و منبع باز
# مزایا و محدودیتهای دیتابیسهای رابطهای
با در نظر گرفتن ساختار سازمانی اساسی پایگاه های داده رابطه ای، اجازه دهید برخی از مزایا و معایب آنها را در نظر بگیریم.
امروزه، هم SQL و هم پایگاههای دادهای که آن را پیادهسازی میکنند، از مدل رابطهای Codd به طرق مختلف منحرف شدهاند. به عنوان مثال، مدل Codd دیکته می کند که هر ردیف در یک جدول باید منحصر به فرد باشد، در حالی که، به دلایل عملی، اکثر پایگاه های داده رابطه ای مدرن اجازه ردیف های تکراری را می دهند. برخی هستند که پایگاه داده های SQL را پایگاه داده های رابطه ای واقعی در نظر نمی گیرند، اگر به هر یک از مشخصات Codd برای مدل رابطه ای پایبند نباشند. با این حال، در شرایط عملی، هر DBMS که از SQL استفاده می کند و حداقل تا حدودی به مدل رابطه ای پایبند است، احتمالاً به عنوان یک سیستم مدیریت پایگاه داده رابطه ای نامیده می شود.
اگرچه پایگاههای اطلاعاتی رابطهای به سرعت محبوبیت یافتند، اما برخی از کاستیهای مدل رابطهای با ارزشمندتر شدن دادهها و کسبوکارها شروع به ذخیرهسازی بیشتر آنها کردند. برای یک چیز، مقیاس افقی یک پایگاه داده رابطه ای می تواند دشوار باشد. مقیاس افقی یا کوچکسازی، تمرین اضافه کردن ماشینهای بیشتر به یک پشته موجود به منظور پخش بار و امکان ترافیک بیشتر و پردازش سریعتر است. این اغلب با مقیاس عمودی که شامل ارتقاء سخت افزار یک سرور موجود است، معمولاً با افزودن RAM یا CPU بیشتر در تضاد است.
دلیل اینکه مقیاس افقی یک پایگاه داده رابطهای دشوار است به این واقعیت مربوط میشود که مدل رابطهای برای اطمینان از سازگاری طراحی شده است، به این معنی که مشتریانی که از پایگاه داده یکسان درخواست میکنند همیشه همان دادهها را بازیابی میکنند. اگر بخواهید یک پایگاه داده رابطه ای را به صورت افقی در چندین ماشین مقیاس بندی کنید، اطمینان از سازگاری دشوار می شود زیرا مشتریان ممکن است داده ها را در یک گره بنویسند اما گره های دیگر را ننویسند. احتمالاً بین نوشتن اولیه و زمانی که گرههای دیگر بهروزرسانی میشوند تا تغییرات را منعکس کنند، تأخیر وجود داشته باشد که منجر به ناهماهنگی بین آنها میشود.
محدودیت دیگری که توسط RDBMS ها ارائه می شود این است که مدل رابطه ای برای مدیریت داده های ساخت یافته یا داده هایی طراحی شده است که با یک نوع داده از پیش تعریف شده همسو می شوند یا حداقل به روشی از پیش تعیین شده سازماندهی می شوند و به راحتی قابل مرتب سازی و جستجو هستند. با گسترش محاسبات شخصی و ظهور اینترنت در اوایل دهه 1990، دادههای بدون ساختار - مانند پیامهای ایمیل، عکسها، ویدئوها و غیره - رایجتر شدند.
هیچ کدام از اینها به این معنی نیست که پایگاه داده های رابطه ای مفید نیستند. برعکس، مدل رابطهای همچنان چارچوب غالب برای مدیریت دادهها پس از بیش از 40 سال است. شیوع و طول عمر آنها به این معنی است که پایگاه داده های رابطه ای یک فناوری بالغ هستند که خود یکی از مزایای اصلی آنها است. برنامه های کاربردی زیادی برای کار با مدل رابطه ای طراحی شده اند، همچنین بسیاری از مدیران پایگاه داده شغلی که در مورد پایگاه داده های رابطه ای متخصص هستند، طراحی شده اند. همچنین مجموعه گسترده ای از منابع به صورت چاپی و آنلاین برای کسانی که به دنبال شروع کار با پایگاه داده های رابطه ای هستند، وجود دارد.
مزیت دیگر پایگاه های داده رابطه ای این است که تقریباً هر RDBMS از تراکنش ها(transactions) پشتیبانی می کند. یک تراکنش شامل یک یا چند عبارت SQL منفرد است که به صورت متوالی به عنوان یک واحد کار انجام می شود. تراکنش ها یک رویکرد همه یا هیچ هستند، به این معنی که هر عبارت SQL در تراکنش باید معتبر باشد. در غیر این صورت، کل معامله شکست خواهد خورد. این برای اطمینان از یکپارچگی داده ها هنگام ایجاد تغییرات در چندین ردیف یا جدول بسیار مفید است.
در نهایت، پایگاه داده های رابطه ای بسیار انعطاف پذیر هستند. آنها برای ساخت طیف گسترده ای از برنامه های کاربردی مختلف مورد استفاده قرار گرفته اند و حتی با حجم بسیار زیادی از داده ها به کارایی خود ادامه می دهند. SQL همچنین بسیار قدرتمند است و به شما این امکان را میدهد که دادهها را به سرعت اضافه و تغییر دهید، و همچنین ساختار طرحوارهها و جداول پایگاه داده را بدون تأثیرگذاری بر دادههای موجود تغییر دهید.
مقاله پیشنهادی: معرفی کتابخانههای sql پایتون
# نتیجه گیری
به لطف انعطاف پذیری و طراحی آنها برای یکپارچگی داده ها، پایگاه های داده رابطه ای هنوز هم روش اصلی مدیریت و ذخیره داده ها بیش از پنجاه سال پس از اولین تصور است. حتی با ظهور پایگاههای مختلف NoSQL در سالهای اخیر، درک مدل رابطهای و نحوه کار با RDBMSها برای هر کسی که میخواهد برنامههایی بسازد که از قدرت داده استفاده میکنند، کلیدی است.