Avatar billede taae Juniormester
18. november 2005 - 22:22 Der er 7 kommentarer og
1 løsning

Problem med design af database

Jeg har tegnet en skitse over en database, men jeg har et problem som jeg ska ha hjælp til.

Jeg har en klasse med 6 bilmærker [Audi,bmw,ford.....]

hver af disse mærker er linket til klasser hvor deres modeller findes. Fx er Audi's modeller [A3,A4,A6] i en klasse for sig. Bmw er linket til en klasse hvor modeller [320,520,750] findes osv.

Men det betyder at alle bilmærker skal have keys tilknyttet for at jeg kan lave link mellem dem og deres modeller, og det må man jo ikke !!!

Nogen forslag til det !
Avatar billede taae Juniormester
19. november 2005 - 19:42 #1
lidt modificering i ovenstående :

Jeg har en klasse som består af en enkel attribut BilMaerke[ Maerke varchar(20)].

Her har jeg så 6 felter stående: [Audi, bmw, ford,......].

Nu vil jeg gerne ha det sådan at når jeg vælger Audi fra BilMaerke i en combobox, så skal databasen automatisk hente dens modeller fra en anden tabel AudiModel[Model varchar (20)]. Modeller kan være (A3,A4,A6) og liste dem ind under en anden combox.

Problemet med min BilMaerke klasse er så at jeg skal ha en primærnøgle for hver bilmærke, hvilket jeg ikke kan gøre.

Er der en anden smart måde jeg kunne bruge for at komme ud af dette problem ???
Avatar billede arne_v Ekspert
19. november 2005 - 20:57 #2
altså du i databasen har su:

carbrand
  name varchar(20) PK
  country varchar(20)

(med 6 rækker: Audi, BMW, ...)

carmodel:
  carbrand varchar(20) delt PK & FK->carbrand.name
  name varchar(20) delt PK

(med 3 rækker for Audi + 3 rækker for BMW etc.)

som så bliver mappet til

public class CarBrand {
    public String name;
    public String country;
    public ArrayList models;
    ...
}

public class CarModel {
    public String name;
    public CarBrand carbrand;
    ...
}

og i visning er vi ovre i noget som i spørgsmålet i JSP kategorien.
Avatar billede touel Nybegynder
19. november 2005 - 23:09 #3
hmm... ja. Lige for at være sikker på hva du har skrevet : I tabellen carmodel, der er carbrand.name en pk og fk og name (som er model) en anden pk ?
Avatar billede arne_v Ekspert
19. november 2005 - 23:10 #4
nej - det er 1 pk bestående af 2 felter
Avatar billede taae Juniormester
19. november 2005 - 23:51 #5
Altså: du skriver

carmodel:
"carbrand varchar(20)delt pk & fk " = Her er carbrand.name både pk og fk.

"-> carbrand.name" = forstår jeg ikke

"name varchar (20)delt pk" = forstår jeg som værende model af ex. Audi, og er pk her

arne du er sød, hvis du lige omformulere carmodel tabellen. jeg kan ikke forstå den
Avatar billede arne_v Ekspert
19. november 2005 - 23:53 #6
CREATE TABLE carmodel (
    carbrand VARCHAR(20),
    name VARCHAR(20),
    PRIMARY KEY(carbrand,name)
);
Avatar billede taae Juniormester
22. november 2005 - 22:54 #7
takker for hjælpen. svar
Avatar billede arne_v Ekspert
22. november 2005 - 22:56 #8
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
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