Komponent-databas och SQL

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
JimmyAndersson
Inlägg: 26545
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Missade att det fanns med i Tabell 3 eftersom du inte har med några komponentvärden. :)

Men om vi tittar på Tabell 4:

Tab4 Komponenter:
KomponentId(Unik), Namn, ÖvrigKomponentSpecifikInfo
1, "ATmega88-20PI", "Gullig mellan uC"
2, "ATtiny2313", "Gullig liten pytte uC"


Hamnar alla komponent-typer *och* värden här? Dvs:
1, Motstånd, 10
2, Motstånd, 220
3, Motstånd, 1k
4, Kondensator, 1µF
5, Kondensator, 10µF

eller? Hm, då är det väl bättre att ha en egen tabell för komponenter (med innehåll som motstånd och kondensator) så att man slipper skriva in det flera hundra (om det ens räcker) gånger. Visst, det finns ju dropdown-menyer, men det ska vara användarvänligt utan att man ska behöva klicka ihjäl musen..


Så när allt är färdigprogrammerat gör man i princip såhär alltså:

1) Lägg in uppgifterna i tabellen Återförsäljare. (Elfa, 08-123456, Lagergatan 123.)
2) Lägg in komponent-typer i en tabell. (Motstånd, Kondensator, Diod, osv)
3) Lägg in komponenterna som ska finnas i ÅterförsäljarLager. (10k, art-nr: 123-456..)
4) Lägg in komponenter som finns i lager i HemmaLager. (Motstånd, 10k, 45st..)

Vilken massa extrajobb det blir! Både när det gäller programmering och användning. :shock:
Det var ju inte alls som jag tänkte. Syftet med min databas är ju att det ska gå snabbt att lägga in nya komponenter.


Jag vet, det blir många frågor, men det är ju ni som fått in mig på den här banan. :wink:
Säg till om jag tänker helt galet. Alla frågor beror bara på att jag vill lära mig. :)
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Jag förstår inte var extrajobbet kommer in? I din första lösning måste man ju skriva "Elfa" på varenda pryl. Med nuvarande kan du välja bland redan inlagda leverantörer. (Samma sak när det gäller komponentgrupper)
Formuläret för att lägga till en komponent kan se ut ungefär såhär:
*Komponenttyp, väljs bland befintliga mha RadioButton
*Leverantör, väljs bland befintliga mha RadioButton
*Komponentvärde, skriv in manuellt
*Art.nr, skrivs in manuellt
*Antal i lager, skrivs in manuellt.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du är nog på rätt väg, och visst, det blir mycket jobb (hur du än gör)... :-)

Men varför lägga in varje unikt motståndsvärde ??
Lägg bara in en motståndsats från Kjell eller C-O som *en* "komponent"...

Du får väl se jobbet som en nyttig övning i databasdesign, :-)

Pagge,
I princip går en join (*utan* index !) till så som du beskriver.
Dock kan man ju sortera bort "ogiltiga" kombinationer redan när man
bygger den kombinerade tabellen, man behöver inte göra det i efterhand...

Alltså läses en tabell sekvensiellt. För varje rad läses den andra tabellen
sekvensiellt. För varje varje kombination som uppfyller WHERE villkoret flyttas
data till en resultat tabell. Sen beror resultatet även på om man kör
INNER eller OUTER JOIN, om det är en LEFT eller RIGHT JOIN och om de
"joinade" fälten är unika o.s.v...

Om tabellerna har index (naturligtsvis det normala fallet !), så optimeras
det hela på helt annat sätt genom att indexen används.

Ojsan,
> *Komponenttyp, väljs bland befintliga mha RadioButton
> *Leverantör, väljs bland befintliga mha RadioButton

Ska väll vara "drop down list" ?
"Radio buttons" lär bli väldigt knökigt när man har 100 komp.typer ! :-)

Med RadioButtons får man även en "bild" som byter layout beroende
på hur många lev och komptyper det finns från fall till fall...
tgr
Inlägg: 726
Blev medlem: 10 maj 2006, 09:17:07
Ort: Mölndal

Inlägg av tgr »

kan man inte fråga elfa snällt om man kan få en fil med deras prylar och beskrivning å dumpa in direkt i databasen. Och kanske få samma sak från fler leverantörer för att slippa skriva in allt.

I vilket fall som helst borde man kunna lära systemet hur de olika leverantörernas artickelnummer ser ut och få den att föreslå automatiskt med lite ajax eller så :)

Eller varför inte ocr scanna ( eller hur det nu heter) de sista sidorna i elfakattalogen och matcha arickelnummer mot sidnummer, och sen matcha sidnummer mot sakregistret för att få upp en lista på möjliga komponenter för att slippa skriva det :)

