Построение базы данных "Кулинарная книга"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?ба Method_name char 50 знаков
СоставComposition№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1 ID_состав Composition_ID int первичный ключ 2 ID_ ингредиент Comp_Ingredient_ID int Ingredient (Ingredient_ID) ссылка на ингредиент 3 ID_рецепт Comp_recipe_ID int Recipe (Recipe_ID) ссылка на блюдо 4 ID_мера_измерения Comp_Unit_measure_ID Int Unit_measure (Unit_measure_ID) Ссылка на меру измерения 5 ID_состояние Comp_condition_ID Int Condition (Condition_ID) Ссылка на состояние 6 Количество Quantity char 60 знаков
СостояниеCondition№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1ID_состоянияCondition_IDintпервичный ключ2НазваниеCondition_namechar50 знаков
Единица измеренияUnit_measure№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1 ID_единицы _измерения Unit_measure_ID int первичный ключ 2 Название Unit_measure_name char 50 знаков
ИнгредиентIngredient№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1 ID_ингредиента Ingredient_ID int первичный ключ 2 Название Ingredient_name char 50 знаков
ОтзывReference№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1 ID_отзыва Reference_ID int первичный ключ 2 ID_пользователя Ref_User_ID int ссылка на User (User_ID) ссылка на пользователя 3 ID_рецепта Ref_Recipe_ID Int Recipe (Recipe_ID) 4 Сообщение Message tinytext 5 Дата Date datetime
АвторAuthor№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1 ID_авторство Author_ID int первичный ключ 2 ФлагFlag int
ПользовательUser№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1 пользователь_ID user_ID int первичный ключ 2 Имя Name char 50 символов 3 Фамилия Surname char 50 символов 4 Логин Login char 20 символов 5ПарольPasswordchar20 символов
КнигаBook№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1 книга_ID Book_ID int первичный ключ 2 Название Tittle char 50 символов 3 Автор author char 50 символов 4 Описание description tinytext
ОсноваBasis№Название по-русскиНазвание по-английскиТип переменныхПримечаниеСсылкаОбоснование типа1 Основа_ID Basis_ID Int Первичный ключ 2 Название Basis_name char 50 символов
Создание таблиц в СУБД
drop database if exists Recipe_book;database Recipe_book;Recipe_book database;
Cuisine
create table Cuisine(_ID int NOT NULL auto_increment PRIMARY KEY,_name char(60) default NULL)ENGINE=InnoDB;
Category
create table Category(_ID int NOT NULL auto_increment PRIMARY KEY,_name char(50) default NULL)ENGINE=InnoDB;
Cooking_method
create table Cooking_method(_method_ID int NOT NULL auto_increment PRIMARY KEY,_name char(50) default NULL)ENGINE=InnoDB;
Conditions
create table Conditions(_ID int NOT NULL auto_increment PRIMARY KEY,_name char(50) default NULL)ENGINE=InnoDB;
Unit_measure
create table Unit_measure(_measure_ID int NOT NULL auto_increment PRIMARY KEY,_measure_name char(50) default NULL)ENGINE=InnoDB;
Basis
create table Basis(_ID int NOT NULL auto_increment PRIMARY KEY,_name char(50) default NULL)ENGINE=InnoDB;
Author
create table Author(_ID int NOT NULL auto_increment PRIMARY KEY,char(50) default NULL)ENGINE=InnoDB;
Ingredient
create table Ingredient(_ID int NOT NULL auto_increment PRIMARY KEY,_name char(50) default NULL)ENGINE=InnoDB;
User
create table User(_ID int NOT NULL auto_increment PRIMARY KEY,_name char(50) default NULL,_surname char(50) default NULL,char(50) default NULL,char(50) default NULL)ENGINE=InnoDB;
Reference
create table Reference(_ID int NOT NULL auto_increment PRIMARY KEY,_User_ID int NOT NULL,user_ind (Ref_User_ID),_Recipe_ID int NOT NULL,Ref_Recipe_ind (Ref_Recipe_ID),tinytext default NULL,datetime default NULL,KEY (Ref_User_ID)User(User_ID)DELETE NO ACTIONUPDATE NO ACTION)ENGINE=InnoDB;
Composition
create table Composition(_ID int NOT NULL auto_increment PRIMARY KEY,_Ingredient_ID int NOT NULL,Comp_Ingredient_ind (Comp_Ingredient_ID),_Recipe_ID int NOT NULL,Comp_Recipe_ind (Comp_Recipe_ID),_Unit_measure_ID int NOT NULL,Comp_Unit_measure (Comp_unit_measure_ID),_Condition_ID int NOT NULL,Comp_Condition_ind (Comp_Condition_ID),int default NULL,KEY (Comp_Ingredient_ID)Ingredient(Ingredient_ID)DELETE NO ACTIONUPDATE NO ACTION,KEY (Comp_Unit_measure_ID)Unit_measure(Unit_measure_ID)DELETE NO ACTIONUPDATE NO ACTION,KEY (Comp_Condition_ID)Conditions(Condition_ID)DELETE NO ACTIONUPDATE NO ACTION
)ENGINE=InnoDB;
Book
create table Book(_ID int NOT NULL auto_increment PRIMARY KEY,char(50) default NULL,char(50) default NULL,tinytext default NULL)ENGINE=InnoDB;
Recipe
create table Recipe(_ID int NOT NULL auto_increment PRIMARY KEY,_Cuisine_ID int NOT NULL,Rec_Cuisine_ind (Rec_Cuisine_ID),_Category_ID int NOT NULL,Rec_Category_ind (Rec_Category_ID),_Cooking_method_ID int NOT NULL,Rec_Cooking_method_ind (Rec_Cooking_method_ID),_User_ID int NOT NULL,Rec_User_ind (Rec_User_ID),_Book_ID int NOT NULL,Rec_Book_ind (Rec_Book_ID),_Basis_ID int NOT NULL,Rec_Basis_ind (Rec_Basis_ID),_Author_ID int NOT NULL,Rec_Author_ind (Rec_Author_ID),_cooking_method tinytext default NULL,_name char(100) default NULL,_content int default NULL,_weight char(100) default NULL,KEY (Rec_Cuisine_ID)Cuisine(Cuisine_ID)DELETE NO ACTIONUPDATE NO ACTION,KEY (Rec_Category_ID)Category(Category_ID)DELETE NO ACTIONUPDATE NO ACTION,KEY (Rec_Cooking_method_ID)Cooking_method(Cooking_method_ID)DELETE NO ACTIONUPDATE NO ACTION,KEY (Rec_User_ID)User(User_ID)DELETE NO ACTIONUPDATE NO ACTION,KEY (Rec_Book_ID)Book(Book_ID)DELETE NO ACTIONUPDATE NO ACTION,KEY (Rec_Basis_ID)Basis(Basis_ID)DELETE NO ACTIONUPDATE NO ACTION,
FOREIGN KEY (Rec_Author_ID)Author(Author_ID)DELETE NO ACTIONUPDATE NO ACTION
)ENGINE=InnoDB;
Relation
ALTER TABLE CompositionFOREIGN KEY (Comp_Recipe_ID)Recipe(Recipe_ID)DELETE NO ACTIONUPDATE NO ACTION;TABLE ReferenceFOREIGN KEY (Ref_Recipe_ID)Recipe(Recipe_ID)DELETE NO ACTIONUPDATE NO ACTION;
Запросы
база данные кулинарный книга
Запрос 1.
Вывести все рецепты, написанные пользователями, у которых 5 отзывов и метод приготовления =вареное
SQL код:
SELECT Recipe_ID, Recipe_name, Method_name, count(Recipe_ID=Ref_recipe_ID)RecipeCooking_method ON Rec_cooking_method_ID=Cooking_method_IDReference ON Recipe_ID=Ref_Recipe_IDmethod_name='Вареное'by Recipe_IDcount(Recipe_ID=Ref_recipe_ID)=5;
Результат:
Recipe_IDRecipe_nameMethod_namecount(Recipe_Id=Ref_recipe_ID22ЗпыщецжпгъщВареное531ЮкогохигыпчВареное5
Эффективность выполнения запроса:
idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra1SIMPLECooking_methodALLPRIMARYNULLNULLNULL4Using where; Using temporary; Using filesort1SIMPLEReciperefPrimary, Rec_cooking_method_indRec_Cooking_method4recipe_book.Cooking_ method_ID1191SIMPLEReferencerefRef_Recipe_indRef_Recipe_ind4recipe_book.Recipe_ID1Using index
Интерпретация:
Объединяются таблицы: метод приготовления, рецепт, отзыв. Затем выбираются рецепты, в которых метод приготовления =вареному. Далее выбираются рецепты iислом отзывов=5.
Запрос 2
Вывести все рецепты, взятые из книги = Рпысндън, в которой одновременно присутствуют 2 ингредиента: мороженое сливочное И шпроты, количество соли <10 граммов.
SQL код:
SELECT Recipe_ID, Recipe_name, Book_ID, Title, Ingredient_ID, QuantityRecipeBook ON Rec_book_ID=Book_IDComposition