
آموزش برنامه نویسی PHP-جلسه بیست و یکم
برای ایجاد دیتابیس باید نرم افزار زمپ یا ومپ را نصب داشته باشیم و Apache و MySQL را استارت میکنیم حالا برای وارد شدن به بخش دیتابیس باید در مرورگر آدرس localhost/phpmyadmin را سرچ کنیم یا از طریق خود زمپ برای بخش mysql روی admin کلیک میکنیم تا مستقیم وارد دیتابیس شود.
Table of contents [Show]
- 1 Create Database؛ ساخت دیتابیس در PHPMyAdmin
- 2 دیتابیس چیست؟
- 3 Table یا جدول چیست؟
- 4 مفهوم Entity یا موجودیت چیست؟
- 5 تفاوت Table، Field و Record چیست؟
- 6 ساخت جدول Users در phpMyAdmin
- 7 فیلد ID چیست و چرا به آن نیاز داریم؟
- 8 Primary Key چیست؟
- 9 AUTO_INCREMENT چیست؟
- 10 نوع داده Integer برای ID
- 11 تعریف فیلدهای جدول کاربران
- 12 چرا شماره تلفن را نباید INT در نظر بگیریم؟
- 13 قوانین نامگذاری فیلدها
- 14 مشاهده اطلاعات جدول با Browse
- 15 مشاهده ساختار جدول با Structure
- 16 تفاوت Database و Table
- 17 طراحی درست دیتابیس چه اهمیتی دارد؟
- 18 نکات مهم هنگام ساخت دیتابیس
- 19 جمعبندی
Create Database؛ ساخت دیتابیس در PHPMyAdmin
بعد از ورود به phpMyAdmin، اولین کاری که برای شروع کار با دیتابیس باید انجام دهیم، ایجاد یک دیتابیس جدید است. دیتابیس محلی برای ذخیره و مدیریت اطلاعات پروژه ماست و معمولاً در پروژههای PHP اطلاعاتی مانند کاربران، محصولات، سفارشها، مقالات، دستهبندیها و سایر دادهها در آن ذخیره میشوند.
برای ساخت دیتابیس، ابتدا از منوی بالای phpMyAdmin روی گزینه Databases کلیک کنید. در صفحهای که باز میشود، بخشی برای ایجاد دیتابیس جدید مشاهده خواهید کرد.
در قسمت Create database یک نام مناسب برای دیتابیس وارد کنید. نام دیتابیس بهتر است کوتاه، واضح و مرتبط با پروژه باشد. برای مثال اگر در حال طراحی یک سایت فروشگاهی هستید، میتوانید نامی مانند shop یا online_shop برای دیتابیس انتخاب کنید.
پس از وارد کردن نام دیتابیس، باید Collation مناسب را انتخاب کنیم. برای پروژههایی که قرار است اطلاعات فارسی در آنها ذخیره شود، میتوان از:
utf8mb4_persian_ci
استفاده کرد. این تنظیم به دیتابیس کمک میکند تا متنهای فارسی و سایر کاراکترهای Unicode را به شکل مناسبی ذخیره و مقایسه کند.
در نهایت روی گزینه Create کلیک میکنیم تا دیتابیس ساخته شود.
دیتابیس چیست؟
برای درک بهتر ساخت جدول، ابتدا باید با مفهوم Database آشنا شویم.
Database یا دیتابیس محیطی برای ذخیره، سازماندهی و مدیریت اطلاعات است. به جای اینکه اطلاعات پروژه را به صورت پراکنده در فایلهای مختلف ذخیره کنیم، میتوانیم آنها را در یک ساختار منظم داخل دیتابیس قرار دهیم.
برای مثال، در یک سایت فروشگاهی ممکن است اطلاعات مختلفی مانند موارد زیر داشته باشیم:
- اطلاعات کاربران
- محصولات
- سفارشها
- دستهبندی محصولات
- پرداختها
- نظرات کاربران
هرکدام از این بخشها میتوانند در قالب یک یا چند Table در دیتابیس ذخیره شوند.
به عنوان مثال میتوانیم دیتابیسی با نام shop داشته باشیم که شامل جدولهای زیر باشد:
shop
│
├── users
├── products
├── orders
├── categories
└── comments
در این ساختار، shop دیتابیس است و مواردی مانند users و products جدولهای داخل آن هستند.
Table یا جدول چیست؟
هر دیتابیس میتواند شامل چندین جدول باشد. جدولها برای دستهبندی و نگهداری اطلاعات مرتبط با یک بخش مشخص از پروژه استفاده میشوند.
برای مثال، اگر بخواهیم اطلاعات کاربران سایت را ذخیره کنیم، بهتر است یک جدول با نام users ایجاد کنیم.
این جدول میتواند اطلاعاتی مانند موارد زیر را در خود داشته باشد:
| نام فیلد | کاربرد |
|---|---|
id | شناسه کاربر |
first_name | نام |
last_name | نام خانوادگی |
phone | شماره تلفن |
email | ایمیل |
password | رمز عبور |
در واقع هر Table از چند Field یا Column تشکیل میشود و هر ردیف جدول نیز اطلاعات مربوط به یک رکورد را نگهداری میکند.
مفهوم Entity یا موجودیت چیست؟
یکی از مفاهیم مهم در طراحی دیتابیس، Entity یا موجودیت است.
موجودیت به یک شیء، شخص، مفهوم یا بخش مشخص از اطلاعات گفته میشود که میخواهیم اطلاعات مربوط به آن را در سیستم ذخیره کنیم.
برای مثال در یک سایت، «کاربر» میتواند یک موجودیت باشد.
فرض کنید کاربری قصد دارد در سایت ثبتنام کند. بسته به نیاز سایت، ممکن است اطلاعات مختلفی از او دریافت کنیم:
- نام
- نام خانوادگی
- شماره تلفن
- ایمیل
- رمز عبور
- تاریخ ثبتنام
هرکدام از این موارد یک ویژگی یا Attribute مربوط به موجودیت کاربر محسوب میشود.
بنابراین میتوانیم یک جدول با نام users ایجاد کنیم و اطلاعات مربوط به کاربران را در آن ذخیره کنیم.
تفاوت Table، Field و Record چیست؟
برای کار با دیتابیس باید تفاوت این سه مفهوم را به خوبی بدانیم.
Table همان جدول دیتابیس است و اطلاعات مربوط به یک موضوع مشخص را در خود نگهداری میکند.
Field یا Column ستونهای جدول هستند و مشخص میکنند چه نوع اطلاعاتی قرار است ذخیره شود.
Record یا Row یک رکورد کامل از اطلاعات است. برای مثال اطلاعات یک کاربر ثبتشده در سایت، یک Record محسوب میشود.
به عنوان نمونه، جدول کاربران میتواند به شکل زیر باشد:
| id | first_name | last_name | phone |
|---|---|---|---|
| 1 | علی | احمدی | 09120000000 |
| 2 | رضا | محمدی | 09121111111 |
| 3 | سارا | کریمی | 09122222222 |
در این مثال:
usersنام جدول است.id،first_name،last_nameوphoneفیلدهای جدول هستند.- هر سطر یک Record یا رکورد محسوب میشود.
- عدد موجود در ستون
idشناسه هر کاربر است.
ساخت جدول Users در phpMyAdmin
بعد از اینکه دیتابیس خود را ایجاد کردیم، میتوانیم جدول موردنظر را بسازیم.
فرض کنید میخواهیم اطلاعات کاربران یک سایت را ذخیره کنیم. برای این کار یک جدول با نام:
users
ایجاد میکنیم.
بعد از انتخاب دیتابیس، در قسمت Create table نام جدول و تعداد فیلدهای موردنیاز را وارد میکنیم.
برای مثال میتوانیم جدول users را با 6 فیلد ایجاد کنیم:
id
first_name
last_name
phone
email
password
البته تعداد و نام فیلدها کاملاً به نیاز پروژه بستگی دارد و در یک پروژه واقعی ممکن است اطلاعات بیشتری مانند تاریخ عضویت، وضعیت حساب کاربری یا تصویر پروفایل نیز داشته باشیم.
فیلد ID چیست و چرا به آن نیاز داریم؟
یکی از مهمترین فیلدهای هر جدول، فیلدی است که رکوردها را به صورت منحصربهفرد شناسایی میکند.
معمولاً این فیلد را با نام id ایجاد میکنیم.
فرض کنید 100 کاربر در سایت ثبتنام کردهاند. اگر بخواهیم هر کاربر را به صورت دقیق از سایر کاربران تشخیص دهیم، به یک شناسه منحصربهفرد نیاز داریم.
برای مثال:
id = 1
id = 2
id = 3
...
id = 100
هر کاربر یک id مخصوص به خود دارد و این شناسه نباید برای دو رکورد مختلف تکرار شود.
این فیلد معمولاً به عنوان Primary Key جدول تعیین میشود.
Primary Key چیست؟
Primary Key یا کلید اصلی فیلدی است که هر رکورد جدول را به صورت منحصربهفرد شناسایی میکند.
در بسیاری از جداول، فیلد id به عنوان Primary Key انتخاب میشود.
برای مثال:
id = 1
میتواند متعلق به یک کاربر خاص باشد و کاربر دیگری نباید همان شناسه را داشته باشد.
استفاده از Primary Key اهمیت زیادی دارد؛ زیرا در آینده ممکن است بخواهیم یک رکورد مشخص را پیدا، ویرایش یا حذف کنیم.
برای مثال:
SELECT * FROM users WHERE id = 10;
این Query اطلاعات کاربری را که شناسه آن 10 است، دریافت میکند.
AUTO_INCREMENT چیست؟
اگر بخواهیم برای هر کاربر یک شناسه جدید ایجاد کنیم، میتوانیم مقدار id را به صورت دستی وارد کنیم؛ اما این روش در پروژههای واقعی مناسب نیست.
فرض کنید 1000 کاربر در سایت ثبتنام کنند. وارد کردن دستی شناسه برای هر کاربر هم زمانبر است و هم احتمال ایجاد شناسه تکراری وجود دارد.
برای حل این مشکل از گزینه:
AUTO_INCREMENT
استفاده میکنیم.
وقتی AUTO_INCREMENT را برای فیلد id فعال کنیم، دیتابیس میتواند هنگام ایجاد رکورد جدید، شناسه بعدی را به صورت خودکار تولید کند.
برای مثال:
کاربر اول → 1
کاربر دوم → 2
کاربر سوم → 3
کاربر چهارم → 4
بنابراین نیازی نیست هنگام ثبت کاربر، مقدار id را خودمان وارد کنیم.
در phpMyAdmin این گزینه معمولاً با عبارت A_I نمایش داده میشود.
نوع داده Integer برای ID
از آنجایی که شناسه معمولاً یک عدد است، برای فیلد id میتوان از نوع داده INT (Integer) استفاده کرد.
برای مثال:
id → INT
نوع داده مشخص میکند که یک فیلد چه نوع مقداری را میتواند ذخیره کند.
برخی از انواع داده پرکاربرد در MySQL عبارتاند از:
INTبرای اعداد صحیحVARCHARبرای متنهای کوتاهTEXTبرای متنهای طولانیDATEبرای تاریخDATETIMEبرای تاریخ و زمانDECIMALبرای اعداد اعشاری با دقت مشخصBOOLEANبرای مقادیر درست و غلط
انتخاب نوع داده مناسب باعث میشود ساختار دیتابیس منظمتر و مدیریت اطلاعات بهتر انجام شود.
تعریف فیلدهای جدول کاربران
برای جدول users میتوانیم ساختاری مشابه زیر ایجاد کنیم:
| Field | Type | کاربرد |
|---|---|---|
id | INT | شناسه منحصربهفرد کاربر |
first_name | VARCHAR | نام کاربر |
last_name | VARCHAR | نام خانوادگی |
phone | VARCHAR | شماره تلفن |
email | VARCHAR | آدرس ایمیل |
password | VARCHAR | رمز عبور |
برای فیلد id گزینه Primary Key و AUTO_INCREMENT را فعال میکنیم.
سپس نوع و سایر تنظیمات هر فیلد را بر اساس اطلاعاتی که قرار است در آن ذخیره شود مشخص میکنیم.
چرا شماره تلفن را نباید INT در نظر بگیریم؟
یکی از نکات مهم هنگام طراحی دیتابیس، انتخاب صحیح نوع داده است.
ممکن است در نگاه اول تصور کنیم شماره تلفن یک عدد است و بنابراین باید از INT استفاده کنیم؛ اما شماره تلفن معمولاً بهتر است به صورت رشتهای مانند VARCHAR ذخیره شود.
دلیل این موضوع این است که شماره تلفن یک مقدار عددی برای محاسبه نیست.
برای مثال:
09121234567
قرار نیست روی شماره تلفن عملیات ریاضی انجام دهیم. همچنین ممکن است شماره با 0 شروع شود یا شامل علامتهایی مانند + باشد.
بنابراین استفاده از:
phone → VARCHAR
در بسیاری از پروژهها انتخاب مناسبتری است.
قوانین نامگذاری فیلدها
هنگام ساخت فیلدهای جدول باید نامگذاری مناسبی داشته باشیم.
بهتر است نام فیلدها:
- به زبان انگلیسی نوشته شوند.
- فاصله نداشته باشند.
- واضح و قابل فهم باشند.
- از نامهای کوتاه و مرتبط با داده استفاده شود.
- در صورت نیاز به جدا کردن کلمات از
_استفاده شود.
برای مثال:
first_name
last_name
phone_number
created_at
updated_at
مناسب هستند.
در مقابل، استفاده از نامهایی مانند:
نام کاربر
شماره تلفن
به دلیل وجود فاصله و استفاده از حروف فارسی، انتخاب مناسبی برای نام فیلدهای دیتابیس نیست.
همچنین بهتر است از نامهای مبهمی مانند:
data
info
test
field1
برای فیلدهای واقعی پروژه استفاده نکنیم؛ زیرا در پروژههای بزرگ، نامگذاری واضح باعث میشود ساختار دیتابیس بسیار قابل فهمتر باشد.
مشاهده اطلاعات جدول با Browse
بعد از ساخت جدول و اضافه کردن اطلاعات، در phpMyAdmin گزینهای با نام Browse مشاهده میکنیم.
با کلیک روی Browse میتوانیم رکوردهای ذخیرهشده در جدول را مشاهده کنیم.
برای مثال ممکن است اطلاعات جدول users به شکل زیر نمایش داده شود:
1 | Ali | Ahmadi | 09120000000
2 | Reza | Mohammadi | 09121111111
3 | Sara | Karimi | 09122222222
در این بخش میتوانیم اطلاعات موجود در جدول را مشاهده کنیم و در صورت نیاز، رکوردها را ویرایش یا حذف کنیم.
مشاهده ساختار جدول با Structure
اگر هدف ما مشاهده اطلاعات کاربران نباشد و بخواهیم ساختار خود جدول را بررسی کنیم، باید وارد بخش Structure شویم.
در قسمت Structure میتوانیم مواردی مانند:
- نام فیلدها
- نوع داده
- طول فیلد
- Primary Key
- AUTO_INCREMENT
- مقدار پیشفرض
- تنظیمات Null
را مشاهده و در بسیاری از موارد ویرایش کنیم.
به بیان ساده:
Browse برای مشاهده رکوردهای جدول است.
Structure برای مشاهده و مدیریت ساختار جدول است.
تفاوت Database و Table
یکی از اشتباهات رایج افراد تازهکار، اشتباه گرفتن Database و Table است.
Database مانند یک مجموعه یا محفظه اصلی است که میتواند چندین جدول را در خود نگهداری کند.
برای مثال:
shop
│
├── users
├── products
├── orders
└── categories
در این مثال:
shop → Database
users → Table
products → Table
orders → Table
categories → Table
هر جدول نیز دارای Field و Recordهای مخصوص به خودش است.
طراحی درست دیتابیس چه اهمیتی دارد؟
طراحی دیتابیس یکی از بخشهای مهم توسعه یک پروژه PHP است. اگر ساختار دیتابیس از ابتدا به شکل مناسبی طراحی نشود، با بزرگتر شدن پروژه مدیریت اطلاعات دشوارتر خواهد شد.
برای مثال، در یک فروشگاه اینترنتی نمیتوان تمام اطلاعات کاربران، محصولات، سفارشها و پرداختها را در یک جدول بزرگ قرار داد.
بهتر است اطلاعات بر اساس موضوع و ارتباط آنها در جدولهای مناسب تقسیم شوند.
برای نمونه:
users
products
orders
order_items
categories
payments
هر جدول وظیفه مشخصی دارد و در صورت نیاز میتوان بین جدولها ارتباط ایجاد کرد.
این موضوع یکی از مباحث مهم در طراحی دیتابیس و Database Relationships محسوب میشود که در مراحل بعدی آموزش با آن آشنا خواهیم شد.
نکات مهم هنگام ساخت دیتابیس
هنگام ایجاد دیتابیس و جدول بهتر است چند نکته مهم را در نظر داشته باشید:
۱. نام مناسبی برای دیتابیس انتخاب کنید
نام دیتابیس باید با پروژه ارتباط داشته باشد و تا حد امکان ساده و خوانا باشد.
۲. ساختار جدول را از قبل مشخص کنید
قبل از ساخت جدول بهتر است بدانید چه اطلاعاتی قرار است در آن ذخیره شود.
۳. برای هر جدول یک شناسه منحصربهفرد در نظر بگیرید
در بسیاری از جدولها میتوان از id به عنوان Primary Key استفاده کرد.
۴. نوع داده مناسب را انتخاب کنید
برای هر فیلد باید نوع داده متناسب با اطلاعات آن انتخاب شود.
۵. از نامگذاری استاندارد استفاده کنید
نام فیلدها را واضح، انگلیسی و بدون فاصله انتخاب کنید.
۶. از ذخیره اطلاعات غیرضروری خودداری کنید
ساختار دیتابیس باید بر اساس نیاز واقعی پروژه طراحی شود.
۷. اطلاعات حساس را به شکل امن ذخیره کنید
برای مثال رمز عبور کاربران نباید به صورت متن ساده در دیتابیس ذخیره شود. در پروژههای واقعی باید از روشهای استاندارد Hash کردن رمز عبور استفاده شود.
جمعبندی
در این بخش با نحوه ساخت یک Database و Table در phpMyAdmin آشنا شدیم و مفاهیم پایهای موردنیاز برای کار با دیتابیس را بررسی کردیم.
یاد گرفتیم که یک Database میتواند شامل چندین Table باشد و هر Table نیز از Fieldها و Recordهای مختلف تشکیل میشود. همچنین با مفهوم Entity، Primary Key و شناسه id آشنا شدیم و دیدیم که چگونه با فعال کردن گزینه AUTO_INCREMENT میتوانیم شناسه رکوردهای جدید را به صورت خودکار ایجاد کنیم.
همچنین با تفاوت گزینههای Browse و Structure در phpMyAdmin آشنا شدیم و نکات مهمی درباره انتخاب نوع داده و نامگذاری فیلدها یاد گرفتیم.
این مفاهیم پایه، مقدمهای برای کار با MySQL و اتصال دیتابیس به PHP هستند. در ادامه مسیر یادگیری PHP، میتوان از همین ساختار برای ذخیره، دریافت، ویرایش و حذف اطلاعات از طریق کدهای PHP استفاده کرد.
پیشنهاد ویژه ما:آموزش رایگان PHP

مریم گوهرزاد
مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین و توسعهدهنده بلاکچین | متخصص Solidity | توسعهدهنده وب Full-Stackمن یک توسعهدهنده علاقهمند به فناوریهای بلاکچین و وب ۳ هستم و در زمینه Solidity، توسعه قراردادهای هوشمند و ساخت برنامههای غیرمتمرکز (DApps) فعالیت میکنم. تمرکز من بر طراحی و پیادهسازی راهکارهایی است که در کنار بهرهگیری از فناوریهای نوین، عملکرد مناسب، امنیت و تجربه کاربری مطلوبی ارائه دهند.در کنار تخصص در حوزه بلاکچین، به عنوان یک توسعهدهنده وب Full-Stack نیز در طراحی و توسعه وبسایتها و برنامههای تحت وب فعالیت میکنم. تجربه کار در بخشهای Front-End و Back-End به من این امکان را داده است که پروژهها را از مرحله ایده و طراحی تا توسعه و اجرا، با دیدی جامع دنبال کنم. در فرآیند توسعه، توجه ویژهای به کدنویسی تمیز، معماری مناسب، طراحی واکنشگرا، عملکرد مطلوب و تجربه کاربری روان دارم.



