Avatar billede jones Nybegynder
27. september 2008 - 10:08 Der er 9 kommentarer og
1 løsning

Hjælp til opbygning pris database ala edbpriser

Hej

Vel gerne havde lidt sparring omkring en database jeg skal oprette.

Databasen er en prisdatabase som kan sammenlignes lidt med den edbpriser.dk har.

altså jeg har en masse virksomheder som sælger vare fra forskellige producenter, til en forskellig pris.

Dette kunne fx. være

Butik: hansens supermarket
vare: oma stegemagarine
vægt: 100g
pris: 8,95

butik: Jensens supermarked
vare: oma stegemagarine
vægt: 100g
pris: 5.95

altså der er kun en vare med der kan være mange forskellige butikker og priser.

edbpriser.dk er lidt på samme måde hvor der er én vare, men mange forskellige butikker og priser.
Avatar billede jones Nybegynder
27. september 2008 - 10:08 #1
Har dette indtil videre

CREATE TABLE `butik` (
  `butikid` int(255) NOT NULL auto_increment,
  `butiksnavn` varchar(100) NOT NULL,
  PRIMARY KEY  (`butikid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

CREATE TABLE `pris` (
  `prisid` int(100) NOT NULL auto_increment,
  `pris` varchar(10000) NOT NULL,
  `butik_butikid` int(100) NOT NULL,
  `vare_vareid` int(100) NOT NULL,
  PRIMARY KEY  (`prisid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;


CREATE TABLE `producent` (
  `producentid` int(255) NOT NULL auto_increment,
  `producent` varchar(255) NOT NULL,
  PRIMARY KEY  (`producentid`),
  UNIQUE KEY `producent` (`producent`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;



CREATE TABLE `vare` (
  `vareid` int(10) NOT NULL auto_increment,
  `varenavn` varchar(10) NOT NULL,
  `producent_id` int(100) NOT NULL,
  `storrelse` varchar(50) NOT NULL,
  PRIMARY KEY  (`vareid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;
Avatar billede arne_v Ekspert
28. september 2008 - 00:57 #2
Dine størrelser ser meget mystiske ud INT(100), VARCHAR(10000) etc..

Jeg tror at jeg ville droppe prisid og bruge en 2 felts primary key.

Der må mangle en masse oplysninger om både butik og vare.
Avatar billede jones Nybegynder
28. september 2008 - 10:17 #3
Hmm, kan godt se at værdierne er lidt mærkelige ud.
og ja der mangler en del oplysninger, men grundlæggende.

Så pris ville du lave sådan her ??

CREATE TABLE `pris` (
  `pris` float NOT NULL,
  `butik_butikid` int(10) unsigned NOT NULL,
  `vare_vareid` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`butik_butikid`,`vare_vareid`)

hvad er fordelen ved 2 felters primary key. Bedre index??

Ellers andet du ville foreslå.
Avatar billede arne_v Ekspert
28. september 2008 - 13:03 #4
Ja sådan.

Jeg tror aldrig at du ville bruge den prisid til noget som helst og så er der ingen grund
til at have den.
Avatar billede arne_v Ekspert
28. september 2008 - 13:03 #5
Hvad med historik (pris over tid) ?
Avatar billede jones Nybegynder
28. september 2008 - 13:23 #6
Ja den får jeg nok ikke brug for.
Tjo pris historik kunne være rart, men kan ikke helt greje hvordan det skulle laves, ville man lave den i en helt ny tabel ?? eller udvide pris tabelen ?
Avatar billede arne_v Ekspert
28. september 2008 - 14:12 #7
så skulle der nok start og slut tid på i pris tabellen (eller måske i en
pris historik tabel)
Avatar billede jones Nybegynder
28. september 2008 - 14:45 #8
ahh, ja start og slut tidspunkt, når man så skal finde nyeste søger man på dato :)

Tak for hjælpen.

læg et svar
Avatar billede arne_v Ekspert
28. september 2008 - 15:01 #9
jeg ville overveje den separate tabel - mange queries ville blive pænere på den måde
Avatar billede arne_v Ekspert
28. september 2008 - 15:01 #10
og svar
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



IT-JOB

FlexDanmark

FlexDanmark Direktør

Udviklings- og Forenklingsstyrelsen

Alsidig testmanager til udvikling af vigtige IT-systemer

Metroselskabet og Hovedstadens Letbane

Cyber Security Konsulent

Udviklings- og Forenklingsstyrelsen

Engageret platformsejer med flair for it-drift