Avatar billede mysitesolution Nybegynder
20. september 2008 - 19:12 Der er 12 kommentarer og
1 løsning

Foreign keys, automatisk sletning

Hvis jeg har 2 tabeller:

Firma
-Navn VARCHAR
-Adresse INT, FOREIGN KEY til Adresser

Adresser
-ID INT
-By VARCHAR

Hvordan gør jeg så, så hvis jeg sletter firmaet, så bliver adressen også slettet? Er jeg nød til at bruge 2 delete queries eller kan det gøres anderledes så databasen får bedre integritet?
Avatar billede arne_v Ekspert
20. september 2008 - 19:21 #1
du kan bruge CASACADE DELETE
Avatar billede mysitesolution Nybegynder
20. september 2008 - 19:23 #3
Men er det ikke omvendt? altså så når jeg sletter adressen bliver firmaet slettet? eller fungerer det begge veje
Avatar billede arne_v Ekspert
20. september 2008 - 19:56 #4
Med den maade din tabel struktur er paa saa er det adresser sletning som skal trigge
firma sletning.

Du har 1 adresse -> mange firmaer og derfor kan en firma sletning ikke slette adressr.
Avatar billede mysitesolution Nybegynder
20. september 2008 - 19:59 #5
Kan jeg strukturere det anderledes så? Vil jo bare heller ikke have at der kan være 10 forskellige andresser til 1 firma
Avatar billede arne_v Ekspert
20. september 2008 - 20:03 #6
1 adresse -> mange firmaer => sletning af adresse sletter firma
1 firma -> mange adresser => sletning af firma sletter adresser
1 firma -> 1 adress => kun en tabel saa intet problem
Avatar billede mysitesolution Nybegynder
20. september 2008 - 20:13 #7
grunden til at jeg har lavet en tabel kun for adresser, er at jeg også skal bruge adresser i andre tabeller og så antager jeg at det er mere effektivt og lettere at udvide på måde.

Men dvs. at der faktisk ikke er noget godt nok svar på mit spørgsmål?
Avatar billede arne_v Ekspert
20. september 2008 - 20:55 #8
Du kan ikke baade genbruge den samme adresse i flere sammenhaenge og slette adresse automatisk
naar en af dem der henviser til den bliver slettet.
Avatar billede erikjacobsen Ekspert
20. september 2008 - 22:32 #9
En adresse, der ikke bliver brugt er vel ligemeget - den fylder lidt, men skader ikke. Du kan så en gang imellem, fx en gang om måneden, løbe dine tabeller igennem, og finde de adresser, der ikke længere bruges, og slette dem.

Eller - min anbefaling - lave din struktur af databasen lidt om. Databaser er beregnet til at håndtere data, og der er ingen fidus i at du forsøger at spare et par bytes hist og her.
Avatar billede mysitesolution Nybegynder
21. september 2008 - 14:08 #10
Er også ligeglad med pladsen, har vel ikke sagt andet? vil bare have det effektivt, og så synes jeg integritet er yderst vigtigt
Avatar billede arne_v Ekspert
25. oktober 2008 - 23:08 #11
Tid at få afsluttet her ?
Avatar billede mysitesolution Nybegynder
25. oktober 2008 - 23:19 #12
Den er vel egentlig ikke lukket, da der ikke er blevet svaret tilbage. Men ok... opret svar
Avatar billede arne_v Ekspert
25. oktober 2008 - 23:32 #13
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester