![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 18.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
witam
mam problem z zaprojektowaniem bazy. robie bardzo prosty katalog filmow i zatrzymalem sie w pewnym miejscu. mam tabele film, w ktorej przechowuje wszystko o filmie. jednakze, gdy doszedlem do pola gatunek, zaczely sie schody - film moze miec wiecej niz jeden gatunek. majac tabele dodatkowa gatunek w ktorej przechowuje nazwy gatunkow, moge wstawic id_gatunku w tabele film. tylko co jesli film ma np 3 gatunki? zrobilem tabele pomocnicza ktora sklada sie z id_film, id_gatunek. operacja dodania filmu i zaznaczeniu 3 gatunkow (przez formularz na stronie), dodawany jest rekord w tabeli film i 3 rekordy w tabeli pomocniczej gdzie id_film jest taki sam a zmienia sie tylko id_gatunek. w tym miejscu mam pierwsze pytanie : czy taka konstrukcja utworzenia dodatkowej (zbiorczej) tabeli pomocniczej jest jedynym wyjsciem? druga sprawa to klucze obce w mysql. chcialbym zrobic tak, ze w przypadku usuniecia rekordu z tabeli film o id=1, to automatycznie usuwane sa rekordy w tabeli pomocniczej. utworzylem indeks w tabeli film wskazujacy na tabele posrednia_tabela_z_gatunkami i ustawilem on delete=cascade, on update=cascade i wszystko jest ok, ale w przypadku gdy usune rekordy w tabeli gatunki z danym id_film ![]() Kod #1452 - Cannot add or update a child row: a foreign key constraint fails (`filmy2`.`#sql-da0_ae`, CONSTRAINT `#sql-da0_ae_ibfk_1` FOREIGN KEY (`id_film`) REFERENCES `film` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) wiem, ze da sie to zrobic w pph usuwajac po prostu rekordy odpowiednim zapytaniem, a wlasciwie dwoma zapytaniami ![]() przedstawiona ponizej struktura mojej bazy: film id (PK) tytul gatunek: id (PK) gatunek posrednia_tabela_z_gatunkami id_film id_gatunek czesze ten internet i czesze i nic konkretnego nie znalazlem. same zapytania na forach bez odpowiedzi ![]() pozdrawiam ps oczywiscie tabele sa INNODB ![]() Ten post edytował michael8383 30.03.2010, 23:55:48 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 08:56 |