PDA

View Full Version : سوال: توضیح در مورد جداول بخش اول کتاب effortless e-commerce with php & mysql



eminem.encore
دوشنبه 04 دی 1391, 11:17 صبح
با عرض سلام ببخشید جناب شاید سوالاتم یکم مبتدی باشه اما من فقط از این انجمن جواب سوالاتم رو گرفتم.
1- تو این کدها اگه نام جدولمون رو داخل تک کوتیشن ننویسیم مشکلی پیش میاد؟ چرا داخل تک کوتیشین می نویسیم؟
2- کاربرد unique key چی هستش؟ چرا بعضی از فیلدهامون رو unique گرفتیم؟
3- ENGINE=MyISAM DEFAULT CHARSET=utf8 این قطعه کد چکار میکنه؟
4- timestamp چه نوع داده ای است؟
5- کاربرد key چیه که userid رو key کرده؟


KEY `date_created` (`date_created`)

6- ENUM چجور نوع داده ایه؟ کد پایین چی میگه؟


`type` ENUM('member','admin')



CREATE TABLE `categories` (
`id` SMALLINT NOT NULL AUTO_INCREMENT,
`category` VARCHAR(30) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `category` (`category`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `orders` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`transaction_id` VARCHAR(19) NOT NULL,
`payment_status` VARCHAR(15) NOT NULL,
`payment_amount` DECIMAL(6,2) UNSIGNED NOT NULL,
`payment_date_time` TIMESTAMP NOT NULL DEFAULT
➥CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `pages` (
`id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
`category_id` SMALLINT UNSIGNED NOT NULL,
`title` VARCHAR(100) NOT NULL,
`description` TINYTEXT NOT NULL,
`content` LONGTEXT NOT NULL,
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `category_id` (`category_id`),
KEY `creation_date` (`date_created`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `pdfs` (
`id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
`tmp_name` CHAR(40) NOT NULL,
`title` VARCHAR(100) NOT NULL,
`description` TINYTEXT NOT NULL,
`file_name` VARCHAR(40) NOT NULL,
`size` MEDIUMINT UNSIGNED NOT NULL,
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `tmp_name` (`tmp_name`),
KEY `date_created` (`date_created`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`type` ENUM('member','admin') NOT NULL,
`username` VARCHAR(30) NOT NULL,
`email` VARCHAR(80) NOT NULL,
`pass` VARBINARY(32) NOT NULL,
`first_name` VARCHAR(20) NOT NULL,
`last_name` VARCHAR(40) NOT NULL,
`date_expires` DATE NOT NULL,
`date_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`date_modified` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

pani.khoram
دوشنبه 04 دی 1391, 14:34 عصر
سلام ، ماشاالله ، فکر کنم خیلی وقته این سوال ها تو دلتون مونده بودااا . شوخی بود .

سوال اول : بله دچار مشکل می شید ، نام جدول رو به عنوان یک رشته ارسال می کنید که ساخته بشه .
سوال دوم : کاربرد فیلد های unique برای این است که شما درون مقادیر ذخیره شده در رکورد به رکورد هیج مقدار مشابه نداشته باشید ، مثال واقعی : کد ملی شما فقط برای شماست و شناسه شما در دنیای واقعی حساب می شه پس باید کد ملی را یک unique فیلد در نظر بگیرید .
سوال سوم : موتور دیتابیس در دوحالت MyISAM یا Innodb قرار می گیره که اینجا اولی را در نظر گرفته و زبان نوشتاری را بر اساس کدینگ UTF-8 ، برای اطلاع بیشتر من تو همین انجمن یه مقاله در مورد تفاوت هاشون دارم که می تونید مطالعه کنید . بد نیست .
لینک مقاله (http://barnamenevis.org/showthread.php?375092-%D8%AA%D9%81%D8%A7%D9%88%D8%AA-myISAM-%D9%88-innoDB-%D8%AF%D8%B1-%D9%85%D9%88%D8%AA%D9%88%D8%B1-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-!)
سوال چهارم : یه مقدار عددی صحیح بزرگ .
سوال پنجم : جواب دادم
سوال ششم : enum یک مقدار آرایه ای را در فیلد شما مشخص می کنه مثلا در این مثالی که شما گذاشتید : این فیلد دو مقدار member و admin رو می تونه فقط بپذیرد .

موفق باشید