Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Svår databas

Postades av 2008-10-04 01:03:12 - Magnus Hallberg, i forum sql-server/msde, Tråden har 26 Kommentarer och lästs av 5819 personer

Jag håller på med en sida där jag lägger in en webbutik, men jag kan inte fixa till databasen så jag får det bra. Hoppas nån kan hjälpa mej med det, jag beskriver härnedan hur det skavara.

Det är en firma som trycker på kläder, samt säljer kläder, det ska även vara möjligt att ladda upp egna bilder mm för tryck, de kommer eventuellt att säljamer saker i framtiden.

Vi börjar med trycken. På detaljsidan ska det visas minst en bild på trycket, info om trycket, pris antal i lager, sen ska det också vara möjligt att välja vilken typ av plagg man vill ha trycket på typ t-shirt, hood mm. När man ändrar plagg ska det ändras information om plagget och priset ska också ändras. Man ska också kunnavälja färg och storlek på plagget. Detta vet jag hur jag ska fixa.

För plaggen skadt på detaljsidan visas den vanliga information färg, storlek, pris. denna är ju inget svår, detsamma gäller ju om de ska sälja andra produkter i framtiden.

För tryck som kan laddas upp har jag byggt en funktion för uppladdning mm som fungerar som den ska. Även här ska man kunna välja färg och allt det på plagget man ska ha trycket på.

Det jag har förklarat hitttills fixar jag själv, problemet kommer med databasen, hur löser jag det? Här kommer några krav.

- Man måste kunna se hur många plagg det är kvar av en viss färg och en viss storlek.
- Manmåste alltså kunnase att det finns tre svarta t-shirt med storleken XXL eller fem vita hood i storleken S. Ni fattar nog hur jag menar.
- Orderhistorik
- Spara korg

Mina funderingar har varit att jag har följande tabeller.
TRYCK
-----------------------
tryckID
Allt om trycken

PLAGG
---------------------
plaggID
isPrintable bit

EGNATRYCK
------------------------
egnaTryckID

FÄRG
----------------------
färgID

STL
---------------------
stlID

INSTOCK
----------------------
plaggID
färgID
stlID
quantity

Nu har jag bara tagit med det jag tror är viktigt. Detta borde väl fungera? hur löser jagdetta i ordrar? Det blir väl problem eftersom de olika grejerna inte har samma egenskaper. Jag kommer att visadom i olika user controls på detaljsidan. Jag menar trycket har ju ingen färg eller storlek som plaggen osv. Jag ska använda MSSQL Server 2005.


Svara

Sv: Svår databas

Postades av 2008-10-04 01:53:43 - Oskar Johansson

Jag har lite kommentarer:

1) Tryck: Jag skulle föreslå ett prisfält där också (som är 0 som standard) så att man kan låta vissa tryck vara dyrare (för att man t.ex. har licenserat trycket eller liknande, antingen som procentsats eller bara att addera på priset)

2) Jag skulle inte separera tryck och egna tryck, bara ha någon form av kolumn extra för om trycket är standard eller inte. Kommer bara bli krånglig databas och knöl-kod annars

3) På "instock" skulle jag lägga till en kolumn "tryckid", som kan vara null. Tänkbart är ju att vissa tryck är extra populära och trycks upp som batcher - ett visst tryck och en viss tröja skulle ju då kunna finnas i lager, även om alla andra tryck på exakt samma tröja inte går att få.. Eller vice versa. På alla tröjor som är otrycka är givetvis värdet null.

4) På färg saknas någon info om vad färgen heter, samt t.ex. en hexadecimalkod, eller cmyk-kod (jag föreslår det senare, samt sedan konvertering runtime till hex-kod för att t.ex. kunna visa på hemsidan)

5) Storlek, lägg till fält för vad storleken heter (samt gärna lite fält för ungefärliga mått, är alltid trevligt när man beställer; en medium kan vara alltifrån small till large ;) )

