Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Autonumeracja a klucze obce
Kikert
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 15.09.2008

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


Małe pytanie - jeżeli dla klucza podstawowego z numerem użytkownika ustawię opcję 'Auto Incremental' to czy:

1. Numeracja będzie się zmieniać automatycznie przy różnych operacjach (np. usunięciu użytkownika), tak, że wartości kolejnych rekordów będą zawsze tworzyć ciąg liczb naturalnych (1,2,3,...)?

2. Czy przy takich zmianach klucze obce w innych tabelach również będą się odpowiednio zmieniać?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
yevaud
post
Post #2





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


ok, ale przy takiej konkstrukcji bazy jaka mysle narzuca Twoj scenariusz, po zrobieniu delete cascade nie tyle zniklby produkt z faktur co zniklyby faktury ktore ten produkt mialy (IMG:style_emoticons/default/smile.gif) produkt z faktur zniklby nawet wtedy gdy cascade by nie bylo, a na dodatek mialbys spaprana baze bo faktury przy zlaczeni inner i tak by znikly

Kazdy kto kasuje rekordy w ten sposob o ktorym wspomniales zasluguje na pregierz i cascade niewiele tu zmienia, set null mogloby cos zmienic ewentualnie tzn. sprawic ze w pewnych warunkach byloby to dopuszczalne

Program do faktur albo powinien byc zlaczany wiele-do-wielu z magazynem, wtedy kasujesz rekordy z tabeli zlaczajacej, a za skasowanie czegos z tabeli produktow masz dyscyplinarne zwolnienie z pracy(wtedy bez cascade uszkadzalbys wszystkie faktury, z cascade kasowalbys produkt z wszystkich faktur - same faktury dalej by istnialy i bylyby formalnie poprawne) (IMG:style_emoticons/default/smile.gif) , albo i tak powinien kopiowac wszystkie dane na fakture -> po to ze jak zmienisz nazwe produktu w magazynie to Ci wstecz wszystkich faktur nie miesza (IMG:style_emoticons/default/smile.gif) W przypadku drugim mozna pozostawic klucze obce wiele-do-wielu, ale raczej jako informacja dla admina bazy danych i wtedy w on delete powinno byc set null, a bez on delete znow masz burdel w bazie (IMG:style_emoticons/default/smile.gif)

Ten post edytował yevaud 5.09.2010, 12:10:04
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: 28.12.2025 - 18:57