![]() |
![]() |
-Code46- |
![]()
Post
#1
|
Goście ![]() |
Pozwoliłem sobie powrócić do problemu, który niby został wyjaśniony przez SongoQ.
Mam 2 tabele: Tabela A: a_id int primary key login varchar(20) haslo varchar(20) Tabela B: b_id int primary key a_id int imie varchar (20) nazwisko varchar(20) adres varchar(20) Wiem, że można zrobić powiązania między tabelami i jak usuwam z tabeli A wiersz o numerze a_id=1 (np. login:root, haslo:root) i automatycznie usuwa się odpowiedni wpis z tabeli B (np. imie:administrator, nazwisko:systemu, adres:localhost).. Ale jeśli zrobię to na transakcjach a w kodzie php napiszę 2x instrukcje DELETE (najpierw z tabeli A a potem z tabeli B ) to czy to będzie profesionalne? Wszystko będzie działać ok, jeśli będziemy robić przez aplikacje. A jeśli ktoś będzie chciał coś usunać ręcznie? To usunie login, hasło, ale pozostałe dane pozostaną w drugiej tabeli. Więc robić powiązania czy nie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 19.09.2004 Skąd: Uć Ostrzeżenie: (0%) ![]() ![]() |
powiazanie i wymuszenie wiezow integralnosci czyli cos jak ON DELETE CASCADE itp daja ci to ze nie zostana ci nigdzie zbedne dane, jesli usuwasz dane z jednej tabeli to jesli tak wymusiles to automatycznie zostana skasowane te w drugiej tabeli, z kolei jak chcesz usunac z tej drugiej dane majaca powiazanie z innymi danymi w innej tabeli to system odmowi usuniecia danych poniewaz naruszy to wiezy integralnosci bazy.
w momencie kiedy nie masz tych polaczen, mozesz dowolnie usuwac sobie co chcesz skad chcesz poniewaz dla ciebie te polaczenia istnieja niejako umownie podczas operacji na bazie w twojej aplikacji czyli recznie mozesz wszystko robic. dlatego wg mnie jesli jest to uzasadnione to wypada to zastosowac tym bardziej jesli ktos chce recznie mieszac w bazie. wtedy nie bedize wiedzial o twoich umownych powiazaniach i wysypie ci cala aplikacje, a jak narzucisz mu wymuszanie wiezow integralnosci to moze usunie rekordy, ale nie naruszy ci spojnosci bazy, nie bedizesz mial rekordow "zombie" ze tak powiem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) a co do tych 2x delete to to jest wlasnie ta twoja umowa ze w tym momencie istnieja wiezy i je uwzgledniasz, ale po co skoro baza ma wbudowane mechanizmy do tego sluzace i mozliwe ze sa szybsze i wydajniejsze niz wykonywanie 2 zapytan delete z poziomu aplikacji. no a jesli juz bardzo chcesz te 2x delete to bez transakcji nie przejdzie (znowu probelm spojnosci bazy) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 15:59 |