I orders blir det inte så krånligt: Ha exakt samma fält som i instock där för varje orderrad. Hur du vill hantera lagersaldot vet jag inte, ett förslag är att ha dels det faktiska antalet orört tills ordern är packad i "instock", och sedan ha två fält för antalet på varje orderrad - ett fält för antalet beställda, och ett fält för antalet packade. Om man vill veta lagersaldor så är det bara att subtrahera "instock-quantity" med "orderrad-quantity_reserved" minus "orderrad-quantity-shipped" för alla orderrader som stämmer överrens med alla id:s i "instock", samt inte är makulerade (om du har en sådan funktion)

Hm, mycket funderingar, men något kanske var vettigt?


Svara

Sv:Svår databas

Postades av 2008-10-04 02:51:17 - Magnus Hallberg

Hej Oskar!
Tackar för dina synpunkter, jag ska sätta mig med detta imorron. Jag kommer nog att återkomma med mer frågor då.


Svara

Sv: Svår databas

Postades av 2008-10-09 22:39:57 - Magnus Hallberg

Nu kommer det några frågor om detta:) Jag har försökt tänkt till lite nu

Jag har en tabel products med följande fält:
productID,
productName,
productNumber,
productDesc,
price,
inDate,
catPromotion,
depPromotion

Skulle jag inte kunna lägga till lite fält i denna som tillåts vara null? Då skulle jag ju kunna ha kläder i denna tabell också? Blir det helt fel att göra så? Egentligen är det ju bara några fält som behövs extra.

toPrint BIT = Om det är ett tryckbart plagg.
colorID
sizeID
manifactureID

På detta sätt kan jag ju ha i stort sett vilka produkter som helst i tabellen och då räcker det ju att ha en tabell till produkterna.


Svara

Sv:Svår databas

Postades av 2008-10-10 00:28:22 - Oskar Johansson

Det är nog en avvägning. Om du enbart kommer sälja "vanliga" saker samt tröjjor så skulle det väl vara fullt rimligt, dock.. Problemet är om du efter ett tag kommer på ytterligare en typ av produkter som behöver specialfält. Och ytterligare en. Och ytterligare än. Om du redan nu vet av att det kommer bli på det viset så skulle jag nog föreslå att du lägger de generiska fälten i produkttabellen, och sedan skapar en tabell för varje typ av "specialprodukter" där den extra informationen finns, samt en nyckel till produkttabellen. Sedan ett fält i produkttabellen så man vet vilken typ av produkt det är frågan om (null om standardprodukt.)

(Du vill nog inte bara mata på med specialfält i all oändlighet, de tar både plats och prestanda. Med min lösning så slipper du de problemen. Glöm inte index)


Svara

Sv: Svår databas

Postades av 2008-10-10 12:26:12 - Magnus Hallberg

Hej Oskar!
Du menar att jag har en tabell för det som är gementsamt för alla produkter typ namn, pris, id osv?
Sen har jag en tabell där jag lägger in "specialfälten" typ färg, storlek osv? Det är ju smartare än min idé. Det där med index minns jag inte, måste kolla på det igen.


Svara

Sv:Svår databas

Postades av 2008-10-10 14:41:55 - Oskar Johansson

Typ så, men i ditt fall, med bara "vanliga" och "tröjjor" så kanske det är overkill med mitt förslag, men jag vet å andra sidan inte vad du har tänkt att sälja härnäst ;)


Svara

Sv: Svår databas

Postades av 2008-10-10 14:50:08 - Magnus Hallberg

Det vet inte jag heller, jag går på ditt förslag. Har skissat lite på det och jag tycker det verkar vara bra. Jag misstänker att jag får återkomma med SQL-frågorna så jag sätter inte tråden som löst ännu.


Svara

Sv:Svår databas

Postades av 2008-10-10 18:53:13 - Magnus Hallberg

Jag har nu två tabeller products och productDetails. Sen har jag en del kopplingstabeller med färg osv. Nu försöker jag hämta ut det som finns i products och productDetails, den jag har nu fungerar bra om produkten finns med i båda tabellerna. Det är ju inte säkert att den kommer att göra det, en del produkter kommer ju bara att finnas i products.

Så jag vill att den hämtar allt i products även om det inte finns nåt i productDetails.

