webForumDet fria alternativet

Struktur på databas där en post har relation till flera poster i annan tabell..

Databaser & SQL

10 svar · 912 visningar · startad av evilaid

Medlem sedan apr. 2009433 inlägg
Frågan#1

Försökte skriva en komplett rubrik men vet inte om den blev så tydlig..

Jag planera en databas där jag har en tabell som vi kan kalla kategorier med följande kolumner.

tbl_kategorier
id--namn

och en tabell som heter artikel med följande kolumner

tbl_artiklar
id--kategoriId--artikelnamn

Nu är ju frågan hur jag ska få ihop min relation här. Hela problemet för mig är att en artikel kan vara medlem i flera kategorier. Så på ett smart och effektivt sätt måste jag kunna ange för varje artikel vilka kategorier den hör till. Vet inte riktigt hur jag ska göra detta?
Ska man i kolumnen kategoriID ange flera id och sen i varje frågesats på något vänster kontrollera kolumnen för vilka id'n den är medlem av, känns lite fel?

Uppskattar förslag och idéer..

Mvh

Medlem sedan juni 2009920 inlägg
#2

Du skapar en till tabell som kopplar ihop artikel med kategori!

Sent from my Galaxy Nexus using Tapatalk 2

Medlem sedan apr. 2009433 inlägg
#3

typ en tabell med fälten artikelID och kategoriId och sen en post för varje koppling då?

Medlem sedan juni 20019 519 inlägg
#4

Ja

Medlem sedan dec. 2009872 inlägg
#5

Förslag:

[item]
intID -- räknare
strName

[category]
intID -- räknare
strName

[productConnection] -- eller vad som nu kan passa
intID
intItemID
intCategoryID

***
En produkt kan tillhöra samtliga kategorier, ingen begränsning.

Medlem sedan aug. 20003 575 inlägg
#6

civilpolisen skrev:

Förslag:

[item]
intID -- räknare
strName

[category]
intID -- räknare
strName

[productConnection] -- eller vad som nu kan passa
intID
intItemID
intCategoryID

***
En produkt kan tillhöra samtliga kategorier, ingen begränsning.

Jag håller med minus notationerna

Article
- Id
- Name
- ....

Category
- Id
- Name

ArticleCategoryIndex
- Id
- CategoryId
- ArticleId

Medlem sedan dec. 2009872 inlägg
#7

Nej, jag vet, dom är inte så populära.
Haken är att dom funkar. Det är ytterst sällan som dom har missuppfattats, även om det säkert har skett.

Dessutom, det går att använda samma namn på formuläret eller drop-down listen i HTML dokumentet som i databasen. Det gör det med dina också, så där är det ingen skillnad.

Det är bra om det är så lite namn som möjligt att hålla ordning på. Det underlättar själva kodandet. Man behöver inte vara kreativ på just den punkten! Bättre då att lägga krutet på andra saker! :-)

Medlem sedan aug. 20003 575 inlägg
#8

civilpolisen skrev:

Nej, jag vet, dom är inte så populära.
Haken är att dom funkar. Det är ytterst sällan som dom har missuppfattats, även om det säkert har skett.

Dessutom, det går att använda samma namn på formuläret eller drop-down listen i HTML dokumentet som i databasen. Det gör det med dina också, så där är det ingen skillnad.

Det är bra om det är så lite namn som möjligt att hålla ordning på. Det underlättar själva kodandet. Man behöver inte vara kreativ på just den punkten! Bättre då att lägga krutet på andra saker! :-)

Notationer är oftast onödig information, ju mindre du har desto bättre.
Man tar ögonen ifrån det viktiga t.ex. intAge det är inte int som är viktigt utan Age som är viktigt.
Less is more :).

int, str, obj osv osv är en gammal kvarleva från när vi inte hade intellisense i våra system, och även då så kan man fortfarande få namnen på variablerna/kolumnerna göra det enkelt att förstå vad det är för typ.

I koden är det samma sak undvik str, int, obj, frm, btn, txt osv osv
Om man behöver bemärka att det är ett form eller button så går det bra med
SaveButton, PersonForm mycket tydligare och snyggare.

Medlem sedan juli 200012 978 inlägg
#9

Bör det inte finnas en datum limit när de skall gälle, själva kopplingen alltså!

Medlem sedan dec. 2009872 inlägg
#10

Lasp skrev:

Bör det inte finnas en datum limit när de skall gälle, själva kopplingen alltså!

???

Notationer är oftast onödig information, ju mindre du har desto bättre.
Man tar ögonen ifrån det viktiga t.ex. intAge det är inte int som är viktigt utan Age som är viktigt.
Less is more.

Jag tycker detta är jättekonstigt! Jag håller i sak med dig om att "less is more". Men jag ser det åt andra hållet.

På en kontaktsajt som jag har har jag faktiskt skrivit strAge av den anledningen att inte begränsa folk att dom ska skriva bara siffror. Dom kan skriva lite vad som helst. Efter 10 år kan jag konstatera att det gör dom också...

Det är ju rätt tydligt att det är ett textfält. Sånt har faktiskt betydelse, som bekant. Hade det bara stått Age, som du förespråkar, går en del av dokumentationen förlorad, även om tre bokstäver för all del är mindre än sex...!

***
Ja... Jag ser faktiskt ingen poäng i att avstå att att vara tydlig.

Samtidigt är jag helt införstådd med att jag är rätt ensam om denna sunkna kvarleva från en tid som aldrig kommer åter... Så jag gör inga anspråk på att vara evangelist!!

Happy hacking!! :-)

Medlem sedan juni 20019 519 inlägg
#11

Det är ju rätt tydligt att det är ett textfält. Sånt har faktiskt betydelse, som bekant. Hade det bara stått Age, som du förespråkar, går en del av dokumentationen förlorad, även om tre bokstäver för all del är mindre än sex...!

För att dra ut det lite mer OT:

Jag ser inte hur detta hjälper... ända fördelen är att du när du öppnar din tabell så få du ett hum om vad det är för datatyp du är ute efter, men om man skriver SQL frågan så måste man alltid hänvisas till tabellstrukturen för om det var IntID eller strId när jag vill bara ville få ut ett ID, det är ju upp till systemet att rätta till användarens misstag, om Age är ett datum så se till att det bli ett datum, om det är ett nummer du skall skriva manuellt, se då till att man bara kan få in nummer.

Men som tur är så bestämmer vi alla själva hur vi bygger våra system ;)

Lasp skrev:

Bör det inte finnas en datum limit när de skall gälle, själva kopplingen alltså!

Beror på om produkten skall bara visas under en begränsad tid gissar jag på?

275 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)