Vinnaren i pepparkakshustävlingen!
2013-02-23, 17:07
  #1
Medlem
Jag håller på med ett Er-diagram för en databas om tidningsartiklar. Artiklarna ska sökas på datum, och innehålla huvudkategorier som sport, kultur mm. Till dessa ska sedan kopplas skidor, fotboll mm (för Sport), teater, film mm (för Kultur) osv. Jag förstår att jag ska använda korskopplingar, men förstår inte hur jag ska uttrycka det i diagrammet.
Kan någon hjälpa mig?

// Bellajonna
Citera
2013-02-23, 17:13
  #2
Medlem
Citat:
Ursprungligen postat av bellajonna
Jag håller på med ett Er-diagram för en databas om tidningsartiklar. Artiklarna ska sökas på datum, och innehålla huvudkategorier som sport, kultur mm. Till dessa ska sedan kopplas skidor, fotboll mm (för Sport), teater, film mm (för Kultur) osv. Jag förstår att jag ska använda korskopplingar, men förstår inte hur jag ska uttrycka det i diagrammet.
Kan någon hjälpa mig?

// Bellajonna

Gör en tabell med kategorier, dessa har ett unikt idnummer. Gör ytterligare en tabell med artiklar, i denna skapar du en kolumn som heter typ kategori_id där du skriver det unika id-nummer för den kategori artikeln tillhör.

Edit: läste lite slarvigt. Ska du ha underkategorier i flera steg?
Citera
2013-02-24, 00:53
  #3
Medlem
Förslag:

En artikel-tabell, en kategori-tabell.

Gör en kopplingstabell mellan dem med artikelId och kategoriId som Sammansatt Nyckel.

Sen kan du ha en tabell vid namn huvudKategori, med en-till-många-relation till tabellen kategori.
Citera
2013-02-24, 08:36
  #4
Medlem
Svar till wndfih4tw:
Ja, underkataloger i flera steg (Sport: skidor, fotboll mm, Kultur: film, teater mm).
Det är det som är problemet som jag ser det.

// Bellajonna
Citera
2013-02-24, 20:28
  #5
Medlem
Citat:
Ursprungligen postat av bellajonna
Svar till wndfih4tw:
Ja, underkataloger i flera steg (Sport: skidor, fotboll mm, Kultur: film, teater mm).
Det är det som är problemet som jag ser det.

// Bellajonna

Min lösning har ju tagit höjd för det. Är det något fel med förslaget?
Citera
2013-02-26, 18:36
  #6
Medlem
Antingen kan en artikel tillhöra flera kategorier, t.ex.:

"Sverige vinner VM-guld i fotboll", tillhör "Sport" men också "Fotboll".
En stödtabell för att kunna göra många till många-koppling behövs - detta är såsom poussard beskriver.

Annars kan en artikel tillhöra en kategori.
Varje kategori tillhör en eller flera huvudkategori (och kanske därtill underkategorier).
Då är det upp till dig att lösa det mest kodmässigt hur du ska göra.
En kategori som ligger under kategorin "fotboll", ska inte visas när du tittar på kategorin "skidor", men båda kanske ska visas om du bara tittar på sport.
Här får du i tabellen för artiklar ha typ "parentID", som refererar till "articleID" - alltså en referens till sin egen tabell, en så kallad "self join": http://stackoverflow.com/questions/3...uld-you-use-it

Osäker på vilken som är bäst ut prestandasynpunkt. Däremot, ur underhållningssynpunkt (d.v.s. hur mycket underhåll det krävs) skulle jag säga nummer 1
Citera
2013-02-27, 11:20
  #7
Medlem
Svar till poussard
Nej inget fel, men min kunskapsnivå var för låg vid tillfället för att rätt kunna ta emot din lösning.
Tack för svaret.

// Bellajonna
Citera
2013-03-28, 15:52
  #8
Medlem
Personligen hade jag löst det på följande sätt.
En tabell för kategorier, med typ följande kolumner:

id, parentcategoryid, categorytitle

Ytterligare en tabell för artiklar:

id, categoryid, articlecontent

Sedan beror det ju lite på när det presenteras hur frågan ska formuleras, om hela kategoriträdet ska vara synligt fårn början eller om man behöver klicka på en kategori för att expandera..
Citera
2013-03-28, 16:10
  #9
Medlem
Känns enklast att bara göra en table, som kan se ut så här:
id, name, parent_id

Så gör du bara parent_id standard till NULL, vill du ha en underkategori passar du bara in ID till parent_id.
Alltså:
Sport(id = 1, parent_id = null)
Film(id = 2, parent_id = null)
Action(id = 3, parent_id = 2)
Fotboll(id = 4, parent_id = 1) osv.....
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