<code>
ALTER PROCEDURE getProductDetails2
@prodID INT
AS
SELECT prod.productName, color.color, s.size
FROM products AS prod

LEFT JOIN productDetails AS pd
ON prod.productID = pd.productID AND pd.productID = @prodID

INNER JOIN [size] AS s
ON s.sizeID = pd.sizeID

INNER JOIN color
ON color.colorID = pd.colorID

WHERE prod.productID = @prodID
</code>

Hämtar bara namnet från products för att det skabli mer överskådligt.

------------------EDIT------------------
La till WHERE hade missat den när jag kopierade in det.


Svara

Sv: Svår databas

Postades av 2008-10-10 22:50:57 - Magnus Hallberg

Jaglöste det med denna

<code>
ALTER PROCEDURE getProductDetails2
@prodID INT
AS
SELECT prod.productName, color.color, s.size, pp.picPath
FROM products AS prod

FULL JOIN productDetails AS pd
ON pd.productID = @prodID

LEFT JOIN [size] AS s
ON s.sizeID = pd.sizeID

LEFT JOIN color
ON color.colorID = pd.colorID

LEFT JOIN prodPics AS pp
ON pp.prodID = @prodID

WHERE prod.productID = @prodID
</code>


Svara

Sv:Svår databas

Postades av 2008-10-11 01:12:42 - Magnus Hallberg

Jag hade inte löst den som jag trodde. Den ser ut så här:
<code>
ALTER PROCEDURE getProductDetails
@prodID INT,
@sizeID INT = NULL,
@colorID INT = NULL
AS
SELECT prod.productID, prod.manifactureID, prod.productName, prod.productNumber,
prod.productDesc, prod.price, prod.inDate, prod.onCatalogPromotion,
prod.onDepartmentPromotion, color.color, s.size, pp.picPath, c.category,
d.departName, q.quantity
FROM products AS prod

FULL JOIN productDetails AS pd
ON pd.productID = @prodID

INNER JOIN productCategory AS pc
ON prod.productID = pc.productID

INNER JOIN categories AS c
ON pc.categoryID = c.categoryID

INNER JOIN department AS d
ON c.departmentID = d.departmentID

-- Den här blir det fel på....
FULL JOIN quantity AS q
ON q.prodID = prod.productID AND q.colorID = @colorID AND q.sizeID = @colorID

LEFT JOIN [size] AS s
ON s.sizeID = pd.sizeID

LEFT JOIN color
ON color.colorID = pd.colorID

LEFT JOIN prodPics AS pp
ON pp.prodID = @prodID

WHERE prod.productID = @prodID
</code>
Problemet är att jag får inte ut antalet hur jag än skriver om colorID och/sizeID är null. Jagmåste tillåta null där eftersom alla produkter inte har sizeID eller colorID. Det jagvill är alltså att få "quantity" även om det inte finns något colorID eller sizeID


Svara

Sv: Svår databas

Postades av 2008-10-11 13:41:11 - Magnus Hallberg

Jag måste väl kunna skippa tabellen quantity helt och lägga in antalet i productDetails? I den blir det ju ändå en rad för varje färg och storlek.

F*n vad detta skulle vara besvärligt.


Svara

Sv:Svår databas

Postades av 2008-10-11 14:32:29 - Oskar Johansson

quantity? vad är det för tabell?

btw, varför "productdetails"? när du börjar sälja mössor, blir den tabellen "productdetails2" då? :)

Hur som haver, sizeId=colorId känns inte riktigt rätt?


Svara

Sv: Svår databas

Postades av 2008-10-11 14:40:12 - Magnus Hallberg

Såg att jag hade skrivit fel där, men det vill inte fungera ändå.

Tabellerna jag har är products, i den lagras namn, beskrivning, pris allt som alla produkter har. Sen har jag productDetails, i den lagras storlek, färg och antal. Skulle de senare sälja något annat som behöver något mer fält är det ju rätt enkelt att lägga in det i productdetails.

Jag hade en tabell till quantity, men där var jag ju också tvungen att lagra colorID och sizeID till varje produkt som har fler storlekar och färger.

