Vinnaren i pepparkakshustävlingen!
2013-03-12, 21:32
  #1
Medlem
droles avatar
Har inte jobbat med databaser så mycket men har tagit mig uppgiften att koda ett "register".
Går att jämföra med en webshop typ.

Slänge ihop strukturen i ett txt-fil lite snabbt, såhär blev det:
Kod:
category
	Mobilskal
		htc wildfire
		iphone
		samsung s3
	Leksaker
		leksaksbilar
		penslar
	Kepsar
		dc
		ny
		monster
		redbull
	Filmer
		action
		komendi
		drama
		krig
		familj
		animerat
	Bilar
		bmw
		toyota
		volvo

Första tanken var att skapa en tabell med namnet category och sedan en kolumn för varje kategori(t.ex Filmer) och sedan låta "underkategorierna" ligga som data.

Typ såhär, http://minfil.se/g7P5a2bab6/Capture.PNG
(ser helt sjukt ut när jag klistrar in det här)
Men då ipone och penslar inte har något att göra med varandra blir det fel också va?

Som sagt, inte jobbat mycket med databaser, vilket är det mest "korrekta" sättet att skriva detta på?
Citera
2013-03-12, 21:49
  #2
Medlem
Ghandi_IIs avatar
Jag hade gjort tre tabeller. En med produkter (produktid, produktnamn och annat du vill ha med), en med kategorier (kategoriid, kategoriparent, kategorinamn) och en kopplingstabell med kategoriid och produktid.

I kategorierna hade jag sedan skapatt huvudkategorier genom att säkta kategoriparent till 0, och sedan underkategorier genom att sätta kategoriparent till huvudkategorins id. På det sättet kan du ha olimiterat med kategorier altså under-under-kategorier osv. Du sätter bara kategoriparent till den kategorin du vill ha den nya kategorin under.

I kopplingstabellen kopplar du produkterna till kategori genom att sätta id på kategorin och id för produkten på en rad. På det sättet kan du ha samma produkt i flera kategorier om du vill.

Alla ids (förutom i kopplingstabellen då) sätter du som automatiskt ökande, med start på 1.
Citera
2013-03-12, 22:39
  #3
Moderator
Protons avatar
Citat:
Ursprungligen postat av Ghandi_II
Jag hade gjort tre tabeller. En med produkter (produktid, produktnamn och annat du vill ha med), en med kategorier (kategoriid, kategoriparent, kategorinamn) och en kopplingstabell med kategoriid och produktid.

I kategorierna hade jag sedan skapatt huvudkategorier genom att säkta kategoriparent till 0, och sedan underkategorier genom att sätta kategoriparent till huvudkategorins id. På det sättet kan du ha olimiterat med kategorier altså under-under-kategorier osv. Du sätter bara kategoriparent till den kategorin du vill ha den nya kategorin under.

I kopplingstabellen kopplar du produkterna till kategori genom att sätta id på kategorin och id för produkten på en rad. På det sättet kan du ha samma produkt i flera kategorier om du vill.

Alla ids (förutom i kopplingstabellen då) sätter du som automatiskt ökande, med start på 1.
Instämmer till fullo. Det där är en elegant lösning på problemet, dessutom tillåter den att kategorier tillkommer obegränsat framöver, något som hade blivit väldigt svårt och klumpigt med TS förslag, för att inte tala om att så gptt som varje SQL sedan framöver måste skrivas om om/när en kategori tillkommer för att få tag på den.

TS, läs igenom lösningen och implementera den, det kommer spara dig oändligt mer hårslitande framöver.
Citera
2013-03-13, 07:43
  #4
Medlem
droles avatar
Citat:
Ursprungligen postat av Ghandi_II
Jag hade gjort tre tabeller. En med produkter (produktid, produktnamn och annat du vill ha med), en med kategorier (kategoriid, kategoriparent, kategorinamn) och en kopplingstabell med kategoriid och produktid.

I kategorierna hade jag sedan skapatt huvudkategorier genom att säkta kategoriparent till 0, och sedan underkategorier genom att sätta kategoriparent till huvudkategorins id. På det sättet kan du ha olimiterat med kategorier altså under-under-kategorier osv. Du sätter bara kategoriparent till den kategorin du vill ha den nya kategorin under.

I kopplingstabellen kopplar du produkterna till kategori genom att sätta id på kategorin och id för produkten på en rad. På det sättet kan du ha samma produkt i flera kategorier om du vill.

Alla ids (förutom i kopplingstabellen då) sätter du som automatiskt ökande, med start på 1.
Typ såhär?: http://minfil.se/q1P3acb7bc/Capture.PNG

Stort tack för snabbt svar, ska se om jag hinner skriva ihop det ikväll.
Citera
2013-03-13, 07:51
  #5
Medlem
boppaloozs avatar
Citat:
Ursprungligen postat av drole
Typ såhär?: http://minfil.se/q1P3acb7bc/Capture.PNG

Stort tack för snabbt svar, ska se om jag hinner skriva ihop det ikväll.
Det såg rätt ut, men jag noterade at dom små grodorna inte fanns med i kopplingstabellen. Eftersom den query du kommer att skapa och använda för att hitta dina prylar troligtvis kommer att innehålla någon form av join med kopplingstabellen så kommer du inte att hitta grodorna förrän dom kommer med i tabellen också. Jag vet att det bara var ett exempel, men såna där "föräldralösa" records eller zombies kan ge en del problem i hanteringen av systemet. Exempelvis så går det kanske inte att lägga in grodorna igen eftersom dom redan finns, trots att dom inte syns då, och eftersom man inte hittar dem så går dom inte heller att ta bort utan att öppna en SQL-konsoll.
__________________
Senast redigerad av boppalooz 2013-03-13 kl. 08:06.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback