Автор Тема: MCF - Foreign Key constraint  (Прочетена 5240 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

OutOfTouch

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
MCF - Foreign Key constraint
« -: 14 Декември 2010, 12:30:18 »
Здравейте,
Благодаря за MCF уроците на gatakka. Наистина научих много неща. Към последните уроци, той споменава за задачки, които остава да бъдат направени по форума, за да бъде най-необходимата му функционалност пълна. Например да се добави DELETE на записи и да се изтриват подкатегории, при изтриване на прилежащата им главна категория.  Със второто е свързан и моя проблем.
В настоящия си вид при изтриване на ID на група от таблицата group_cat, записите към това ID от таблицата cat не се изтриват, а просто не се визуализират. Аз искам да го направя да се изтриват. Това става чрез използването на външен ключ(foreign key) и по-точно с CASCADE DELETE добавен към него. Всичко работи точно, когато имаме ID на главна тема в group_cat таблицата и същото ID е обвързано с подтеми от cat таблицата( което ако си спомняте ставаше с добавяне на атрубута group_cat_id в cat , в който се помнят ID-тата на главните теми ).
Проблема ми всъщност се състой в това, че когато се опитам да създам нова главна тема в group_cat, външния ключ не ми позволява да направя това, защото няма с какъв запис от cat таблицата да обвърже записа, който опитвам да създам. Това е съвсем логично разбира се, защото принципно първо създаваме главните теми, после подтемите. Атрибута group_cat_id от таблицата cat е индексиран. Ето и няколко снимки:





Последно да спомена, че форума работи безупречно и всичко по кода е точно както е в уроците.

« Последна редакция: 14 Април 2015, 23:26:18 от Avalanche »

OutOfTouch

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
Re: MCF - Foreign Key constraint
« Отговор #1 -: 16 Декември 2010, 10:03:18 »
Айде бе хора..толкова ли ми е сложен въпроса и никой ли до сега не е правил външни ключове ? Още малко информация ще дам.
Първоначално си мислих, че след като събмитна формата за добавяне на основна група в group_cat, нещо там не сработва правилно с външния ключ, но след като опитах няколко различни начина, разбрах, че не е там проблема. В същото време още при самото създаване на външния ключ, ако имам различаващи се ID-та в атрибута group_cat_id в дете таблички group_cat и cat, не ми позволява да създам самия външен ключ. Логично е да бъде така..иначе се обезмисля действието му..но как да го накарам да сработва в този случай ?

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 93
  • Публикации: 4836
Re: MCF - Foreign Key constraint
« Отговор #2 -: 16 Декември 2010, 10:30:09 »
Първо да кажа че видеото не съм го гледал. Освен това баш не мога да разбера какво искаш като ми казваш разни неща от урока. Кажи направо кво трябва да се случва а не да ми даваш примери кво имало в таблиците.
Ре: Да, препрочетох го и пак схванах!
Освен това не очаквай кой знае каква помощ от тоя форум - не останаха сериозни помагачи вече тука (без да ми се обиждате)
« Последна редакция: 16 Декември 2010, 10:32:32 от echeveria »
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

NoBBy

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 4
  • -Получени: 38
  • Публикации: 309
Re: MCF - Foreign Key constraint
« Отговор #3 -: 16 Декември 2010, 11:30:26 »
Защо не направиш изтриването от 2те таблици директно в 1 заявка:

Код: SQL
  1. DELETE cat, gc
  2. FROM group_cat AS gc INNER JOIN cat
  3. ON gc.group_cat_id = cat.group_cat_id
  4. WHERE gc.group_cat_id = $groupCatId
  5.  

Ако съм разбрал правилно структурата на таблицата това трябва да работи

OutOfTouch

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
Re: MCF - Foreign Key constraint
« Отговор #4 -: 17 Декември 2010, 00:25:38 »
Не се бях досетил за тоя вариант. Ще го пробвам. Но нека да опитаме да намерим решение ако е с външен ключ.
echeveria, коментара ти щеше да бъде със същия успех ако беше написал/а просто "Ами незнам".
Edit: Ще го кажа по просто. Как да създам външен ключ между две таблици, който да изтрива каскадно, така че да позволява да създавам нови записи в таблиците ?
« Последна редакция: 17 Декември 2010, 08:01:53 от OutOfTouch »

OutOfTouch

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
Re: MCF - Foreign Key constraint
« Отговор #5 -: 18 Декември 2010, 14:17:32 »
За да е завършена темата казвам какъв бил отговора. Връзката трябва да е от cat към group_cat т.е. в таблицата за подкатегориите трябва да се сетне FK-я. Чак ме е яд на себе си колко е било просто !

wuser

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 85
  • -Получени: 49
  • Публикации: 2761
Re: MCF - Foreign Key constraint
« Отговор #6 -: 18 Декември 2010, 14:27:35 »
OutOfTouch нали се сещаш вече, че в тоя форум си единствения, който е ползвал някога ФК и знае за какво става въпрос? Ние просто четем темата и отбелязваме поредното си бяло петно в знанията.
Мъдростта на патилото
Perl Monks: PHP - it's "training wheels without the bike" -- Randal L. Schwartz


Дееба... чувствам се все едно обяснявам на майка ми как да си отвори пощата
"не работи"
WTF?!?!? к'во значи че не работи?
Не ти се компилира, дава ти грешка, вади ти грешни резултати, компютърът ти се изключва като го напишеш или на целия квартал му спира тока?
Stilgar

svet1bg

  • Full Member
  • ***
  • Благодарности
  • -Казани: 1
  • -Получени: 1
  • Публикации: 124
Re: MCF - Foreign Key constraint
« Отговор #7 -: 18 Декември 2010, 16:00:58 »
За да е завършена темата казвам какъв бил отговора. Връзката трябва да е от cat към group_cat т.е. в таблицата за подкатегориите трябва да се сетне FK-я. Чак ме е яд на себе си колко е било просто !

Ето ти инфо за това което питаш

OutOfTouch

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
Re: MCF - Foreign Key constraint
« Отговор #8 -: 18 Декември 2010, 18:11:21 »
OutOfTouch нали се сещаш вече, че в тоя форум си единствения, който е ползвал някога ФК и знае за какво става въпрос? Ние просто четем темата и отбелязваме поредното си бяло петно в знанията.
Ти пък. Не искам да повярвам, че нещо толкова базово за базите данни би ви затруднило. Може форума да не се радва на голям интерес( това незнам със съгурност понеже регистрацията ми е едва от седмица ),но мисля че има знаещи хора, които не са за подценяване. Все пак решението на проблема с DELETE, което дойде именно от тук е идейно и ще ми послужи със сигурност за напред. Това, че отговора, който търсих не дойде от тук, не означава че ще спра да ви питам разбира се :). Така, че се пригответе за още аматьорски въпроси от мен.