Jag har fått det att fungera med följande SP
<code>
ALTER PROC getProductDetails
@prodID INT,
@colorID INT = null,
@sizeID INT = null
AS
IF(@colorID is null AND @sizeID is null)BEGIN
SELECT productDetails.quantity, products.productName, null AS 'colorID', null AS 'sizeID'
FROM productDetails

INNER JOIN products
ON productDetails.productID = @prodID

WHERE products.productID = @prodID
END

IF(@colorID is null AND @sizeID is not null)BEGIN
SELECT productDetails.quantity, products.productName, sizes.size
FROM productDetails

INNER JOIN products
ON productDetails.productID = @prodID

INNER JOIN [size] AS sizes
ON @sizeID = sizes.sizeID AND productDetails.sizeID = sizes.sizeID

WHERE products.productID = @prodID
END

IF(@colorID is not null AND @sizeID is null)BEGIN
SELECT productDetails.quantity, products.productName, color.color
FROM productDetails

INNER JOIN products
ON productDetails.productID = @prodID

INNER JOIN color
ON @colorID = color.colorID AND productDetails.colorID = color.colorID

WHERE products.productID = @prodID
END

ELSE BEGIN
SELECT productDetails.quantity, products.productName, sizes.size, color.color
FROM productDetails

INNER JOIN products
ON productDetails.productID = @prodID

INNER JOIN [size] AS sizes
ON @sizeID = sizes.sizeID AND productDetails.sizeID = sizes.sizeID

INNER JOIN color
ON @colorID = color.colorID AND productDetails.colorID = color.colorID

WHERE products.productID = @prodID
END
</code>
Är det helt fel att lösa det så? Eller är jag helt fel ute med tabellerna?


Svara

Sv:Svår databas

Postades av 2008-10-11 15:52:05 - Oskar Johansson

> Skulle de senare sälja något annat som behöver något mer fält är det ju rätt enkelt att lägga in det i productdetails.

Du förlorar ungefär hela vitsen med att dela i två tabeller då. Samt att det kommer nog bli rätt rörigt..

Hur som haver, titta på ifnull()-funktionen, du lär kunna korta ner den där koden så du slipper skriva nästan samma sak flera gånger.


Svara

Sv: Svår databas

Postades av 2008-10-11 16:01:48 - Magnus Hallberg

Ska kolla på den.

jag förstår inte hur jag ska göra tabellerna om jag inte ska göra så här. Skulle du kunna ge mej ett lite exempel?


Svara

Sv:Svår databas

Postades av 2008-10-11 17:04:45 - Oskar Johansson

Alltså, istället för productDetails så har du shirtDetails. Och sen när du börjat sälja pizza så har du pizzaDetails. Typ så :) Alternativet är t.ex. en stor, fet text-kolumn direkt i produkterna där du kan stoppa in xml. Fast det är inte särskilt trevligt att ställa sql-frågor mot :)


Svara

Sv: Svår databas

Postades av 2008-10-11 17:22:49 - Magnus Hallberg

Ahh, nu börjar nog poletten ramla ner:) inte dåligt efter nån vecka haha.

Jag tror jag förstår hur du menar nu. Låt säga att jag döper den till shirtDetails, då måste jag väl kunna ha andra typer av kläder i den också, typ byxor osv?


Svara

Sv:Svår databas

Postades av 2008-10-11 20:56:00 - Oskar Johansson

Hm.. Jadu, clothesDetails? Så vansinnigt många mått kan det väl inte vara på ett normalt klädesplagg? Annars borde du kunna göra något stort matrisliknande monster, fast det vete sjutton om jag rekommenderar..

Hur mycket som går att kombinera är ju en avvägning; hur många tabeller? Hur stora tabeller? Hur går det att knacka kod för det sedan? osv. osv.


Svara

Sv: Svår databas

Postades av 2008-10-11 23:04:12 - Magnus Hallberg

Nä, det är det ju inte, det är ju oftast bara från s - xxxl eller byxstorlekar nu har jag inte i huvudet hur de ser ut. Jag testar att lägga in det i en tabell.


Svara

Sv:Svår databas

Postades av 2008-10-12 18:29:43 - Magnus Hallberg

