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

دستورات T_sql

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

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

مقدمه

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

 

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

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

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

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

مرتب سازی درختی در mysql

با سلام

خیلی اوقات هست که ما نیاز به ایجاد سیستم پدر فرزندی داریم یعنی یک سری ایتم اصلی یا پدر داریم که هر کدوم یک سری ایتم فرعی یا فرزند دارن برای نمایش این سیستم روشهای مختلفی هست مثلا بعضی برنامه نویسها با استفاده از چند سلکت این کار رو انجام میدن و بعضی ها هم با یک سلکت و یک تابع بازگشتی این کار رو انجام میدن اما یکی از این روشهای بهینه استفاده از تابع COALESCE در خود mysql هست

مثلا ما جدولی با ستونهای زیر داریم

id,parent,name

 

کوئری ما به صورت زیر خواهد بود

توجه:مقدار parent رکوردهای اصلی یا پدر را null در نظر میگیریم در غیر این صورت از تابع nullif برای تغییر مقدار parent به null استفاده میکنیم

مثال:اگر مقدار parent برای ایتم اصلی یا پدر 0 در نظر بگیریم

مشکل فارسی در mysql

با سلام گاهی اوقات به دلیل تنظیم نبودن مناسب کلاسها و دستورات کار با دیتابیس روی set name UTF8 در php متون ذخیره شده در دیتابیس به صورت اجق وجق ذخیره میشن مثلا دیتابیس Movable Type که متون ذخیره شده پارسی به صورت زیر ذخیره میشود

چگونه بیل گیتس در دفترش کار می‌کند؟

خب برای درست کردن این متون در بانک اطلاعاتی باید چند تغییر انجام دهید کد زیر را در یک کوئری اجرا کنید تا متون پارسی ذخیره شده درست شود

به جای tablename نام جدول و بجای colname نام ستون مورد نظر خود را قرار دهید

موفق باشید

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

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

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

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

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

relationship چیست؟

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

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

 

مدل Cardinality چیست؟

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

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

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

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

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

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

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

تبدیل تاریخ میلادی به خورشیدی در mysql

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

کد زیر یک تابع برای تبدیل تاریخ در mysql + فورمت بندی آن میباشد

روش استفاده

در اینجا
my_date :اسم ستونی از نوع Date که میخواهید انرا به تاریخ خورشیدی تبدیل کنید
my_table:نام جدول مورد نظر

base64 در Sql

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

اطلاعات بیشتر