Avatar billede Zauha Juniormester
28. januar 2018 - 12:36 Der er 1 kommentar og
3 løsninger

Relationelle Databaser

Hej, jeg har fået et spørgsmål jeg er lidt usikker på, i forbindelse med vores database, som anvendes i vores desktop- og webapplikation. Det forholder sig således at vi har lavet et bestillings system til en kantine, så kunderne kan bestille og betale på forhånd, og bare afhente maden, for at mindske spisbelastning og ventetid.
  Det, som spørgsmålet drejer sig om, er min database sammenhæng. Vi har en tabel for alle oprette produkter, og en for ugen dage. Kantine har en rutine med at servere det samme mad hver dag, med få variationer fra dag til dag, men stadig faste, altså således at dagens ret er stegt flæsk hver fredag eller sådan. Så vi har gjort det således at vi har givet disse to tabeller en mange, til mange relation (ny tabel med primærnøglen fra rækkerne fra begge tabeller), så var spørgsmålet, hvis det ønskes at slette en dag, hvor vil nøglen fra produkterne så pege hen?
og af nysgerrighed, hvis vi forestillede sig at vi have en tabel med kun en dag af gangen i, så den altid kun har en række, og så slettes og laves ny sendere, når den dag som så er opgivet i tabellen slettes og der, så dermed ingen info er i tabellen med dag er, hvor vil referencen fra varende så pege hen?
- Jeg håber i kan give mig et indblik i dette spørgsmål
Avatar billede claes57 Ekspert
28. januar 2018 - 12:58 #1
en tabel med produkter, og en tabel med arbejdsdage (hvor kantinen er åben)
og så en tabel imellem med et link til en dag og et produkt (som serveres den dag) - det vil være flere records pr dag så hele dagens menuvalg er med.
Du piller så ikke ved de første to tabeller, men kun i den i midten (dagens menu tabel)
Hvis du sletter alle records i 'dagens menu' for en given dag, så er den bare tom - men produkter og kalender er stadig intakte.
I tabellen Produkter skal de enkelte produkter have en id så 'Dagens menu' kun linker til id-nummeret. Det for at sikre, at en gammel 'boller i carry' kan udgå, og en ny ret 'boller i carry' kan komme ind med anden opskrift/pris (og anden id)
Avatar billede arne_v Ekspert
28. januar 2018 - 16:36 #2
Rent praktisk har Claes ret i at man normalt bare vil slette i sammenbindings tabellen.

Men hvis du sletter i dag tabellern saa afhaenger hvad der sker af definitionen:

ingen relation defineret i selve databasen => du faar inkonsistente data

relation defineret uden cascade delete => du faar en fejl ved slet

relation defineret med cascade delete => der slettes automatisk i sammenbindings tabellen
Avatar billede claes57 Ekspert
28. januar 2018 - 16:51 #3
Der er så derfor, jeg vil foreslå et 'udgået' felt i produkt-tabellen, så der ikke kan planlægges menuer fremover med udgåede opskrifter. Så undgår man at skulle slette i produkter, og man kan slå tilbage i gamle menuer og se dem.
Avatar billede Zauha Juniormester
28. januar 2018 - 18:46 #4
Jeg siger mange tak for assistancen :)
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