Trädvy Permalänk
Medlem
Plats
Ystad
Registrerad
Feb 2007

Databas Design Råd

Hej SweC,
Behöver lite råd om design på en databas för webben.
Jag ska hämta information till en sida med PHP, SQL och undrar om där ligger någon för- och nackdel med att hämta information från flera tabeller eller en tabell.

Jag vet att alla tabeller har 5 gemensamma kolumner som alltid kommer visas på hemsidan som t.ex. Rubrik, Information, Datum, etc
men varje tabell kommer samtidigt att ha extra kolumner som dem andra tabellerna inte har.

T.ex.
Bold = Alla kolumner som dem har gemensamt.
Italics = Kolumner som skiljer sig i varje tabell.

Tabell Ex1
Rubrik, Information, Datum, Extra, Extra2, Extra3

Tabell Ex2
Rubrik, Information, Datum, Extra 4, Extra 5, Extra 6

Tabell Ex3
Rubrik, Information, Datum, Extra 7, Extra 8, Extra 9

osv...

Eller är det bättre med t.ex.
En gemensam tabell för alla gemensamma kolumner och sen olika tabeller för alla extra kolumner.

Gemensam Tabell
Rubrik, Information, Datum, ExtraID(FK)

Tabell Ex1
ExtraID(PK), Extra 1, Extra 2, Extra 3

Tabell Ex2
ExtraID(PK), Extra 4, Extra 5, Extra 6

Tabell Ex3
ExtraID(PK), Extra 7, Extra 8, Extra 9

Ett exempel är ebay, Amazon, Craigslist där man visar Rubriken, Information, Datum, Pris, Thumbnail osv men varje kategori har extra information.
Jag hoppas ni förstår vad jag menar annars får jag försöka formulera mig annorlunda. Var svårare att förklara än jag trodde

Tack på förhand.

Chassie: Corsair Graphite 600T - Mobo: Asus P8P67 - CPU: Intel i7 2600K - CPUkylare: Corsair Hydro H80 - RAM-minne: 12 Gb Corsair Dominator - GPU: EVGA 680GTX FTW+ 4GB - PSU: Corsair AX 850 GOLD - HDD: Intel 330 Series 2.5 OS: W7 Pro - Keyboard: Logitech Illuminated

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Jun 2010

Det senare alternativet är förstås bättre, duplicera inte information i onödan liksom.

Men om du mestadels ska visa info om en sak i taget, alltså inte aggregera flera rader från tabellerna, så borde du kolla på dokumentbaserade databaser snarare än relationsdatabaser. Det finns också kombinationer av relations- och dokumentbaserade databaser men det kan lätt bli komplicerat och/eller sluta med att data lagras dubbelt.

Trädvy Permalänk
Medlem
Registrerad
Jul 2003
Skrivet av Hamno:

Gemensam Tabell
Rubrik, Information, Datum, ExtraID(FK)

Tabell Ex1
ExtraID(PK), Extra 1, Extra 2, Extra 3

Tabell Ex2
ExtraID(PK), Extra 4, Extra 5, Extra 6

Tabell Ex3
ExtraID(PK), Extra 7, Extra 8, Extra 9

Lurigt med FK till tre tabeller.

Den gemensamma tabellen kan ha Id, som sedan undertabellerna refererar till. Gemensamma tabellen skulle även kunna ha en ENUM som tydligt visa vilken sub-typ det rör sig om, så slipper du i värstafallet att göra en select på tre tabeller för att hitta rätt extra-data.

Så. Gemensam tabell: Id (PK), Rubrik, Information, Datum, Sidtyp (ex: 'ebay', 'craigslist', 'blocket', 'tradera')
Undertabeller: GemensamId (FK), Extra-kolumner<..>

Sidtyp går även att bryta ut till en separat tabell om antalet sidtyper beräknas växa:
Gemensam tabell: Id (PK), Rubrik, Information, Datum, SidtypId
Sidtyper-tabell: Id, Namn

Gör det som känns lättast, det går alltid att förbättra ganska simpelt om behov uppstår.

Citera, tack!
Har du läst tråden om strandhögtalare och andra musiklådor?

Trädvy Permalänk
Medlem
Plats
Ystad
Registrerad
Feb 2007

Tack så mycket, vet ungefär vilken väg jag ska gå nu

Chassie: Corsair Graphite 600T - Mobo: Asus P8P67 - CPU: Intel i7 2600K - CPUkylare: Corsair Hydro H80 - RAM-minne: 12 Gb Corsair Dominator - GPU: EVGA 680GTX FTW+ 4GB - PSU: Corsair AX 850 GOLD - HDD: Intel 330 Series 2.5 OS: W7 Pro - Keyboard: Logitech Illuminated

Trädvy Permalänk
Medlem
Plats
Järna
Registrerad
Apr 2007
Skrivet av Hamno:

Tack så mycket, vet ungefär vilken väg jag ska gå nu

Nu kanske jag är morgontrött och förstår fel. Men tabellerna är olika kategorier? Typ vinterkläder och sommarkläder? Och de du säger är samma för varje innehåller olika data, bara kolumnnamnet är samma? Eller vill du att varje rad har ett fält där värdet är samma?

Ex.
Col1 col2 col3
Col1 col4 col5
Col1 col6 col7

Edit: läste igen. Skapa olika tabeller. Verkar jobbigt att dela upp dem.

Skickades från m.sweclockers.com