Avatar billede flashdevil Nybegynder
05. september 2010 - 12:53 Der er 9 kommentarer

Flere id'er I et felt

Hejsa,

Er igang med et lille projekt og nu er jeg sku bange for at jeg har bygget det lidt forkert op.


Jeg har en Bil Tabel som ser ca. sådan her ud
id  -  Producent    - Farve  - model  - EkstraUdstyr
1          2            3        2          2
2          1            8      10          3

Jeg har så en række tabeller som representere "kategorierne":

Producent
1 - Volvo
2 - BMW
3 - Audi

Farve
1 - Rød
2 - Grøn
3 - Blå

Det fungere sådan set også fint indtil jeg idag kom til kategorien "EkstraUdstyr"

EkstraUdstyr
1 - Alarm
2 - Soltag
3 - Træk

Her har jeg så balladen at der kan være flere ting der passer på en bil. Den kan jo godt både have Alarm, soltage og Træk.

Så tænker jeg at min "bil tabel" burde være noget ala dette:

id  -  Producent    - Farve  - model  - EkstraUdstyr
1          2            3        2          1,2,3
2          1            8      10          2,4,5

Men kan man det ?

Kan smide flere "id'er" ind i det samme felt feks. "2,4,5" istedet for kun f.eks. "2". ?

Og hvis man kan hvordan skal ens INSERT ca se ud ?

Eller er det en helt tosset måde at gøre det på ?

På Forhånd tak for hjælpen.
Avatar billede ggxdg Nybegynder
05. september 2010 - 13:42 #1
Lav flere tabeller der referer til en hovedtabel...


tabel: tbl_il
id  Producent  Farve
1  2          2
2  1          10
3  5          28

tabel: tbl_model
id  ref_id  model
1  1      2
2  1      4
3  1      17
4  2      1
5  2      7
6  2      3

tabel: tbl_ekstra
id  ref_id  ekstra
1  1      15
2  1      19
3  1      1
4  1      10
5  2      8
6  2      12
7  2      19
Avatar billede flashdevil Nybegynder
05. september 2010 - 14:08 #2
Beklager, men det tror jeg ikke helt jeg forstår..
Avatar billede flashdevil Nybegynder
05. september 2010 - 14:11 #3
Der skal vel ikke oprettets en helt ny tabel ( Hvis det er det der menes )for hver bil der bliver oprettet eller ?
Avatar billede zynzz Praktikant
05. september 2010 - 16:05 #4
Som du skriver kan man sagtens smide flere id`s i samme felt, det var nok også sådan jeg ville gøre...
Avatar billede flashdevil Nybegynder
05. september 2010 - 17:57 #5
Zynzz....Hvordan gør med mon det ?

Lige nu gør jeg sådan her med et Id

$query = "INSERT INTO $dbtabel (Producent, Farve, EkstraUdstyr)
          VALUES('$Producent', '$Farve', '$EkstraUdstyr ')";

hvor "$" variablerne indeholder et tal.
Avatar billede showsource Seniormester
06. september 2010 - 08:27 #6
Jeg ville gøre som xxdgx, altså lave en tabel med ekstraudstyr.
ekstra:
1 - soltag
2 - aircondition
3 - gps

Og for hver ting som er ekstra, laves et row med ref til biltabel og ref til ekstraudstyr

bilekstra:

id, bilid, ekstraid

1 - 1 - 2
2 - 1 - 3
3 - 2 - 1
4 - 2 - 3

Det er aldrig nogen go' ide at bruge komma på den anden måde.
Avatar billede danco Nybegynder
07. september 2010 - 07:53 #7
Af hensyn til din database så vil jeg ikke anbefale dig at smide flere værdier ind i samme felt. Det strider direkte med normalisering af databasen. 
Derimod ville jeg gøre ligesom andre allerede har været inde på.

Tabel: bil
id -  producent  -  model
1        2            4
2        3            3
3        2            5

Tabel: Ekstraudstyr
id  -  extra
1      GPS
2      aircon
3      GPS

Tabel:  bil-extra
bil  -  extra
1        3
4        1
1        2

I tabellen "bil-extra" er de to kolonner en sammensat primærnøgle med en fremmenøgle til deres respektive tabeller. Bemærk venligst at bil repræsentere den id der er tildelt i bil-tabellen.
Avatar billede showsource Seniormester
15. september 2010 - 08:55 #8
Har du fundet ud af noget ?

danco => En primær nøgle, kan der være flere rows med ens værdier ?
Jeg ville lave index på de to kolonner.
Avatar billede danco Nybegynder
15. september 2010 - 15:47 #9
Snow;
Primær nøglen udpeger jo én og kun én tupel (række i tabellen), så derfor er primærnøglen altid unik.
Hvis du tænker på min bil-extra tabel så er det en sammensat primær nøgle af id til bil og id til extraudstyr. Derfor er en kombinationen af de 2 tal der er unik.
Hvis du derimod tænker på extraudstyr tabellen så opdagede jeg lige at jeg havde sat to rækker med GPS, det er naturligvis bare en fejl jeg begik da jeg skrev op, der skal kun være én tupel der er repræsenterer GPS.
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