رفتن به نوشته‌ها

دسته: اس کیو ال

دستورات T_sql

مدل درختی ( والد فرزندی) در دیتابیس های no-sql مثل mongodb

به نام دانای بر حق

مقدمه

فک کنم در حدود سه سال پیش بود در مورد مدل کاردینالیتی در دیتبایس های sql base صحبت کردیم در این مبحث که بازخورد خوبی داشت ، اما به قول صادق دیتابیس های اسکیوالی توسط ریاضی دانان طراحی شده و دیتابیس های nosql توسط برنامه نویسان، به شخصه از موقعی که با no-sql آشنا شدم حالم از دیتابیس های کلاسیک بهم میخوره و ولی به موقع دقیق تر و قشنگ تر در مورد no-sql ها من یا سایر x های 4xmen صحبت میکنیم و اما یکی از بحث هایی که در پایگاه داده ها مطرح هستش ارتباط هستش این ارتباط گاهی به صورت پدر و فرزندی یا مادر فرزندی میباشد به عکس زیر نگاه کنین تا بریم در مورد بحث صحبت کنیم:

 

در این مبحث فرض شده است شما با دیتابیس های کلاسیک و nosql آشنایی لازم و کافی را دارید

مقایسه و توضیحات

این مدل مدلی درختی میباشد در اصطلاح یا tree model در برنامه نویسی شما در تصویر بالا یک head به نام book  میبینید و زیر مجموعه programming را داراست در زیر مجموعه آن Databases , Languages می باشد و …

حال اگر این رو میخواستیم در دیتابیس های sql base طراحی کنیم بایستی جدولی به شکل

relationship در دیتابیس و مدل Cardinality و زیر شاخه ها

در مباحث دیتابیس گاهی اوقات نیاز هستش شما چند جدول یک مقادیر یک سان داشته باشید و یا چند مقدار به هم مرتبط داشته باشید که این موجب این میشه که شما نیاز به ارتباط بین جدول ها داشته باشید و این ارتباط معمولا در لایه های مختلفی قرار میگیره، اما اگر بر اساس قاعده و اصول قصد داشته باشید این ارتباط ها رو برقرار کنید باید از الگو های معرفی شده تبعیت کنید تا مشکل خاصی نخورید و کارتون رو اصول باشه، برای طراحی دیتابیس یاد داشتن این اصول میتونه کمک شایانی به طراح دیتابیس بکنه و سرعت و کیفیت کار رو بالا ببره.

ما در این مقاله فرض کردیم شما:

  • با دیتابیس و دستورات دیتابیس آشنا هستد
  • تا حالا کار با دیتابیس رو انجام داده اید
  • از ماهیت جدول ها در دیتابیس اطلاع دارید

در غیر این صورت این مقاله برای شما ممکن است کمی مشکل ایجاد کند.

relationship چیست؟

وقتی صحبت از relation میشه همه یاد فیس بوک هاشون میوفتن به این فکر می کنن با چند نفر ریلیشن زدن خوب این که خیلی خوبه حداقلش اینه میدونین معنی ریلیشن چی هستش 😛

اما خوب فقط آدما ریلیشن نمیزنن و وابسته شدن خودشون رو با هم اعلام نمی کنند گاهی اوقات نیاز هستش که ریلیشن در داده های کامپیوتری هم برقرار بشه و ارتباط این داده و ممزوج شدنش مشخص بشود تا بهره وری دیتابیس بالا بره از این رو relation که معنی اون به پارسی وابستگی است، در داده های گاهی همگون و یا ناهمگون به هم مرتبط وجود دارد.

 

مدل Cardinality چیست؟

کاردینالیتی یعنی دارای اصل و اساس چرا که اینو دیتا مدل ( data model ) وابسته به اصل و اساس جدول ها هستش در واقع این روش با احترام به اصل داده ها و رکورد ها در دیتابیس ارتباط بین آنها رو مشخص می کنیم که خود دارای دسته های مختلفی می باشد میشود گفت که شیوه آن به این شکل است که جدول های مشخص شده را به یک یا چند جدول دیگر وابسته می سازد تا در کار با دیتابیس سرعت و قدرت بیشتری داشته باشیم و این وابسته کردن منظور این نیست که این کار اتوماتیک انجام میشود خیر این قانون وضع میشود و شما باید مجری آن باشید و اضول آن پیروی کنید و اما انواع متد های کاردینالیتی:

  • یک به چند
  • چند به چند

ساده ترین نوع ارتباط اساسی در واقع یک به چند است که در اصطلاح به آن one-to-many گفته میشود که معمولا از نوع دوم آن کمتر استفاده میشود و شیوه کار آن به این صورت است که شما یک رکورد دارید و نیاز دارید که چند رکورد را به آن وابسته کنید که در ادامه مثال خواهیم زد

حال چند به چند کمی پچیپده تر از یک به چند است و در اصطلاح آن را many-to-many می نامند که معمولا چند رکورد به چند رکورد دیگر وابسته اند، درواقع تفاوت با حالت قبلی این است که هر رکورد چه در سمت مقصد و چه مبدا دارای وابستگی به چند رکورد دیگر باشد که در مثال ادامه کاملا روشن میشود برای شما.

مثال: ما فرض می کنیم ۳ مولفه در زیر داریم که هر کدام دارای رکورد چند رکورد هستند:

  • مالک یا صاحب به عنوان مثال رکورد ها ( صادق، مبین، حمید و …)
  • اتومبیل به عنوان ( بنز، فراری، فورد و …)
  • رنگ اتومبیل ( قرمز، نقره ای، سفید و…)

خب در اینجا ما مثال رو بررسی می کنیم در حالت های مختلف:

base64 در Sql

یکی از راههای محافظت از اطلاعات در دیتابیس کد کردن آنها میباشد.یکی از رایجترین کدینگها انکد base64 میباشد که کاربرد زیادی دارد برای کد کردن و دیکد کردن اطلاعات Sql server و mysql تمهیدات و توابعی را در نظر گرفته اند با استفاده از 2 تابع زیر در sql server میتوانید از انکد و دیکد base64 استفاده کنید.