مروری بر مفاهیم بانک اطلاعاتی

گاهی اوقات لازم است که آدم به عقب برگشته و بعضی مفاهیم که قبلاً بلد بوده را دوباره مرور کند. یک سری از این مفاهیم که همیشه مورد نیاز هستند مربوط هستند به مفاهیم دیتابیس. فهرست زیر تعدادی از آنها را شامل می‌شود.

integrity – جامعیت
صحت داده‌ها، مثلاً موجودی حساب بانکی منفی نباشد

Domain Integrity – جامعیت دامنه‌ای
یعنی تمام صفات در تمام رابطه‌ها از نوع دامنه خود باشند. مثلاً تعداد فرزندان یک شخص نباید اعشاری باشد.

Intra-relation Integrity – جامعیت درون رابطه‌ای
یعنی هر رابطه‌ای به تنهایی صحیح باشد. مثلاً همه کلیدهایش درست باشد.

Referential Integrity – جامعیت ارجاع
یعنی کلید خارجی درست تعریف شده باشد. مثلاً کلید خارجی یک رابطه حتماً در رابطه دیگر کلید باشد.

consistency – هم خوانی
اطلاعات مختلف سیستم با هم در تضاد نباشد. مثلاً نام شخص در جاهای مختلف سیستم یکی باشد.

impedance mismatch – ناهمگونی مانع
همان تفاوتی که بین زبان SQL و C#‎ وجود دارد و ORMها مدعی حل آن هستند.

Super Key – ابرکلید
هر ترکیبی از صفت‌ها که خاصیت کلید داشته باشد. این کلید کمینه نیست. یعنی زیر مجموعه‌ای از آن هم می‌تواند کلید باشد. مثل «شماره دانشجویی» و «شمار دانشجویی و نام دانشجو»

Candidate Key – کلید کاندید
هر ترکیبی از صفت‌ها که کلید کمینه باشد. یک رابطه ممکن است چند کلید کاندید داشته باشد.

Primary Key – کلید اصلی
یکی از کلیدهای کاندید است که توسط مدیر بانک اطلاعات انتخاب شده.

Alternative Key, Secondary Key – کلید فرعی
یکی دیگر از کلیدهای کاندید است که برای برخی کاربردها انتخاب می‌شود.

Foreign Key – کلید خارجی
صفتی است در یک رابطه که در رابطه‌ی دیگری کلید اصلی (یا فرعی) است و برای برقراری ارتباط بین دو رابطه استفاده می‌شود.

Projection پرتو
انتخاب تعداد محدودی از ستون‌ها نه همه آنها

Having
اعمال شرط روی دستورات Group By

Normalization – نرمال سازی
از بین بردن افزونگی داده‌ها (Data Redundancy) با استفاده از فرم‌های نرمال‌سازی 1NF، 2NF و 3NF و گاهی اوقت BCNF

ضرب دکارتی
select * from city, country

join و inner join
هر دو یکی هستند. به معنی پیوند دو جدول با لحاظ شرط مربوطه

left join و left outer join
هر دو یکی بوده و مثل inner join عمل می‌کند منتها سمت چپ رابطه را همیشه می‌آورد حتی اگر به ازای آن چیزی وجود نداشته باشد.

right join و right outer join
برعکس right join

full outer join
ترکیب left join و right join

منابع:

اتاق چینی

بعضی وقت‌ها که در بیان منظور یا انتقال احساسم خیلی عاجز هستم ولی به نحوی موفق می‌شوم راهی برای توضیح مفهوم مورد نظرم پیدا کنم خیلی خوشحال می‌شوم. یکی از دفعاتی که اخیراً دچار این خوشحالی شدم مربوط است به وقتی که عبارت «اتاق چینی» را یاد گرفتم.

«اتاق چینی» اصطلاحی است که بعضی منتقدین علیه هوش مصنوعی به کار می‌برند. منظور آنها این است که ممکن است یک کامپیوتر بتواند مانند یک انسان حرف بزند اما واقعیت آن است که او واقعاً درکی از حرف زدن ندارد. البته «اتاق چینی» دقیقاً نام یک آزمایش فرضی است. فرض کنید شخصی که اصلاً چینی بلد نیست داخل اتاقی دربسته نشسته باشد. شخص دیگری که بیرون از اتاق قرار دارد، یک سوال چینی روی کاغذ نوشته و آن را از زیر در به داخل اتاق می‌فرستد. شخص داخل اتاق با استفاده از کتابچه راهنمایی که فقط تصویر کلمات و عبارات چینی در آن قرار دارد، کلمه چینی جواب را پیدا کرده، آن را روی کاغذ کشیده و به بیرون در می‌فرستد. از نگاه آن شخص بیرون اتاق، شخص داخل اتاق چینی می‌فهمد در حالی که ما می‌دانیم او چینی بلد نیست و هیچ درکی از زبان چینی ندارد. ر.ک. اینجا.

من هم خیلی وقت‌ها حس می‌کنم داخل «اتاق چینی» هستم. یعنی چیزی را که دیگران می‌گویند متوجه می‌شوم اما درک نمی‌کنم. مثلاً شروع به پیاده‌سازی بخشی از Business یک برنامه می‌کنم اما خودم نمی‌فهمم منطق واقعی چیست. چون از شخص ثالثی برای انجام آن کمک می‌گیرم. نتیجه آن که اگر آن شخص در کنارم نباشد هیچ وقت نمی‌توانم کدی را که خودم نوشته‌ام را دیباگ کنم یا توسعه دهم.