|
В този урок ще се спрем на използването на Foreign Keys с MySQL. Благодарение на тях имате възможност да запазите консистентна информацията във вашата база за данни, без да трябва да пишете екстра скриптове, които да се грижат за това. Какво точно правят тези Foreign Keys, ще разгледаме по-долу, чрез няколко примера.
На всички ни е ясно, че за да имаме успех при създаването на една добра система е необходимо добро структуриране на информацията в базата ни за данни. В този урок няма да се спираме подробно в разпределението на информацията в различни таблици, а как се прави връзка между тях. Като пример ще разгледаме две таблици user и user_data. В едната таблица ще запаметяваме ID-то на потребителя, потребителското име и неговата парола. Във втората таблица ще запаметява всякаква информация свързана с този потребител. Хубаво е информацията на един потребител да е разделена в две таблици, тъй като първата таблица ще е много по-често използвана от втората и затова е хубаво да не е толкова обемиста. Казвам по-често използвана, защото към нея ще се правят винаги запитвания, за да се провери, дали потребителските данни на един потребител са верни. Но това няма значение! Все пак взимам тези две таблици за да покажа на кратко използването на Foreign Keys. Ето и структурата на първата таблица: CODE
Тук няма нищо особенно, освен като съвет от мен: Полетата, които ще служат като ключове за други таблици, им слагайте имена свързани с таблицата от която произлизат. Тук в нашия случай това поле е user_id. Ето и структурата на втората таблица: CODE
Особенното в двете таблици е това, че и двете са от тип InnoDB. Това е едно от най-важните предпоставки за използването на Foreign Keys в MySQL. Друг тип освен този не поддържа тази екстра! До тук обаче не сме направили нищо, което не може да направим и с други типове таблици. За да свържем двете таблици в релация, трябва да направим следната манипулация на структурата на втората: CODE
Тук оказваме, че при изтриване на даден ред от първата таблица, то автоматично да бъде изтрит ред от втората таблица свързан с ID-то от първата! Освен ON DELETE може да използвате и след версия 4.0.7 ON UPDATE, което също може да ви свърше прекрасна работа! Едно нещо е много важно и то: За да може да въведете ред във втората таблица, то задължително трябва да има вече ред в първата таблица със съответно ID. В противен случай ще получите следната грешка от MySQL: #1216 - Cannot add or update a child row: a foreign key constraint fails Надявам се да съм ви бил полезен! Приятно програмиране!
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