Sen kanske man kan få e-följesedel eller så från elfa som man petar in i sitt system för att automatiskt uppdatera lagret när man får en ny leverans.
Eller bara klistra in sin orderkorg i något som omvandlar och stoppar in i databasen.

Eller så kanske man ska skaffa SAP direkt :) (men det är alltid roligare att bygga eget)
Användarvisningsbild
JimmyAndersson
Inlägg: 26545
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

sodjan:
"Du får väl se jobbet som en nyttig övning i databasdesign"

Precis. :)
Låter bra att jag är på rätt väg.

Sedan blir det nog som sagt betydligt lättare med dropdown-menyer istället för radiobuttons.

"Men varför lägga in varje unikt motståndsvärde ??"

Jo, för att jag vill kunna se listan med komponentvärdet. Däremot kanske jag lägger in hela E12-seriens värden.

Det jag ska ha på "visnings-listan" är:
* Komponent-typ (t.ex motstånd)
* Värde (t.ex 10k)
* Effekt (t.ex 1/4w)
* Övrigt (t.ex ytmonterat, effektmotstånd)
* Antal i lager
* Art-nr
* Säljare

Först tänkte jag baka in "Effekt" och "Övrigt" i en och samma cell, men när jag ändå håller på så är det lika bra att göra det ordentligt. :)



oJsan:
"Jag förstår inte var extrajobbet kommer in? I din första lösning måste man ju skriva "Elfa" på varenda pryl."

Men det går betydligt fortare än att behöva lägga in information i fyra olika tabeller.

Med "min" lösning ser det ut såhär för att lägga in *alla* uppgifter som behövs:

1) Lägg in komponenter som finns i lager i HemmaLager. (Motstånd, 10k, 45st, art-nr: 123-456, säljare: Elfa.)

Ett enda steg, jämfört med fyra med ditt/pagges sätt.


"Med nuvarande kan du välja bland redan inlagda leverantörer. (Samma sak när det gäller komponentgrupper)"

Men man måste ju lägga in alla leverantörer och komponentgrupper i förväg. Det var det jag menade med extrajobb, både när man programmerar och använder databasen.

Att fylla i fyra tabeller bara för att lägga in en enda komponent måste ju rimligtvis bli mer jobb än att bara behöva fylla i en tabell. :wink:


Men nu menar jag inte att jag kommer bygga databasen enligt min idé. Jag gillar utmaningar så jag ska använda ert sätt. Det borde gå att göra även det det snabbt att använda, för det är snabbheten och användarvänligheten som är det absolut viktigaste för mig. Det finns ju redan för många system där designern/programmeraren bara tänkt på finesserna och glömt bort att det ska vara lätt och snabbt att använda.


Hm, från början var det här tänkt att bli ett litet snabbt och enkelt utfört projekt, men nu ser det ut som om det blir ganska stort. :D
Användarvisningsbild
JimmyAndersson
Inlägg: 26545
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

tgr:
"kan man inte fråga elfa snällt om man kan få en fil med deras prylar och beskrivning å dumpa in direkt i databasen."

Nu har jag visserligen inte hela Elfa's sortiment (även om man kan tro det när man tittar på hyllorna..) :oops: Men det vore smidigt. -Förutsatt att det inte blir massa extrajobb. Databasen ska ju bli klar för användning någon gång också.

Även om idén låter bra så skulle jag nog bara få massa information som jag inte behöver. Det räcker om databasen innehåller de artiklar som jag har (och ska ha) i lager.

Min tanke är ju att man ska kunna göra detta på ett *enkelt* sätt:
* Se lager-listan. Motstånd på en sida, kondingar på en sida, osv.
* Söka i lagerlistan, främst efter art-nr och komponentvärde.
* Lägga till nya komponenter.
* När man fått hem 100st nya 10k-motstånd så ska man bara behöva söka på art-nr och knappa in "100" i rätt fält och klicka på "Spara". Samma sak fast tvärt om när man hämtar komponenter från lagret till något projekt. -Denna del ska gå fort. Max 3 musklick per sökning OCH tillägg/borttagning av antal! Väldigt viktigt eftersom jag brukar beställa närmare 100 artiklar per gång.

Av samma orsak ska man max behöva bläddra mellan tre olika sidor för att använda alla funktioner. Bortsett från när man ska titta på inköps-listorna. Där är det viktigast att man enkelt kan överföra informationen till varje säljares order-system.
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Men det går betydligt fortare än att behöva lägga in information i fyra olika tabeller.

Men vänta nu lite...

*Vilka* fyra tabeller ??

Inte behöver du "lägga in" t.ex ELFA för *varje* gång du lägger in en komponent ???

