Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kasowanie wierszy MySql - zrozumieć relacje
mys
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.10.2005

Ostrzeżenie: (0%)
-----


Witam

Stworzyłem bazę składającą się z dwóch tabeli:

mysql> select * from fv;
+----+-----------+
| id | nr_dok |
+----+-----------+
| 1 | fv/1/2005 |
| 2 | fv/2/2005 |
+----+-----------+
2 rows in set (0.04 sec)

mysql> select * from rzecz;
+----+-----------+---------+
| id | nazwa | faktura |
+----+-----------+---------+
| 1 | antena | 1 |
| 2 | kabel | 1 |
| 3 | zlaczka N | 2 |
| 4 | antena | 2 |
+----+-----------+---------+
4 rows in set (0.04 sec)

Istnieje relacja 1-wielu, między nr_dok, a nazwa w tabeli rzecz. Np. fv/2/2005 jest powiązana z 'zlaczka N' i 'antena' w tabeli rzecz co wskazuje '2' z kolumny 'faktura'. 'id' w obydwu tabelach są kluczami głównymi, kolumna 'faktura' kluczem obcym.

Czy dobrze zaprojektowałem tą prostą bazę jeśli występuje relacja jak wyżej opisałem?

Chcę skasować 'fv/2/2005' i w konsekwencji powiązane z nimi wiersze 3 i 4 z tabeli rzecz. W jaki sposób to osiągnąć nie stosując wartości klucza? Np. DELETE RFOM rzecz WHERE faktura = 2; nie chcę użyć, bo skąd będę wiedział, że to akurat numer 2, a nie inny.

Staram się zrozumieć zastosowanie kluczy i relacji, ale chyba nie bardzo mi się to udaje. Stoje na początku drogi zwanej SQL. Z góry dziękuje za wszelkie wyjaśnienia.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Podtrzymuję uwagi co do nazw.
Ponadto:

1. Dla tabeli rzecz załóz index na pole które jest kluczem obcym z tabeli fv ( czyli na faktura ):
  1. ALTER TABLE `rzecz` ADD INDEX ( `faktura` )


2. Potem dla tabeli rzecz łącze z tabelą fv typu:
(`faktura`) REFER `id/fv`(`id`) ON DELETE CASCADE

Wtedy jak usuniesz rekord z tabeli fv zwykłym DELETE to automatycznie usunięte zostaną rekordy z tablei rzecz powiązane z usuwany rekordem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 05:21