webForumDet fria alternativet

Databasstruktur

9 svar · 521 visningar · startad av LAMP

LAMPMedlem sedan mars 2002777 inlägg
#1

Hej

jag skulle vilja ha lite synpunkter och förslag på följande artikelsystem. Ändringar och förbättringar?

Ny tabellstruktur:			Beskrivning:			Exempel:

Tabell Kategori:

* intId (räknare, mediumint, (2))	(Huvudkategori id unikt)	20
  strKat (varchar, (150)) 		(Namn på huvudkategori)		Datorer

Tabell subKategori:

  intSubKatId (Räknare, mediumint, (2))	(Subkategori id unikt)		62
  strSubKatNamn (varchar, (150))	(Namn på Subkategori)		Hårdvara
* intKatId (mediumint, (2))		(Huvudkategori id)		20

Tabell Artikel:

  intArtikelId (räknare, int(5))	(artikel id unikt)
* intKatId (mediumint, (2))						20
  intKategori (mediumint, (2))						62
  strArtikelRubrik (varchar, (150))
  strSkribent (varchar, (30)) 
  dtePubDate (datetime, (0000-00-00 00:00:00))
  strText mediumtext 
  strSkribentEpost (varchar, (100))

* = relation
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Varför har du med intKatid i tabellen Artikel? Det räcker ju att intKategori har en relation till subkategori.

Jag skulle nog lägga information om skribenter i en egen tabell.

LAMPMedlem sedan mars 2002777 inlägg
#3

Varför har du med intKatid i tabellen Artikel? Det räcker ju att intKategori har en relation till subkategori.

Det har du så rätt i, blind är man ibland. :)

Informationen om skribenten tål att tänkas vidare på.

Jag kom på en fundering till. Man vill helst ha med lite bilder i en artikel. Artiklarna kommer bli av förklarande karaktär.

Hur gör man på ett smart sätt (databasstrukturmässigt) för att kunna lägga in varierat antal bilder på ett enkelt sätt. mysql:s inbyggda funktioner i select-frågor är minst sagt begränsade.

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Det får bli en tabell till där du har artikelID och sökväg till bilden.

mysql:s inbyggda funktioner i select-frågor är minst sagt begränsade.

Visserligen håller jag med, men hur kommer det in i bilden?

LAMPMedlem sedan mars 2002777 inlägg
#5

Visserligen håller jag med, men hur kommer det in i bilden?

Det blir mer komplicerat att hämta ut rätt data på ett effektivt sätt. Är då tabellstrukturen undermålig blir det ännu svårare. Därför bör man tänka till lite extra i databasstrukturen till en mysql databas för att man har sämre verktyg än med t ex sql-server.

LAMPMedlem sedan mars 2002777 inlägg
#6

Nu är jag tillbaka, lika frågvis som innan.

Nu blir det i följande steg:

Kategori --> Subkategori --> Artikelrubrik

Men allt eftersom sidan växer behöver man kanske:

Kategori --> Subkategori --> Subkategori2 --> Artikelrubrik

Hur bör man förändra ovanstående struktur så det är möjligt att i viss mån göra subkategorier mer flexibelt. Kan man med mysql:s select-verktyg ha.

Kategori --> Subkategori --> Subkategori2 --> Artikelrubrik

utan rekursion? Jag tänkte ha ovanstående som maxdjup. Om inte hur bör strukturen förändras och hur bygger man en sql-fråga som loopar ut:

Kategori
Subkategori
Subkategori2
Artikelrubrik

Tacksam för förslag.

TimMedlem sedan jan. 2002115 inlägg
#7

Hej, jag måste få passa på att fråga detta.

Är det bättre att dela upp artikel strukturen på flera tabeller än att ha allt i en tabell? Går det snabbare kanske?

LAMPMedlem sedan mars 2002777 inlägg
#8

Jag använder strukturen ovan med små förändringar som du tyckte LarsG. Tack för dina synpunkter!

Nu ska jag generera en meny utifrån detta. Jag använder följande kod.

Kan man göra på ett enklare sätt?

Tacksam för synpunkter ;)

sql ="SELECT strHeader1Name, intHeader1Id FROM header1 ORDER BY strHeader1Name ASC"
arrHeader1 = con.Execute(sql).GetRows()

For I = 0 To UBound(arrHeader1,2)

strHeader1 = arrHeader1(0,I)
intHeader1Id = arrHeader1(1,I)

Response.Write "<p><b>" & strHeader1 &"</b></p>"

sqlstmt ="SELECT strHeader2Name, intCurrentHeader1Id FROM header2 WHERE intCurrentHeader1Id = "&intHeader1Id&" ORDER BY strHeader2Name ASC"
arrHeader2 = con.Execute(sqlstmt).GetRows()

For Z = 0 To UBound(arrHeader2,2)

strHeader2 = arrHeader2(0,Z)
intHeader2Id = arrHeader2(1,Z)

Response.Write "<p>&nbsp;&nbsp;" & strHeader2 &"</p>"

Next 
Next
LAMPMedlem sedan mars 2002777 inlägg
#9

Ingen som har en synpunkt?

BrimbaMedlem sedan dec. 19995 875 inlägg
#10

Varför vill du inte använda rekursion?

127 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)