菜譜分享網(wǎng)站微信小程序開(kāi)發(fā)說(shuō)明(2)-數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)選擇使用的是MySQL,數(shù)據(jù)庫(kù)的名稱是gourmet,字符集:utf8mb4,排序規(guī)則:utf8mb4_general_ci
數(shù)據(jù)庫(kù)一共6張表:
- 菜譜主表
- 用料表
- 菜譜瀏覽記錄表
- 分類表(兩級(jí)或三級(jí)分類)
- 用戶表
- 用戶收藏表
用戶表(gourmet_user)
| 字段名 |
類型 |
備注 |
| id |
int |
主鍵,自增 |
| nick_name |
varchar |
用戶昵稱 |
CREATE TABLE `gourmet_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵,自增',
`nick_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用戶昵稱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
淦,這個(gè)表其實(shí)沒(méi)用上??
菜譜主表(gourmet_menu)
| 字段名 |
類型 |
備注 |
| id |
int |
主鍵,自增 |
| img |
varchar |
菜譜圖片url |
| title |
varchar |
菜譜標(biāo)題 |
| introd |
varchar |
菜譜簡(jiǎn)介 |
| content |
text |
菜譜內(nèi)容(html) |
| nickname |
varchar |
作者昵稱 |
| recommend |
tinyint |
是否是推薦(首頁(yè)輪播圖) |
CREATE TABLE `gourmet_menu` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵,自增',
`img` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜譜圖片url',
`title` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜譜標(biāo)題',
`introd` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '菜譜簡(jiǎn)介',
`content` text COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜譜內(nèi)容(html)',
`nickname` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '作者昵稱',
`recommend` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否是推薦(首頁(yè)輪播圖)',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
這里的nickname使用的是用戶昵稱,主要是為了簡(jiǎn)單,假定認(rèn)為用戶昵稱是不能重復(fù)的,但顯然是不正確的。這造成了上面的用戶表沒(méi)有必要使用,如果僅僅是課設(shè),沒(méi)有必要修改,但是如果有需要,請(qǐng)從數(shù)據(jù)庫(kù)動(dòng)手開(kāi)始修改?。?!
用料表(gourmet_materials)
| 字段名 |
類型 |
備注 |
| id |
int |
主鍵,自增 |
| menu_id |
int |
外鍵(菜譜主表的id) |
| name |
varchar |
材料名稱 |
| quantity |
varchar |
用量 |
CREATE TABLE `gourmet_materials` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵,自增',
`menu_id` int(11) unsigned NOT NULL COMMENT '外鍵(菜譜主表的id)',
`name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '材料名稱',
`quantity` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用量',
PRIMARY KEY (`id`),
KEY `fk_menu_materials` (`menu_id`),
CONSTRAINT `fk_menu_materials` FOREIGN KEY (`menu_id`) REFERENCES `gourmet_menu` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
菜譜瀏覽記錄表(gourmet_menu_scan)
| 字段名 |
類型 |
備注 |
| id |
int |
主鍵,自增 |
| menu_id |
int |
外鍵(菜譜主表的id) |
| pageviews |
int |
瀏覽量 |
| favorites |
int |
收藏量 |
CREATE TABLE `gourmet_menu_scan` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵,自增',
`menu_id` int(10) unsigned NOT NULL COMMENT '外鍵(菜譜主表的id)',
`pageviews` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '瀏覽量',
`favorites` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '收藏量',
PRIMARY KEY (`id`),
KEY `fk_menu_scan` (`menu_id`),
CONSTRAINT `fk_menu_scan` FOREIGN KEY (`menu_id`) REFERENCES `gourmet_menu` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
分類表(gourmet_classify)
| 字段名 |
類型 |
備注 |
| id |
int |
主鍵,自增 |
| name |
varchar |
分類名稱 |
| parent_id |
int |
父級(jí)分類id |
CREATE TABLE `gourmet_classify` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵,自增',
`name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '分類名稱',
`parent_id` int(10) unsigned DEFAULT '0' COMMENT '父級(jí)分類id',
PRIMARY KEY (`id`),
KEY `fore_parentid` (`parent_id`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
用戶收藏表(gourmet_star)
| 字段名 |
類型 |
備注 |
| user_id |
int |
雙主鍵,用戶表外鍵,用戶表id |
| menu_id |
int |
雙主鍵,菜譜表外鍵,菜譜表id |
CREATE TABLE `gourmet_star` (
`nick_name` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '雙主鍵,用戶表外鍵,用戶表用戶昵稱',
`menu_id` int(10) unsigned NOT NULL COMMENT '雙主鍵,菜譜表外鍵,菜譜表id',
PRIMARY KEY (`nick_name`,`menu_id`) USING BTREE,
KEY `fk_menu_star` (`menu_id`),
CONSTRAINT `fk_menu_star` FOREIGN KEY (`menu_id`) REFERENCES `gourmet_menu` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;