Avatar billede StotheT Nybegynder
22. maj 2013 - 17:44 Der er 17 kommentarer

Hjælp til database kolonne

Jeg kunne godt tænke mig at programmere et system hvor man kan udlåne ting til folk.
Udlånene skal ligge i en MySQL database. Der skal være to tabeller, en til selve udlånene og en til produkterne.  I en af de to tabeller skal der være en kolonne som kan stå som: Udlånt, afleveret, stjålet eller i stykker.

Men i hvilken af tabellerne skal dette stå? på selve udlånet eller på produktet?
Avatar billede arne_v Ekspert
22. maj 2013 - 18:04 #1
det skal vel vaere produktet
Avatar billede StotheT Nybegynder
22. maj 2013 - 18:11 #2
Problemet kan være at hvis vi nu har to personer som har lånt og afleveret samme produkt og man ændre status på den en til udlånt igen så vil det andet udlånt også stå til udlånt fordi det referrer til samme produkt.
Avatar billede arne_v Ekspert
22. maj 2013 - 18:19 #3
Ja og nej.

Produktet har en status: Udlånt, afleveret, stjålet eller i stykker.

Den status er nuvaerende status.

Et udlaan har ogsaa noget.

Du kan bruge status: udlånt og afleveret.

Du kan bruge aktiv: true og false.

Men et udlaan kan aldrig have status stjålet eller i stykker.
Avatar billede StotheT Nybegynder
22. maj 2013 - 18:21 #4
Så jeg skal have en kolonne med status i hver tabel?
Med ovenstående status muligheder.

Det bliver lidt kringlet i PHP tror jeg.
Avatar billede arne_v Ekspert
22. maj 2013 - 18:33 #5
Det bliver da mere kringlet med en forkert database struktur.
Avatar billede StotheT Nybegynder
22. maj 2013 - 18:39 #6
Det er rigtigt.

Hver gang man ændre status skal der ændres i begge kolonner i begge tabeller.

produkt - udlån

Udlånt - Udlånt
Afleveret - afleveret
Stjålet - udlånt
i stykker - afleveret
Avatar billede arne_v Ekspert
22. maj 2013 - 18:52 #7
Men er det et problem?

Du kunne lade produkt have status: ok, stjaalet og istykker, og udlaan have aktiv: true/false.

Saa skulle du kun aendre et sted ved normal brug.

Men det vil vaere besvaerligt at skulle checke i udlaan tabellen for at se om noget er udlaant.
Avatar billede StotheT Nybegynder
22. maj 2013 - 19:14 #8
Men jeg kunne også godt tænke mig at man får vist om produktet er lånt, stjålet, i stykker eller afleveret når man søger efter en person og man ser historikken. På samme måde som når man søger efter et produkt på serienummeret og ser statusen.
Avatar billede arne_v Ekspert
22. maj 2013 - 19:20 #9
Det kan loeses ved at joine tabellerne, naar du slaar en persons laan op.
Avatar billede StotheT Nybegynder
22. maj 2013 - 19:58 #10
Kan du give et eksempel.
Avatar billede arne_v Ekspert
22. maj 2013 - 21:00 #11
Et eksempel paa join??
Avatar billede StotheT Nybegynder
23. maj 2013 - 19:12 #12
Der skal stå de samme statuser begge steder men når man markere det som afslutet på udlånet skal der stå "afsluttet" under persons udlån - men hvis man så søger efter produktet skal der ikke stå afleveret men disponibel.
Avatar billede arne_v Ekspert
23. maj 2013 - 19:17 #13
Du opdaterer 2 tabeller med 2 x UPDATE. Brug transactions for at udgaa inkonsistens.

Din applikation kan erstatte tekster med hvad du maatte oenske.
Avatar billede StotheT Nybegynder
23. maj 2013 - 19:34 #14
Når på denne måde.

produkt                Udlån

Udlånt                 Udlånt
Afsluttet              Disponibel
Totalskadet        Totalskadet
Stjålet                  Stjålet

Hvad mener du med transactions?
dubletter?
Avatar billede StotheT Nybegynder
25. maj 2013 - 15:23 #15
?
Avatar billede arne_v Ekspert
25. maj 2013 - 15:46 #16
Avatar billede arne_v Ekspert
30. juli 2013 - 04:50 #17
OK?
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

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