OutOfTouch

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
Re: MCF - Foreign Key constraint
« Отговор #9 -: 26 Януари 2011, 22:38:07 »
Друг въпрос за външните ключове: Има ли команда към базата, която да връща като резултат имената на външните ключове заедно с информация за атрибута към, който се отнасят ?

echeveria

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 72
  • -Получени: 93
  • Публикации: 4836
Re: MCF - Foreign Key constraint
« Отговор #10 -: 26 Януари 2011, 23:48:45 »
Само на ключовете или на структурата на базата? щото с определени параметри може да се ползва SHOW COLUMNS , EXPLAIN, DESCRIBE и да обработиш получената информация с израз!
Днес Печатарите използват парите за да купят мозъците на онези, които ги превъзхождат, за да ги накарат да им служат и така да се превърнат в жертва на посредствеността. Това ли е причината, поради която ги наричате благо?
<iframe src="http://www.corbindavenport.com/ubuntu/widget.html" style="width:

OutOfTouch

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 8
Re:MCF - Foreign Key constraint
« Отговор #11 -: 02 Февруари 2011, 17:40:57 »
С какви параметри например ? Интересува ме как да видя списък от външните ключове както за цялата база.. така и за конкретна таблица.
Принциптно намерих заявка към information_schema, която трябва да даде това което ми трябва. Но се сблъсквам със проблем:
Когато конфигурирам MySQL да използва InnoDB, който всъщност разрешава използването на външните ключове, ми изчезва базата данни information_schema.
Когато конфигурирам MySQL да използва MyISAM, който не поддържа външни ключове, вече имам на разположение information_schema.
Интересува ме всяко възможно решение на проблема.