Flera av dina tabeller kommer att fyllas på i förväg, t.ex leverantörer och
komponenttyper, *innan* man börjar lägga in den första komponenten.
Sedan får man komplettera när det dyker upp en ny leverantör eller
komp.typ, men det lär ju inte ske *varje* gång man lägger in en komponent...
(Lite oftare i början, men sedan mer sällan.)

> * Se lager-listan. Motstånd på en sida, kondingar på en sida, osv.

Jag hoppas att du menar på *samma* sida fast med olika urval ?
D.v.s att du inte bygger olika "sidor" i applikationen för olika komponenter !?
Användarvisningsbild
JimmyAndersson
Inlägg: 26545
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

"Inte behöver du "lägga in" t.ex ELFA för *varje* gång du lägger in en komponent ??? "

Nädå, men ni verkar glömma bort att man måste fylla ett antal tabeller innan man ens kan börja lägga till de komponenter som finns i lager.

Tabell 1: Lägg in alla leverantörer. (Elfa, ClasOhlsson, Kjell, Farnell, osv.)
Tabell 2: Lägg in alla komponent-typer. (Motstånd, konding, osv.)
Tabell 3: Lägg in alla artiklar som ska kunna finnas i lager. (art-nr och komponent-värde, mm.)
Tabell 4: Lägg in de komponenter som *finns* i lager. Det mesta hämtas från övriga tabeller, men antalet läggs till i denna.

Summa: fyra tabeller. :)


"Jag hoppas att du menar på *samma* sida fast med olika urval ?
D.v.s att du inte bygger olika "sidor" i applikationen för olika komponenter !?"


Jo, jag menar på samma sida, rent programmeringsmässigt. Men ur användarsynpunkt så vill jag bara kunna se t.ex alla motstånd på en sida. Sedan väljer man t.ex "Kondensator" ur en dropdown-meny. Samma php-fil används för alla komponent-typer, men den visar olika information beroende på vad man väljer i menyn för komponent-typerna. Så jag kommer alltså *inte* att göra såhär:
visa_motstand.php
visa_kondensator.php
edit_motstand.php
edit_kondensator.php

Så roligt ska vi inte ha. :D
sodjan
EF Sponsor
Inlägg: 43247
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> men ni verkar glömma bort att man måste fylla ett antal tabeller innan
> man ens kan börja lägga till de komponenter som finns i lager.

Självklart är det ingen som glömmer det !
Det är ju *helt* normalt att man gör så, och det finns ingen annan
rimlig metod.

Det som vi kanske glömmer bort, är att vanlig databasbehandling är
lite nytt för dig... :-)

> Samma php-fil används för alla komponent-typer, men den visar olika
> information beroende på vad man väljer i menyn för komponent-typerna.

Så den bild man "ser" ser olika ut (layout-mässigt) beroende på vad den visar ?

Brukar inte vara en bra lösning. Försök hålla en gemensam layout som
passar alla komponeneter oberoende på vad det är. Det blir antagligen
enklare i längden. Det blir t.ex krångligt om du t.ex vill visa en
blandning av komp.typer selekterat på något annat än just "komp.typ",
t.ex "alla komponenter från ELFA" eller något liknande.

Eller jag kanske misstolkar vad du menar med "information". Jag tolkade
det som även design/layout, men är det bara *data* så är det kanske OK...
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Jo, men dom tabellerna med grunduppgifter (leverantör, komponentyper etc) är ju en lätt match att lägga upp med ett fåtal poster. Man behöver inte ens göra en egen php-funktion för dom utan kan t.o.m använda phpMyAdmin för det jobbet. Sedan kan man bygga vidare på php-grejorna med funktioner för det lite senare.

Dom två huvudtabellerna kan ju skötas av samma php-funktioner. Finns en viss komponent redan hos ELFA så lägg den inte till där, annars görs det också av samma funktion. Summan av kardemumman är att extrajobbet egentligen inte behöver blir så himla stort på konstruktionssidan och nästan inget alls på inläggningen. I vissa fall t.om tvärtom.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

JimmyAndersson skrev: oJsan:
"Jag förstår inte var extrajobbet kommer in? I din första lösning måste man ju skriva "Elfa" på varenda pryl."

Men det går betydligt fortare än att behöva lägga in information i fyra olika tabeller.

Med "min" lösning ser det ut såhär för att lägga in *alla* uppgifter som behövs:

1) Lägg in komponenter som finns i lager i HemmaLager. (Motstånd, 10k, 45st, art-nr: 123-456, säljare: Elfa.)

Ett enda steg, jämfört med fyra med ditt/pagges sätt.
Men det går betydligt fortare... fortare för vem?
Det är ju inte DU som behöver göra fyra saker, det är ju datorn som uppdaterar fyra olika tabeller istället för en. Den indata som du anger är fortfarande densamma, typ (Motstånd, 10k, 45st, art-nr: 123-456, säljare: Elfa.)
Personligen så skulle jag då tycka att det vore lättare att välja bland leverantörer och komponenttyper i en dropdown eller Radiobuttonlist istället för att _skriva in_ det för varje komponent som läggs till.
JimmyAndersson skrev: "Med nuvarande kan du välja bland redan inlagda leverantörer. (Samma sak när det gäller komponentgrupper)"

