مقدمه
نسخهٔ MySQL 5.7.8 نوع دادهٔ JSON را معرفی کرد که به شما اجازه میدهد به دادههای موجود در اسناد JSON دسترسی داشته باشید.
پایگاهدادههای SQL معمولاً ساختاری سختگیرانه دارند. ذات Structured Query Language (SQL) این است که نوع داده و اندازهٔ آن را محدود میکند.
در مقابل، پایگاهدادههای NoSQL انعطافپذیری بیشتری در طراحی دارند. در این دیتابیسهای بدون schema، محدودیت ساختاری تحمیل نمیشود و فقط داده ذخیره میشود.
نوع دادهٔ JSON در MySQL ترکیبی از مزیتهای هر دو سیستم را در اختیار شما میگذارد:
بخشی از دیتابیس را میتوانید ساختارمند نگه دارید و بخشهایی را انعطافپذیر.
در نیمهٔ اول این مقاله:
-
طراحی دیتابیس با فیلد JSON
-
استفاده از توابع داخلی MySQL برای
-
Create
-
Read
-
Update
-
Delete
-
در نیمهٔ دوم:
-
استفاده از Eloquent ORM در Laravel
-
ساخت پنل ادمین برای:
-
نمایش محصولات
-
افزودن محصول
-
ویرایش محصول
-
حذف محصول
-
پیشنیازها
برای دنبال کردن این آموزش نیاز دارید به:
-
MySQL نسخه 5.7.8 یا بالاتر
-
PHP نسخه 7.3.24 یا بالاتر
-
آشنایی نسبی با SQL
-
آشنایی با PHP
-
آشنایی با Laravel
نصب Laravel در این آموزش با Composer در نظر گرفته شده.
نکته:
Laravel ابزاری به نام Sail دارد که با Docker محیط شامل:
-
MySQL
-
PHP
-
Composer
را آماده میکند.
مرحله ۱ — تعریف Schema دیتابیس
در این آموزش، دیتابیس مربوط به فروشگاه آنلاین محصولات الکترونیکی ساخته میشود.
بهطور سنتی از مدل Entity–Attribute–Value (EAV) برای مقایسهٔ ویژگیهای محصولات استفاده میشود.
اما با JSON میتوان این کار را سادهتر انجام داد.
نام دیتابیس:
سه جدول دارد:
-
brands
-
categories
-
products
در جدول products فیلدی به نام:
تعریف شده که نوع JSON دارد.
این یعنی میتوانید تمام قابلیتهای JSON در MySQL را روی آن استفاده کنید.
مرحله ۲ — ایجاد داده در فیلد JSON
برای اضافه کردن محصول میتوانید:
روش اول — قرار دادن JSON به صورت رشته
مثال:
-
اندازه صفحه
-
رزولوشن
-
پورتها
-
اسپیکر
همه داخل JSON ذخیره میشوند.
روش دوم — استفاده از تابع JSON_OBJECT
ساخت JSON به صورت:
همچنین میتوانید از:
برای آرایهها استفاده کنید.
نکته دربارهٔ نرمالسازی JSON در MySQL
اگر یک کلید چندبار تکرار شود:
-
فقط اولین مقدار نگه داشته میشود
همچنین:
-
کلیدها مرتب میشوند
-
فاصلههای اضافی حذف میشود
ساخت JSON با JSON_MERGE_PRESERVE
این تابع چند JSON را یکی میکند.
اگر کلیدی چندبار تکرار شود:
-
مقدارها به صورت آرایه ذخیره میشوند.
مثال خروجی:
بررسی نوع دادهٔ JSON
میتوانید از:
استفاده کنید.
مرحله ۳ — خواندن داده از JSON
برای فیلد JSON نمیتوان همیشه مثل معمول WHERE استفاده کرد.
باید از Path Expression استفاده کنید.
ساختار:
با تابع:
مثال:
تلویزیونهایی که HDMI و USB دارند.
شکل سادهتر با alias
میتوانید به جای JSON_EXTRACT بنویسید:
مرحله ۴ — آپدیت داده در JSON
سه تابع مهم:
JSON_INSERT
فقط اگر کلید وجود نداشته باشد اضافه میکند.
JSON_REPLACE
فقط اگر کلید وجود داشته باشد جایگزین میکند.
JSON_SET
اگر نبود اضافه میکند
اگر بود جایگزین میکند.
مرحله ۵ — حذف داده از JSON
برای حذف یک کلید:
برای حذف رکورد کامل:
از DELETE همراه JSON_EXTRACT استفاده میشود.
مثال:
حذف گوشیهایی که Android Jellybean دارند.
مرحله ۶ — ساخت Migration در Laravel
ساخت پروژه:
ساخت migration برای:
-
brands
-
categories
-
products
در migration جدول products:
ستون JSON ساخته میشود.
(فقط روی دیتابیسهایی که JSON را پشتیبانی کنند)
مرحله ۷ — ساخت Model ها
سه مدل:
-
Brand
-
Category
-
Product
در مدل Product:
این باعث میشود JSON هنگام دریافت از دیتابیس:
تبدیل به آرایهٔ PHP شود.
مرحله ۸ — ساخت محصول (Camera)
ساخت Controller:
در متد store:
اطلاعات فرم گرفته میشود و attributes به صورت آرایه ذخیره میشود.
مرحله ۹ — گرفتن اطلاعات محصول
متد:
محصول را از دیتابیس میگیرد و نمایش میدهد.
در Blade:
دسترسی مستقیم به JSON.
مرحله ۱۰ — ویرایش محصول
میتوانید فرم مشابه ایجاد محصول بسازید و دادهٔ قبلی را داخل آن قرار دهید.
جمعبندی
در این مقاله یاد گرفتید:
استفاده از نوع داده JSON در MySQL
ساخت JSON با JSON_OBJECT و JSON_ARRAY
خواندن داده با JSON_EXTRACT
آپدیت با JSON_SET / INSERT / REPLACE
حذف با JSON_REMOVE
اتصال MySQL JSON به Laravel Eloquent
ذخیره JSON به صورت array در مدل
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران