Co zrobić jak ktoś usunie rekord zeby nie stracic informacji
olo - 26-07-2006 01:30
Co zrobić jak ktoś usunie rekord zeby nie stracic informacji
Witam, dwie tabele w relacji poprzez klucz MiejscaPracyID
Tabela1: Osoby: { ID Imie, Nazwisko, MiejscaPracyID }
Tabela2: MiejscaPracy { ID, Nazwa, Adres }
I teraz co zrobić jak ktos usunie z tabeli MiejscaPracy jakiś rekord którego klucz jest już wykorzystany w tabeli Osoby? Jak rozwiazujecie taki problem? Czy powiadamiacie uzytkownika ze usuniecie rekordu wiaze się z utrata danych ? Czy po usunieciu rekordu z tabeli MiejscaPracy w tabeli osoby MiejscePracy ustawiacie na NULL ? Rozwiazaniem moze być usuniecie relacji i dodanie pól z tabeli MiejscaPracy do tabeli Osoby jednak chyba gubimy wtedy normalizacje.
Michał Kuratczyk - 26-07-2006 01:30
olo wrote: > I teraz co zrobić jak ktos usunie z tabeli MiejscaPracy jakiś rekord > którego klucz jest już wykorzystany w tabeli Osoby? Jak rozwiazujecie taki > problem? Czy powiadamiacie uzytkownika ze usuniecie rekordu wiaze się z > utrata danych ? Czy po usunieciu rekordu z tabeli MiejscaPracy w tabeli > osoby MiejscePracy ustawiacie na NULL ? Definiując constrainta mówisz co ma się stać w takiej sytuacji (np. ON DELETE CASCADE). A co ma się stać, to wiesz tylko Ty, bo to wynika z wymagań danego systemu.
> Rozwiazaniem moze być usuniecie relacji i dodanie pól z tabeli > MiejscaPracy do tabeli Osoby jednak chyba gubimy wtedy normalizacje. Ano "gubimy" i tym samym tworzymy sobie inne problemy.
-- Michał Kuratczyk
sg - 26-07-2006 01:30
olo napisał(a): > Witam, > dwie tabele w relacji poprzez klucz MiejscaPracyID > > Tabela1: > Osoby: > { > ID > Imie, Nazwisko, MiejscaPracyID > } > > Tabela2: > MiejscaPracy > { > ID, > Nazwa, > Adres > } > > > I teraz co zrobić jak ktos usunie z tabeli MiejscaPracy jakiś rekord którego > klucz jest już wykorzystany w tabeli Osoby? Jak rozwiazujecie taki problem? > Czy powiadamiacie uzytkownika ze usuniecie rekordu wiaze się z utratadanych > ? Czy po usunieciu rekordu z tabeli MiejscaPracy w tabeli osoby MiejscePracy > ustawiacie na NULL ? Rozwiazaniem moze być usuniecie relacji i dodanie pól z > tabeli MiejscaPracy do tabeli Osoby jednak chyba gubimy wtedy normalizacje. > >
normalnie... definujesz to powiązanie jako klucz obcy i już nie da się usunąć bo baza na to nie pozwoli, a użytkownik dostaje komunikat, że tego nie można usunąć, bo jest gdzieś wykorzystywane
Mikolaj Rydzewski - 26-07-2006 01:31
olo <a@a.pl> wrote: > I teraz co zrobić jak ktos usunie z tabeli MiejscaPracy jakiś rekord którego > klucz jest już wykorzystany w tabeli Osoby? Jak rozwiazujecie taki problem? > Czy powiadamiacie uzytkownika ze usuniecie rekordu wiaze się z utrata danych > ? Czy po usunieciu rekordu z tabeli MiejscaPracy w tabeli osoby MiejscePracy > ustawiacie na NULL ? Rozwiazaniem moze być usuniecie relacji i dodanie pól z > tabeli MiejscaPracy do tabeli Osoby jednak chyba gubimy wtedy normalizacje.
To co to za relacja skoro mozna takie jaja wyczyniac? Mozna dodac do miejsca_pracy pole w rodzaju 'widoczne/aktywne' i dane pozostana spojne.
-- Mikolaj Rydzewski <miki@ceti.pl> http://ceti.pl/~miki/ PGP KeyID: 8b12ab02 There are three kinds of people: men, women, and unix.
Paweł Matejski - 26-07-2006 01:31
olo wrote: > Witam, > dwie tabele w relacji poprzez klucz MiejscaPracyID > > Tabela1: > Osoby: > { > ID > Imie, Nazwisko, MiejscaPracyID > } > > Tabela2: > MiejscaPracy > { > ID, > Nazwa, > Adres > } > > > I teraz co zrobić jak ktos usunie z tabeli MiejscaPracy jakiś rekord którego > klucz jest już wykorzystany w tabeli Osoby? Jak rozwiazujecie taki problem? > Czy powiadamiacie uzytkownika ze usuniecie rekordu wiaze się z utrata danych > ? Czy po usunieciu rekordu z tabeli MiejscaPracy w tabeli osoby MiejscePracy > ustawiacie na NULL ? Rozwiazaniem moze być usuniecie relacji i dodanie pól z > tabeli MiejscaPracy do tabeli Osoby jednak chyba gubimy wtedy normalizacje.
W podobnych przypadkach, nie pozwalam usunąć, dopóki istnieją dane powiązane. W innych razem z rekordem nadrzędnym kasuje powiązane.
-- P.M.
Radosław Witkowicki - 26-07-2006 01:31
olo napisał(a): > Witam, > dwie tabele w relacji poprzez klucz MiejscaPracyID > > Tabela1: > Osoby: > { > ID > Imie, Nazwisko, MiejscaPracyID > } > > Tabela2: > MiejscaPracy > { > ID, > Nazwa, > Adres > } > > > I teraz co zrobić jak ktos usunie z tabeli MiejscaPracy jakiś rekord którego > klucz jest już wykorzystany w tabeli Osoby? Jak rozwiazujecie taki problem? > Czy powiadamiacie uzytkownika ze usuniecie rekordu wiaze się z utrata danych > ? Czy po usunieciu rekordu z tabeli MiejscaPracy w tabeli osoby MiejscePracy > ustawiacie na NULL ? Rozwiazaniem moze być usuniecie relacji i dodanie pól z > tabeli MiejscaPracy do tabeli Osoby jednak chyba gubimy wtedy normalizacje. > >
Koledzy wyżej dobrze Ci odpisali. A jeszcze dorzucę swoje trzy grosze ;), jeśli piszesz o normalizacji to stosuj się do tego. Z tego co widzę, bo twój projekt, mimo iż jest taki mały nie spełnia w ogóle celów normalizacji. Spójrz na tabelę2, IPN i 3PN leżą.
Rafal sxat - 27-07-2006 01:59
> > I teraz co zrobić jak ktos usunie z tabeli MiejscaPracy jakiś rekord którego > > klucz jest już wykorzystany w tabeli Osoby? Jak rozwiazujecie taki problem? > > Czy powiadamiacie uzytkownika ze usuniecie rekordu wiaze się z utrata danych > > ? Czy po usunieciu rekordu z tabeli MiejscaPracy w tabeli osoby MiejscePracy > > ustawiacie na NULL ? Rozwiazaniem moze być usuniecie relacji i dodanie pól z > > tabeli MiejscaPracy do tabeli Osoby jednak chyba gubimy wtedy normalizacje.
nic sie nie usuwa - to jest kiepsciuni pomysl
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?=
[MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?=
Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?=
[mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?=
=?ISO-8859-2?Q?WY=B6wietlenie_rekord=F3w_pocz=B1wszy_od_?==?I SO-8859-2?Q?danej_litery=2E=2E=2E?=
=?iso-8859-2?Q?=5BMySQL=5D_Wy=B6wietlenie_wszystkich_rekordow _zawierajacy?==?iso-8859-2?Q?ch_duplikat_a__moze_inna_struktura_bazy_danych ?=
[pgsql] Akcja w =?iso-8859-2?b?emFsZb9ub7ZjaQ==?= od liczby zmienionych =?iso-8859-1?q?rekord=F3w?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[mysql] Wyszukanie =?ISO-8859-2?Q?rekord=F3w=28powiazane_tabel?==?ISO-8859-2?Q?e=29?=
[MySQL]: Dodanie zliczania =?ISO-8859-2?Q?rekord=F3w_do_rozb?==?ISO-8859-2?Q?udowanego_zapytania?=
zanotowane.pldoc.pisz.plpdf.pisz.plwawa19wwa91.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|