Men man måste ju lägga in alla leverantörer och komponentgrupper i förväg. Det var det jag menade med extrajobb, både när man programmerar och använder databasen.
Ja i förväg ja... och sedan behöver du _aldrig_ göra det mer. Det kallar jag inte för extraarbete! :wink:
JimmyAndersson skrev: Att fylla i fyra tabeller bara för att lägga in en enda komponent måste ju rimligtvis bli mer jobb än att bara behöva fylla i en tabell. :wink:
Åter igen, det är ju inte DU som fyller i tabellen, det gör ju datorn... men visst, självklart tar det någon mikrosekund längre tid, men å andra sidan så blir din databas MYCKET mindre. (och därmed MYCKET snabbare vid sökning).

sodjan skrev: Ska väll vara "drop down list" ?
"Radio buttons" lär bli väldigt knökigt när man har 100 komp.typer ! Smile
Smaksak, beroende på hur många komponenttyper/leverantörer man har... vill man, som Jimmy, undvika en massa musklick så sparar man ett genom att använda RadioButtons istället för ddl. :wink:
En selectlist(?) kanske vore bäst... en ständigt "nerdroppad" ddl alltså.
tgr
Inlägg: 726
Blev medlem: 10 maj 2006, 09:17:07
Ort: Mölndal

Inlägg av tgr »

fler dumma förslag:

* Eget artickelnummer på alla prylarna så du kan märka dina lådor.
* En tabell med alla lådor och vad dom skall innehålla samt vart lådorna står, hyllplats osv.
* En projekttabell där du kan spara en bom (bill of material) med vad som behövs.
* En "kundkorg" så du han "handla" av dina saker å lägga till din bom.

Perfekt om du ska bygga en kompia av en pryl å undrade vad du använde och om du har delar till det :)

Sen kan man ju spara in sina ritningar i revisioner i sitt projekt när man ändå håller på. Och varje inte sin kod med om man har sådan!!!
danei
EF Sponsor
Inlägg: 27396
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Risken är att man ser vad projekten kostar.
tgr
Inlägg: 726
Blev medlem: 10 maj 2006, 09:17:07
Ort: Mölndal

Inlägg av tgr »

Tillverkarens eget artickelnummer måste vara med också. Så du kan välja det du har hemma även om det är från två olika leverantörer!!!
Användarvisningsbild
JimmyAndersson
Inlägg: 26545
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Ojdå, här var det många inlägg. :)

börjar med sodjan:
"Eller jag kanske misstolkar vad du menar med "information". Jag tolkade det som även design/layout, men är det bara *data* så är det kanske OK..."

Layouten ska vara likadan. Det är alltså bara datan som ändras + lite text så man snabbt ser vilken sorts komponent man tittar på.


"> men ni verkar glömma bort att man måste fylla ett antal tabeller innan
> man ens kan börja lägga till de komponenter som finns i lager.

Självklart är det ingen som glömmer det !
Det är ju *helt* normalt att man gör så, och det finns ingen annan rimlig metod.

Det som vi kanske glömmer bort, är att vanlig databasbehandling är lite nytt för dig... "



Databasbehandling är inte nytt för mig. Däremot är sql och php nytt för mig. :)



oJsan:
"Åter igen, det är ju inte DU som fyller i tabellen, det gör ju datorn... men visst, självklart tar det någon mikrosekund längre tid, men å andra sidan så blir din databas MYCKET mindre. (och därmed MYCKET snabbare vid sökning)."

HUR kan datorn fylla i leverantörer, komponent-typer och art-nr ????
Det är ju helt omöjligt. Datorn kan inte veta vilka leverantörer, komponent-typer och art-nr som jag ska använda mig av i databasen. Detta måste jag fylla i.
Och sedan detta att det bara tar någon mikrosekunde längre....
Jag skulle vilja se din dator fylla i Elfas, Kjell, Farnell, ClasOhlson, Bhiabs namn och artikelnummer för hela E12-motståndserien på bara några mikrosekunder! Datorn skulle inte klara det om den så fick ett år på sig.

För att kunna börja lägga till de antal av varje komponent som finns i lager så *måste* man fylla i:

Tabell 1: Leverantörens namn
Tabell 2: Komponent-typerna som ska användas i databasen
Tabell 3: Art-nr och komponentvärde.

Om datorn kan ordna det själv så har jag totalt underskattat PHP och MySQL!
Skriv svar