Jag skulle ha skrivit detta igår men glömde det.

Jaghar fått ett annat problem. Jag vet inte riktigt hur jag ska lösa det när jag lägger in kläder. Varje färg och storlek ska ju in. På sidan jag ska sätta in det från har jag både färg och storlek i varsin listbox där man kan välja fler alternativ.

Men hur löser man det med antal av varje storlek och färg? Är ju lite trist om man måste lägga in varje var för sig. har man från S - XXL så blir det ju 5 st sen har man kanske fem färger också, då blir det ju 25 insättningar för varje plagg.

Har du nån lösning på det?


Svara

Sv: Svår databas

Postades av 2008-10-12 20:05:34 - Oskar Johansson

Jag fick en liten tanke.. Istället för en vanlig listbox, ta en multiselect-listbox (någon egenskap i html, kommer inte ihåg.) Sedan markerar man helt enkelt alla storlekar och färger, och kör. I koden skulle jag lösa det ungefär som såhär:

Varje "egenskap" på plagget (sizeid, colorid etc) ska hanteras som en _array_. Sedan gör du bara som så att du loopar lite lagom nästlat (foreach(sizeid) { foreach(colorid) {insert_into_db();} } typ :)

Det borde vara rätt enkelt, sålänge som du inte har problemet att det är olika antal av varje, eller liknande problem.. :P Om det är det så får du hitta på något annat spännande, typ rita upp en matris (alla storlekar * alla färger) med textrutor, borde gå bra sålänge det bara är två egenskaper som ska ha flera värden (sedan blir det fler dimensioner än två, å sålänge du inte planerar att bestycka klientens dator med hologram så avråder jag ifrån det ;) )


Svara

Sv:Svår databas

Postades av 2008-10-12 22:01:56 - Magnus Hallberg

Det var typ så jag hade tänkt mej men var osäker på hur det skulle gå med antal. Jag har nu frågat och jag kan sätta antalet till noll när man lägger in en produkt.

hehe misstänker att det kommer att bli kul att få den nästlade loopen att fungera:(


Svara

Sv: Svår databas

Postades av 2008-10-12 22:21:51 - Magnus Hallberg

F*n
Började med SQLen, men märkte att det blir problem med en gång. Jaghade tänkt det så här.

Lägga in det i produktdatabasen, returnera produktID, detta är ju ingen problem.
- Sen tänkte jag köra nåt i stil med
- foreach(Item item in lbSize)
{
foreach(Item item in lbColor)
{
insert.size
insert.color
}
}

Problemen är dessa:
Hur ska jag veta var det ska in i clothesDetails? Jag har ju productID men det kommer ju att finnas på massor av ställen. När jag har satt in storleken och ska sätta färgen blir det ju problem, då ska ju den raden uppdateras. Då vet jag ju inte vilken rad som ska ändras:( Jag menar produktID och sizeID kommer ju att vara lika många som det finns storlekar och då kommer jag ju att ändra alla till en och samma färg.


Svara

Sv:Svår databas

Postades av 2008-10-12 22:33:41 - Oskar Johansson

Hm, har du flera clothesID på en productID? Jag tänkte mig en 1:1 relation mellan products-tabellen och clothes-tabellen, annars kommer det nog bli knöligt att göra orders känner jag på mig..? Och all annan kod för övrigt


Svara

Sv: Svår databas

Postades av 2008-10-12 22:40:03 - Magnus Hallberg

Jo det blir ju så.

I produkttabellen lägger jag in en t-shirt och i clothesDetail blir det ju det produktid tillsammans med storlekarna och färgerna:

products
productID manifactureID catID name prodDesc price
-----------------------------------------------------------------------
45 4 3 T-shrt Snygg.... 19

clothesDetail
prodID colorID sizeID toPrint quantity
----------------------------------------------------
45 2 3 True 3
45 5 4 True 8
45 2 1 True 2

Ja du förstår nog hur jag har gjort det.

Har inte alla fält med nu.


Svara

Sv: Svår databas

Postades av 2013-06-14 14:40:15 - Mattias Seebergs


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 615
27 953
271 709
376
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies