کاردینالیتی (Cardinality) و یکپارچکی ارجاعی (Referential Integrity) در Tableau
راهاندازی یک منبع داده، صرف نظر از نحوه ترکیب دادهها، مستلزم درک ساختار داده هر جدول و نحوه ترکیب آنها است. چندین عنصر کلیدی وجود دارد که باید در نظر گرفته شوند:
- سطح جزئیات: دادهها چقدر دقیق هستند – جزئیات آن. این را میتوان به عنوان پاسخ به سوال “چه چیزی یک ردیف را تعریف میکند؟” در نظر گرفت.
- فیلد مشترک: باید حداقل یک فیلد وجود داشته باشد که بتوان از آن برای ایجاد پیوند بین جداول استفاده کرد. برای یک پیوند، این فیلدها بند پیوند را تعریف میکنند. در جداول مرتبط، آنها رابطه را برقرار میکنند.
- کاردینالیتی: چه تعداد یا چه تعداد مقدار منحصر به فرد برای فیلد مشترک وجود دارد (منحصر به فرد بودن).
- یکپارچگی ارجاعی: تضمین میشود که یک مقدار در یک جدول، در جدول دیگر مطابقت داشته باشد. به عبارت دیگر، نمیتوان رکوردی در یک جدول وجود داشته باشد که رکورد مربوطه در جدول دیگر نداشته باشد.
کاردینالیتی
Cardinality- کاردینالیتی در یک ستون یا فیلد به میزان منحصر به فرد بودن مقادیر آن اشاره دارد. کاردینالیتی پایین به این معنی است که فقط چند مقدار منحصر به فرد وجود دارد (مانند فیلد مربوط به رنگ چشم). Cardinality بالا به این معنی است که مقادیر منحصر به فرد زیادی وجود دارد (مانند فیلد مربوط به شماره تلفن).
کاردینالیتی بین جداول مشابه است، اما به این اشاره دارد که آیا یک ردیف از یک جدول میتواند با بیش از یک ردیف در جدول دیگر مرتبط باشد یا خیر. (مهم است به یاد داشته باشید که کاردینالیتی به این موضوع نمیپردازد که آیا دادههای از دست رفته در هر دو جدول وجود دارد یا خیر. وجود یا عدم وجود دادههای از دست رفته، یکپارچگی ارجاعی است. اگرچه این مفاهیم با هم کار میکنند، اما دو ویژگی متفاوت از رابطه هستند.)
گزینهها یک به یک، یک به چند، چند به یک یا چند به چند هستند.
یک به یک
تعریف: هر مقدار از فیلد مشترک در یک جدول حداکثر به یک مقدار در فیلد مشترک در جدول دیگر مرتبط است.
اختصار: ۱:۱
مثال: هر ماشین پلاک مخصوص به خود را دارد و یک پلاک مخصوص یک ماشین است. نسبت ماشین به پلاک یک به یک است.
توجه داشته باشید که حتی اگر یک ماشین ثبت نشده باشد یا هنوز شماره پلاک به یک ماشین اختصاص داده نشده باشد، این اختلاف با یکپارچگی ارجاعی توصیف میشود. یک ماشین فقط میتواند یک پلاک داشته باشد و یک پلاک فقط میتواند به یک ماشین اختصاص داده شود، بنابراین کاردینالیتی یک به یک باقی میماند.
یک به چند یا چند به یک
تعریف: هر مقدار از فیلد مشترک در یک جدول میتواند به چندین ردیف در جدول دیگر مرتبط باشد (آن مقدار در جدول دیگر تکرار میشود).
اختصار: m:1 یا 1:m
ترتیب جداول تعیین میکند که آیا چند به یک است یا یک به چند (شبیه به پیوند چپ و راست).
مثالها: بسیاری از کارمندان مدیر یکسانی دارند. کارمندان به مدیر، چند به یک است. مدیر به کارمند، یک به چند است.
چند به چند
مقادیر چندگانه فیلد مشترک در یک جدول میتوانند به چندین ردیف در جدول دیگر مرتبط باشند (مقادیر فیلد مشترک میتوانند در چندین ردیف در هر دو جدول تکرار شوند).
به اختصار m:m.
این تنظیم پیشفرض است اگر هیچ تنظیم دیگری در منبع داده شناسایی نشده باشد.
مثالها: یک بازیگر در فیلمهای زیادی حضور دارد و یک فیلم بازیگران زیادی دارد. بازیگر به فیلم چند به چند است. چندین کتاب را میتوان در یک تراکنش خریداری کرد و یک کتاب را میتوان چندین بار خریداری کرد. ISBN-to-OrderID چند به چند است.
کاردینالیتی را میتوان در تنظیمات گزینههای عملکرد مشخص کرد.
یکپارچگی ارجاعی
یک مفهوم مرتبط به نام Referential Integrity -یکپارچگی ارجاعی وجود دارد، به این معنی که یک ردیف در یک جدول همیشه یک ردیف منطبق در جدول دیگر خواهد داشت، که توسط مقدار فیلدهای مشترک آنها تعیین میشود. اگر پایگاه داده هیچ رکوردی برای خودروهای بدون پلاک یا پلاکهای بدون خودرو نداشته باشد، آن رابطه دارای یکپارچگی ارجاعی است.
در Tableau، یکپارچگی ارجاعی در هر طرف رابطه پیکربندی شده است. در تنظیمات Performance Options، عبارت Some records match به این معنی است که یکپارچگی ارجاعی وجود ندارد (یا نمیدانید که وجود دارد یا خیر). عبارت All records match به این معنی است که یکپارچگی ارجاعی وجود دارد. تنظیم پیشفرض این است که یکپارچگی ارجاعی را فرض نکنیم (برخی از رکوردها مطابقت دارند).
خودتان را بیازمایید
آیا میتوانید کاردینالیتی و یکپارچگی ارجاعی هر نمودار را تعریف کنید؟ این در کلمات به چه معناست؟
مثال:
اگر جدول سمت چپ را به عنوان کتاب و جدول سمت راست را به عنوان نویسندگان مرتبط با AuthorID تنظیم کنیم، نمودار را به صورت زیر ترجمه میکنیم:
- یک کتاب میتواند چندین نویسنده داشته باشد (رکوردهای بنفش یک ردیف در جدول کتاب در سمت چپ را نشان میدهند که مربوط به چندین رکورد در جدول نویسنده در سمت راست است).
- هیچ نویسندهای بیش از یک کتاب ندارد (هر رکورد نویسنده در سمت راست فقط به یک رکورد کتاب در سمت چپ منتهی میشود).
- هیچ کتابی بدون نویسنده وجود ندارد (هیچ رکوردی در سمت چپ با رکوردی در سمت راست مطابقت ندارد).
- بعضی از نویسندگان ممکن است کتاب نداشته باشند (رکورد نویسنده خاکستری در سمت راست هیچ رکورد کتاب مربوطه در سمت چپ ندارد.)
دانش خود را بررسی کنید
راه حل
چرا مهم است؟
پیکربندی صحیح تنظیمات کاردینالیتی یا یکپارچگی ارجاعی میتواند از طریق بهینهسازی پرسوجو، عملکرد را افزایش دهد. با این حال، پیکربندیهای نادرست میتوانند به دلیل از دست دادن یا تکثیر دادهها، منجر به مشکلاتی در تجمیع شوند. تنظیمات پیشفرض Performance Option برای کاردینالیتی Many و برای یکپارچگی ارجاعی Some records match هستند. این موارد فقط در صورتی باید تنظیم شوند که از ویژگیهای صحیح دادههای خود مطمئن باشید.
یک مثال در Tableau
بیایید بررسی کنیم که وقتی کاردینالیتی به طور نادرست پیکربندی شود چه اتفاقی میافتد.
جداول کتاب و اطلاعات رابطه یک به یک دارند – اطلاعات اساساً ستونهای اضافی برای جدول کتاب هستند. به همین دلیل، اگرچه میتوانند به هم مرتبط باشند، اما منطقی است که آنها را به هم متصل کنیم تا یک جدول منطقی جدید ایجاد کنیم که همه ستونها را داشته باشد. نسخه با این جدول ترکیبی رابطه چند به یک دارد زیرا میتواند چندین نسخه برای یک کتاب واحد، معمولاً با فرمتهای مختلف، وجود داشته باشد. (توجه داشته باشید که نمودار زیر رابطه را از جدول کتاب+اطلاعات به نسخه نشان میدهد، بنابراین یک به چند است.)
نسخه با کاتالوگ به عنوان یک رابطه یک به چند در ISBN مرتبط است. جداول کاتالوگ و مشخصات کتابخانه با شناسه کتابخانه به صورت چند به چند مرتبط هستند. نکته کلیدی این است که جدول مشخصات کتابخانه چندین ردیف در هر کتابخانه دارد، یکی برای هر نوع کارمند (کتابدار، دستیار کتابخانه، تکنسین کتابخانه).
تنظیمات صحیح
وقتی رابطه Catalog-LibraryProfile به درستی تنظیم شده باشد، میتوانیم یک Viz ساده ایجاد کنیم که تعداد کارکنان هر کتابخانه را برای چندین کتاب نشان میدهد. ساخت این Viz احمقانه است، اما برای روشن کردن نکته مفید است. کتابخانه Idle Hour صرف نظر از اینکه در مورد کدام کتاب صحبت میکنیم، ۱۳۰ کارمند دارد. سه مقدار برای نوع کارکنان وجود دارد، بنابراین هر مجموع از سه رکورد تشکیل شده است – شماره داخل پرانتز.
تعداد کارکنان بر اساس کتابخانه و عنوان. (اعداد داخل پرانتز تعداد رکوردها در هر علامت را نشان میدهند.)
تنظیمات اشتباه: یک به یک
وقتی رابطه به اشتباه یک به یک تنظیم میشود، در viz هر عنوان از Catalog عملاً فقط با یک رکورد از جدول LibraryProfile جفت میشود (همانطور که با تعداد رکورد داخل پرانتز نشان داده شده است).
تعداد کارکنان بر اساس کتابخانه و عنوان. (اعداد داخل پرانتز تعداد رکوردها در هر علامت را نشان میدهند.)
در بالا، میتوانیم ببینیم که هر کتابخانه فقط حداقل تعداد کارکنان خود را نمایش میدهد. (به اعداد پررنگ شده در شکل زیر مراجعه کنید. کمترین تعداد کارکنان، عددی است که در شکل زیر تعداد کارکنان منعکس شده است.)
تفکیک کارکنان بر اساس نوع و کتابخانه.
برای اطلاعات بیشتر در مورد چگونگی تبدیل روابط به پیوندهای زمینهای برای یک viz، به معرفی مدلسازی دادههای جدید در Tableau (لینک در پنجره جدید باز میشود) در وبلاگ Tableau مراجعه کنید.
تنظیم اشتباه: اتصال
در حالی که راههایی برای حل این نوع مشکل وجود دارد – عبارات سطح جزئیات یک مورد رایج هستند – اتصال جداولی که دانهبندی متفاوت یا “تعداد زیادی” در کاردینالیتی خود دارند میتواند باعث تکرار شود. در اینجا، تعداد کارکنان برای عناوینی که فقط یک قالب دارند دقیق است، اما برای کتابهایی که دو قالب در جدول نسخهها دارند، این دو برابر شدن به تعداد کارکنان نیز منتقل میشود (به تعداد رکوردها در پرانتز توجه کنید که به جای ۳ صحیح، ۶ هستند).
تعداد کارکنان بر اساس کتابخانه و عنوان. (اعداد داخل پرانتز تعداد رکوردها در هر علامت را نشان میدهند.)
تنظیم اشتباه: فرض نادرست یکپارچگی ارجاعی
گفتن اینکه Tableau یکپارچگی ارجاعی دارد (همه رکوردها مطابقت دارند) در حالی که اینطور نیست، میتواند باعث از دست رفتن مقادیر شود. در اینجا، این دو ویز مشابه هستند اما ویز سمت راست از یک منبع داده پیکربندی شده برای فرض یکپارچگی ارجاعی است. آن ویز تهیها را از دست داده است.
اگرچه این میتواند در برخی شرایط خوب باشد، اما درک این تهیها مهم است. در اینجا، که ویز تعداد نسخهها در هر کتابخانه را نشان میدهد، تهیها نشان دهنده دو نسخه هستند که در جدول نسخه وجود دارند اما توسط هیچ کتابخانهای نگهداری نمیشوند. این میتواند یک اشتباه مهم باشد و اشتباهی است که فرض نادرست یکپارچگی ارجاعی آن را نادیده میگیرد.
تأثیرات عملکرد
اگر پیکربندی نادرست این تنظیمات میتواند باعث از دست رفتن یا تکرار دادهها شود، چرا Tableau اصلاً اجازه تغییر آنها را میدهد؟ در بسیاری از موارد، میتوانید و باید تنظیمات پیشفرض را رها کنید: به جای اتصال، جداول را به هم مرتبط کنید، کاردینالیتی را به صورت چند به چند بگذارید و یکپارچگی ارجاعی را فرض نکنید. به خصوص اگر مطمئن نیستید که تنظیمات باید چه باشند.
با این حال، کاردینالیتی و یکپارچگی ارجاعی گزینههای عملکردی هستند زیرا میتوانند پیامدهای عملکردی برای پیشفرضها داشته باشند. اگر از ساختار دادههای خود مطمئن هستید، پیکربندی تنظیمات صحیح میتواند اجرای پرسوجو را برای بهبود سرعت کاهش دهد.
Under the hood
توجه: این بخش از قیاس با سایر تکنیکهای ترکیب دادهها برای ارائه یک چارچوب مفهومی استفاده میکند. این یک توصیف فنی از نحوه استفاده Tableau از تنظیمات عملکرد برای روابط نیست.
کاردینالیتی
کاردینالیتی رابطه بر زمان وقوع تجمیع تأثیر میگذارد. این را میتوان از نظر ترکیب در نظر گرفت. ترکیب دادهها، دو منبع داده را به طور مستقل پرس و جو میکند. هر منبع داده در صورت لزوم تا سطح جزئیات مورد نظر برای نمایش، صرف نظر از منبع داده دیگر، تجمیع میشود. برای روابط، تنظیم کاردینالیتی بر اینکه تجمیع قبل یا بعد از اتصال اتفاق بیفتد، تأثیر میگذارد.
در مثال بالا، تنظیم Many به این معنی است که تعداد کارکنان هر کتابخانه قبل از ترکیب آن دادهها با اطلاعات کتاب تجمیع میشود، بنابراین اطمینان حاصل میشود که هر کتاب اعداد صحیحی دارد. هنگامی که کاردینالیتی به اشتباه روی یک تنظیم شده باشد، تعداد کارکنان قبل از ترکیب با دادههای کتاب تجمیع نشده است و منجر به مقادیر نادرست میشود.
توجه داشته باشید که نه تنها مقادیر نادرست نشان داده شدهاند، بلکه تمام مقادیر به نوع کارکنان Librarians اختصاص داده شدهاند، با وجود اینکه از هر سه نوع کارمند گرفته شدهاند. پیکربندی نادرست این تنظیم میتواند باعث ایجاد مقادیر غیرقابل پیشبینی و نادرست شود. این فیلتر کردن نتایج فقط زمانی اتفاق میافتد که فیلدی از جدول دیگری در طرف دیگر رابطهای که به اشتباه تنظیم شده است، در نما استفاده شود.
با این حال، اگر مقادیر منحصر به فرد باشند، Tableau در صورت بهینهسازی پرسوجو، میتواند تجمیع پیش از اتصال را حذف کند.
یکپارچگی ارجاعی
اگرچه یکپارچگی ارجاعی به تنظیماتی برای روابط اشاره دارد، اما میتوان آن را از نظر انواع اتصال در نظر گرفت. یک اتصال بیرونی کامل، تمام رکوردها را صرف نظر از اینکه آیا تطابقی در جدول دیگر وجود دارد یا خیر، حفظ میکند، اما با هزینه عملکرد. اگر مطمئن نیستید که رکوردها از بین میروند یا خیر، اتصال بیرونی ایمنتر است. اینگونه با جداول رفتار میشود که ممکن است تطابق ارجاعی وجود نداشته باشد (بعضی از رکوردها مطابقت دارند).
یک اتصال درونی فقط رکوردهایی را که از هر دو جدول تطابق دارند، حفظ میکند و رکوردهایی را که در هر جدول ظاهر نمیشوند، حذف میکند. اگر میدانید که یک اتصال درونی دادههای لازم را حذف نمیکند، کارآمدتر است. اگر گزینههای عملکرد روی همه رکوردها مطابقت داشته باشند، یکپارچگی ارجاعی فرض میشود و اتصالها بدون در نظر گرفتن مقادیر نامتناسب انجام میشوند.
یک تنظیم نادرست یکپارچگی ارجاعی میتواند تأثیری شبیه فیلتر بر دادههای ترکیبی داشته باشد و مقادیر نامتناسب را حذف کند.
تنظیمات پیشفرض را حفظ کنید
اگر تحلیل شما عملکرد قابل قبولی دارد، اکیداً توصیه میکنیم تنظیمات پیشفرض Performance Option یعنی many-to-many را رها کنید و یکپارچگی ارجاعی را در نظر نگیرید. قدرت روابط از توانایی آنها در ارائه نتایج دقیق و متناسب با متن بر اساس جداولی که در تحلیل استفاده میشوند، ناشی میشود. تغییر این تنظیمات، انعطافپذیری معنایی روابط را از بین میبرد.
برای خرید لایسنس نرم افزار Tableau ، میتوانید از خدمات ما استفاده نموده و درخواست خود را از طریق فرم زیر ثبت نمایید.














بدون دیدگاه