Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%)
|
Witam serdecznie, mam problem z zapytaniem, ktore ma usuwac wiersze, ktore sa zbyteczne. Chodzi o usunięcie zbytecznych rekordów. Struktura:
Kod 1[__user_parameter_values___] [___user_parameter___] +--|user_parameter_values_id |* +--------|user_parameter_id | | |user_parameter_id |<-----+ 1|user_parameter_name | | |user_id | |user_parameter_array| | +--------------------------+ |user_parameter_size | | +--------------------+ | [__user_parameter_value__] | |user_parameter_value_id | +-->|user_parameter_values_id| 1..n|user_parameter_value | +------------------------+ Struktura ta ma umożliwić zapis wielu wartości. Każdy parametr może być tablicą - określa to kolumna user_parameter.user_parameter_array. Jeśli parametr jest tablicą to wtedy w tabeli pośredniczącej user_parameter_values wciąż jest jeden wiersz, ponieważ pojedyńcza wartość jest zapisywana w user_parameter_value. Mój problem jest następujący - przy zmianie rozmiaru tablicy na mniejszy chcę usunąć zbędne rekordy z user_parameter_value. Na załączonym obrazku jest zaznaczone, że pomiędzy relacją user_parameter_values a user_parameter_value zachodzi związek 1..n. W rzeczywistości związek ten to 1..user_parameter.user_parameter_size. Jeżeli mam w takiej strukturze dane, powiedzmy.. numer telefonu określony jako tablicę o rozmiarze 3 i nagle decyduję się na zmniejszenie liczby numerów do 2 to pozostaje jeden zbyteczny wiersz. Utrudnieniem jest to, że całość jest realizowana przez tabelkę pośredniczącą. Czy ktoś wie jak rozwiązać mój problem? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%)
|
To troche odchodzi od zalozen baz danych. Jesli masz tablice i dodatkowo stosujedz 2 tabele aby to zobrazowac relacyjnie to w tym momencie dane sie duplikuja (powstaje nadmiarowosc) ktora moze prowadzic do bledow.
Mozesz zrezygnowac z tej tablicy i upychac w rekordy ktore podales i wtedy usuniecie jest banalna sprawa. 2 pomysl to np PG umozliwia zapisanie tablicy w DB i wtedy musislbys miec taki schemat aby wartosc / index z tego pola odpowiadalo rekordowi z user_parameter_value. Z tego co wiem to chyba zadna baza takich relacji nie oferuje. Przedstaw wiecej szczegolow zastosowania, moze wtedy bedzie jasniej. |
|
|
|
splatch Nietypowe zapytanie typu DELETE 28.03.2006, 13:00:43
splatch Ten sposób jest optymalny ponieważ w MySQL nic lep... 28.03.2006, 14:59:57 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 06:05 |