Permalänk

Skapa databas

Jag ska försöka förklara mig kort, har utbildat mig inom IT infrastruktur och bara använt SQL att ansluta till och gjort några övningar i SQL. Nu har jag fått ett jobbtillfälle men de vill också att jag kan hantera databaser någorlunda.

En uppgift jag fått är att skapa en databas för hyrbilar:

Problemlösning:

  • Vi vill ha en databas för en hyrbilsfirma.

  • Firman har ett ~20 bilar av olika märken och modeller.

  • De olika modellerna har olika förbrukning

  • De olika modellerna har olika drivmedel

  • De olika drivmedlen kostar olika mycket varje månad.

  • Varje bil kostar firman X kronor per månad och Y kronor per mil.

  • Varje bil drar in X kronor per uthyrningsdygn och Y kronor per mil.

  • Efter varje uthyrning registreras mätarställningen på bilen. (Viktigt med ganska många mätarställningar, >500st totalt för alla bilar.)

Skapa databasen och fyll den med information
Vilka bilar tjänar firman mest på ?
Lista bilar efter hur populära de är vid korta sträckor respektive långa sträckor
Ta ut totalkostnad för en viss bränsletyp över en period
Ta ut totalkostnad per mil, både totalt och per bil
Ta fram vilken bil som gått längst
Vilken bil kostar minst?

DÅ till frågan, TROR ni att det är möjligt för mig att lära mig skapa en sådan databas till 10 januari och hur avancerat är det egentligen?

Permalänk
Medlem

Detta är inte så svårt. Börja med att skissa ihop hur relationerna ser ut mellan varje tabell. Och vilka som ska vara PK och FK.

Permalänk
Skrivet av Spidey:

Detta är inte så svårt. Börja med att skissa ihop hur relationerna ser ut mellan varje tabell. Och vilka som ska vara PK och FK.

Menar du rakt i SQL då? PK (primary key), FK (foreign key) men vet inte hur dessa används, det är väl två värden som pekar mot varann i olika tabeller?

Permalänk
Medlem
Skrivet av Tryckvagen:

Menar du rakt i SQL då? PK (primary key), FK (foreign key) men vet inte hur dessa används, det är väl två värden som pekar mot varann i olika tabeller?

Ja, men du hittar bra sidor Som förklarar det väldigt bra.

Skall logiken alltså beräkningarna göras i SQL också?

Permalänk
Skrivet av Spidey:

Ja, men du hittar bra sidor Som förklarar det väldigt bra.

Skall logiken alltså beräkningarna göras i SQL också?

Kollar youtube just nu.
Nää det är nog inte nödvändigt, tänker du att de kan göras i Excel?

Permalänk
Medlem

lär vara busenkelt att skapa en sådan databas. är väl 4-5 tabeller som krävs för just det där. men tycker det är konstigt om du är utbildad inom IT infrastruktur men inte kan databaser. kanske missuppfattar helt vad en sån titel är men kan du sql är de också konstigt.

hur som. jag lärde mig mysql från grunden när jag körde php och tycker att det var bra mycket lättare att skriva sql frågor och göra tabeller än att skriva faktisk kod. så borde inte vara något problem på 20 dagar

Visa signatur

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Permalänk
Skrivet av Christley:

lär vara busenkelt att skapa en sådan databas. är väl 4-5 tabeller som krävs för just det där. men tycker det är konstigt om du är utbildad inom IT infrastruktur men inte kan databaser. kanske missuppfattar helt vad en sån titel är men kan du sql är de också konstigt.

hur som. jag lärde mig mysql från grunden när jag körde php och tycker att det var bra mycket lättare att skriva sql frågor och göra tabeller än att skriva faktisk kod. så borde inte vara något problem på 20 dagar

Ska man skriva tabellerna direkt i sql eller ska man göra dom i Excel? Vart börjar jag?

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av Tryckvagen:

Ska man skriva tabellerna direkt i sql eller ska man göra dom i Excel? Vart börjar jag?

Skickades från m.sweclockers.com

klart du kan göra det i excel men tycker det är mer framtidstänk med sql och enklare att ändra i framtiden.
du gör tabellerna i databasen. det skrivs inte i sql utan i klartext. kolla tex phpmyadmin hur de kan se ut

Visa signatur

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Permalänk

@Tryckvagen: Vad är det du faktiskt ska göra?

Är det att skapa databasen, skriva sql frågorna enligt problemlösningen eller båda?

Jag utgår från att det är båda, eftersom jag har svårt att tro att ett företag vill lägga 30-50 tusen på en person som inte klarar båda om det är en viktig del av arbetet.
Och i så fall ligger nog kunskapen/tiden runt 10% vid databas strukturen och 90% vid sql frågorna.

Du kan nog få ihop en lösning om du lägger en bra bit tid på det. Detaljerna kommer du att missa eftersom det tar tid att lära sig och det är förväntat av någon ny inom yrket.

Om inte annat, se det som ett tillfälle att lära sig något nytt under tidspress. Lycka till!

Permalänk
Skrivet av zoomster2:

@Tryckvagen: Vad är det du faktiskt ska göra?

Är det att skapa databasen, skriva sql frågorna enligt problemlösningen eller båda?

Jag utgår från att det är båda, eftersom jag har svårt att tro att ett företag vill lägga 30-50 tusen på en person som inte klarar båda om det är en viktig del av arbetet.
Och i så fall ligger nog kunskapen/tiden runt 10% vid databas strukturen och 90% vid sql frågorna.

Du kan nog få ihop en lösning om du lägger en bra bit tid på det. Detaljerna kommer du att missa eftersom det tar tid att lära sig och det är förväntat av någon ny inom yrket.

Om inte annat, se det som ett tillfälle att lära sig något nytt under tidspress. Lycka till!

Det är båda, jag tänker att det inte är så svårt att skriva tabellerna direkt i sql (?). Men vet inte riktigt hur jag ska manipulera datan för att få svar på frågorna som ställs? Görs också direkt i sql?

Permalänk
Permalänk

Du hinner nog. Läs på om SQL i några dagar, så tar det sen bara nån timma att skapa denna databas.

Jag kan tipsa om att vända ett bra GUI/program för att jobba med databaser som t.ex http://www.heidisql.com
I den kan du snabbt kasta ihop en databas med lite musklick och samtidigt se ALLA sql kommando som används för att
skapa tabeller och relationer osv.. Man kan åxå göra allt manuellt genom att skriva SQL i den såklart.

Lycka till

Permalänk
Skrivet av Spidey:

Detta är inte så svårt. Börja med att skissa ihop hur relationerna ser ut mellan varje tabell. Och vilka som ska vara PK och FK.

Då skulle alltså registreringsnummer vara PK, för att det är unikt?

Permalänk
Medlem
Skrivet av Tryckvagen:

Då skulle alltså registreringsnummer vara PK, för att det är unikt?

Du kan använda registreringsnummer som PK men personligen skulle jag nog använda ett löpnummer som PK. Det är bäst att inte ha informationsbärande fält som PK. Man vet aldrig hur informationen ska användas i framtiden.

Kolla på IDENTITY för SQLServer eller AUTO_INCREMENT om du kör MySQL. Övriga databaser har jag inte så bra koll på men motsvarande funktionalitet bör finnas.

Visa signatur

He who hasn't hacked assembly language as a youth has no heart. He who does so as an adult has no brain.
~John Moore

Permalänk
Medlem

Se till att tabellerna följer 3NF. Du måste lära dig det och användning utav PK och FK.

Visa signatur

Ryzen 1700 @3,8Ghz 1,342V | Corsair Vengeance LPX 2x8Gb (CMK16GX4M2B3000C15) | Asus Prime x370 Pro | KFA2 GTX 1080 Ti

Permalänk

Spelar det någon roll vilken databashanterare jag väljer egentligen? Alla följer TYP samma språk?

Permalänk
Medlem
Skrivet av Tryckvagen:

Spelar det någon roll vilken databashanterare jag väljer egentligen? Alla följer TYP samma språk?

Det finns mindre skillnader i syntax och naturligtvis hur själva databasen hanteras men det är i grunden SQL de kör.

Rimligtvis väljer du det som de använder på jobbet men för att bara testa spelar det mindre roll. Du kan till och med testa online på sajter som sqlfiddle.com

Permalänk

Jag har börjat förstå sql hur man skapar databas och manipulerar den någotsånär nu.
Hur ska jag göra för att förstå hur jag ska besvara frågorna som ställs? Börja att skapa databas och mata in data?

Permalänk

Första table (bilar).

--Vad kan jag tänkas behöva för data:

CREATE TABLE bilartest
(
id INT PRIMARY key,
märke char(30),
modell CHAR(30),
drivmedel INT,
förbrukning INT,
färg char(20)
);

Permalänk
Medlem

@Tryckvagen: Tänk på att INT som datatyp kanske inte är så lämpligt för värden där du vill ha decimaler, t.ex. förbrukning.
Beroende på databashanterare så float, decimal eller liknande är bättre.

Märke bör vara t.ex. en smallint och kopplas till en egen tabell där märken läggs upp.

Normalisering som nämnts tidigare kan inte påpekas nog

Och glöm inte bort indexering...

Permalänk
Skrivet av Kåre!:

@Tryckvagen: Tänk på att INT som datatyp kanske inte är så lämpligt för värden där du vill ha decimaler, t.ex. förbrukning.
Beroende på databashanterare så float, decimal eller liknande är bättre.

Märke bör vara t.ex. en smallint och kopplas till en egen tabell där märken läggs upp.

Normalisering som nämnts tidigare kan inte påpekas nog

Och glöm inte bort indexering...

Får ändra det till NUMERIC
Bör jag ha en tabell för märke och en för modell menar du? Vad mer för tabell kan tänkas?

Permalänk
Permalänk

Firman har ett ~20 bilar av olika märken och modeller.
- Är det märket eller modellen som har betydelse?

De olika modellerna har olika förbrukning.
- Är förbrukningen en del av en modell specifikation eller inte? Kommer detta att ändras med tiden?

De olika modellerna har olika drivmedel.
- Är drivmedelstyp en del av en modell specifikation eller inte? Kommer detta att ändras med tiden?

De olika drivmedlen kostar olika mycket varje månad.
- En modell använder ett drivmedel som kostar olika per månad. Vart borde månad läggas till, och i vilket format?

Varje bil kostar firman X kronor per månad och Y kronor per mil.
- Är detta per modell eller per bil? Kan detta ändras och hur skulle det påverka eventuella beräkningar.

Varje bil drar in X kronor per uthyrningsdygn och Y kronor per mil.
- Är detta per modell eller per bil? Kan detta ändras och hur skulle det påverka eventuella beräkningar.

Efter varje uthyrning registreras mätarställningen på bilen. (Viktigt med ganska många mätarställningar, >500st totalt för alla bilar.)
- Vad är viktigt här? Vad är det som modelleras? (hint: detta verkar vara den viktigaste information)

EDIT:
Ett sätt att visualisera (om det hjälper) är att anta att det inte finns något IT system, och att de har all information på olika papper.

Te.x.
- En lista på varje modells specifikation.
- En lista över månadsvisa kostnader per drivmedelstyp.
- En lista över alla bilar de har.
- En lista på vad varje bil kostar per dygn och km för kund.
- En lista på vad varje bil kostar per månad och km för företaget.
- En lista med alla uthyrningar.

Fyll sen på med information om vad som skulle finnas på varje papper och sedan vilka andra papper man måste peka på för mer information.

Permalänk
Skrivet av zoomster2:

Firman har ett ~20 bilar av olika märken och modeller.
- Är det märket eller modellen som har betydelse?

De olika modellerna har olika förbrukning.
- Är förbrukningen en del av en modell specifikation eller inte? Kommer detta att ändras med tiden?

De olika modellerna har olika drivmedel.
- Är drivmedelstyp en del av en modell specifikation eller inte? Kommer detta att ändras med tiden?

De olika drivmedlen kostar olika mycket varje månad.
- En modell använder ett drivmedel som kostar olika per månad. Vart borde månad läggas till, och i vilket format?

Varje bil kostar firman X kronor per månad och Y kronor per mil.
- Är detta per modell eller per bil? Kan detta ändras och hur skulle det påverka eventuella beräkningar.

Varje bil drar in X kronor per uthyrningsdygn och Y kronor per mil.
- Är detta per modell eller per bil? Kan detta ändras och hur skulle det påverka eventuella beräkningar.

Efter varje uthyrning registreras mätarställningen på bilen. (Viktigt med ganska många mätarställningar, >500st totalt för alla bilar.)
- Vad är viktigt här? Vad är det som modelleras? (hint: detta verkar vara den viktigaste information)

EDIT:
Ett sätt att visualisera (om det hjälper) är att anta att det inte finns något IT system, och att de har all information på olika papper.

Te.x.
- En lista på varje modells specifikation.
- En lista över månadsvisa kostnader per drivmedelstyp.
- En lista över alla bilar de har.
- En lista på vad varje bil kostar per dygn och km för kund.
- En lista på vad varje bil kostar per månad och km för företaget.
- En lista med alla uthyrningar.

Fyll sen på med information om vad som skulle finnas på varje papper och sedan vilka andra papper man måste peka på för mer information.

Firman har ett ~20 bilar av olika märken och modeller.
- Är det märket eller modellen som har betydelse?

De olika modellerna har olika förbrukning.
- Är förbrukningen en del av en modell specifikation eller inte? Kommer detta att ändras med tiden?
Del av specifikation

De olika modellerna har olika drivmedel.
- Är drivmedelstyp en del av en modell specifikation eller inte? Kommer detta att ändras med tiden?
Del av specifikation

De olika drivmedlen kostar olika mycket varje månad.
- En modell använder ett drivmedel som kostar olika per månad. Vart borde månad läggas till, och i vilket format?
Vet inte riktigt vad som menas här, att bensinpriset kostar olika per månad?

Varje bil kostar firman X kronor per månad och Y kronor per mil.
- Är detta per modell eller per bil? Kan detta ändras och hur skulle det påverka eventuella beräkningar.
Ingen aning om detta egentligen, får söka fram det

Varje bil drar in X kronor per uthyrningsdygn och Y kronor per mil.
- Är detta per modell eller per bil? Kan detta ändras och hur skulle det påverka eventuella beräkningar.
Per modell, blir detta alltså differensen mellan vad kund betalar och vad företaget betalar för bilen?

Efter varje uthyrning registreras mätarställningen på bilen. (Viktigt med ganska många mätarställningar, >500st totalt för alla bilar.)
- Vad är viktigt här? Vad är det som modelleras? (hint: detta verkar vara den viktigaste information)
Ska jag göra ett table med bara olika mätarställningar? som sedan ändras på något sätt mot mocellen?

Permalänk
Medlem

re

Skrivet av Christley:

lär vara busenkelt att skapa en sådan databas. är väl 4-5 tabeller som krävs för just det där. men tycker det är konstigt om du är utbildad inom IT infrastruktur men inte kan databaser. kanske missuppfattar helt vad en sån titel är men kan du sql är de också konstigt.

hur som. jag lärde mig mysql från grunden när jag körde php och tycker att det var bra mycket lättare att skriva sql frågor och göra tabeller än att skriva faktisk kod. så borde inte vara något problem på 20 dagar

OT

Sen när förväntas det att en infratekniker ska kunna skapa databaser sånt låter man utvecklingsavdelningen pyssla med.

Permalänk

Gjorde ett blad om vilka table jag behöver.
https://docs.google.com/spreadsheets/d/1XUTH62zE3pRjyE6Yd0dhF...

Är jag på rätt spår?

Permalänk
Permalänk
Medlem

Om du följer ungefär det som zoomster2 listade sist i sitt inlägg och samtidigt funderar på om det passar frågorna som ställs.

I ditt exempel har du till exempel ingen tabell för själva uthyrningen och har mätarställningen på modellen, det känns som det blir svårt att lista populäraste uthyrningen eller körsträckan utan den tabellen.

Permalänk

Eftersom du börjar närma dig, och modelleringen är mer av analys än den tekniska kunskapen av SQL.

Här är ett par exempel.
Vid den första har jag följt mitt eget råd och skapat en tabell per 'papper'. Så nästa steg är att se hur man kan förenkla.
Det andra exemplet så har jag slagit ihop tabellerna Vehicles, Specifications, RentalFees och VehicleCosts.

Alternativ 1.

Specifications
ID
Name
FuelType
FuelConsumptionPerKm

Vehicles
ID
LicensePlate
SpecificationID

FuelPrices
ID
FuelType
CostPerLitre
ForMonth

RentalFees
VehicleID
PerDay
PerKm

VehicleCosts
VehicleID
PerMonth
PerKm

Rentals
ID
VehicleID
DateOfDeparture
DistanceUponDeparture
DateOfReturn
DistanceUponReturn
DaysRented (calculated?)
TravelDistanceInMeter (calculated?)

Alternativ 2.

Vehicles
ID
LicensePlate
Model
FuelType
FuelConsumptionPerKm
RentalFeePerDay
RentalFeePerKm
VehicleCostPerMonth
VehicleCostPerKm

FuelPrices
ID
FuelType
CostPerLitre
ForMonth

Rentals
ID
VehicleID
DateOfDeparture
DistanceUponDeparture
DateOfReturn
DistanceUponReturn
DaysRented (calculated?)
TravelDistanceInMeter (calculated?)

Permalänk
Skrivet av zoomster2:

Eftersom du börjar närma dig, och modelleringen är mer av analys än den tekniska kunskapen av SQL.

Här är ett par exempel.
Vid den första har jag följt mitt eget råd och skapat en tabell per 'papper'. Så nästa steg är att se hur man kan förenkla.
Det andra exemplet så har jag slagit ihop tabellerna Vehicles, Specifications, RentalFees och VehicleCosts.

Alternativ 1.

Specifications
ID
Name
FuelType
FuelConsumptionPerKm

Vehicles
ID
LicensePlate
SpecificationID

FuelPrices
ID
FuelType
CostPerLitre
ForMonth

RentalFees
VehicleID
PerDay
PerKm

VehicleCosts
VehicleID
PerMonth
PerKm

Rentals
ID
VehicleID
DateOfDeparture
DistanceUponDeparture
DateOfReturn
DistanceUponReturn
DaysRented (calculated?)
TravelDistanceInMeter (calculated?)

Alternativ 2.

Vehicles
ID
LicensePlate
Model
FuelType
FuelConsumptionPerKm
RentalFeePerDay
RentalFeePerKm
VehicleCostPerMonth
VehicleCostPerKm

FuelPrices
ID
FuelType
CostPerLitre
ForMonth

Rentals
ID
VehicleID
DateOfDeparture
DistanceUponDeparture
DateOfReturn
DistanceUponReturn
DaysRented (calculated?)
TravelDistanceInMeter (calculated?)

Har gjort en databas med tabeller enligt alternativ 2, har inte all data rätt för tillfället men det kan jag korrigera sen.
Hur ska jag tänka med att sätta ut PK, FK? Kan man ha flera PK på samma table, t.ex på rentals så måste ID och Vehicle ID vara unika och matchas med en FK. T.ex Vehicle ID --> licenceplate?

ER-diagram https://repository.genmymodel.com/tottaaussie/rental

Alternativ 2.

Vehicles
ID PK
LicensePlate
Model
FuelType
FuelConsumptionPerKm
RentalFeePerDay
RentalFeePerKm
VehicleCostPerMonth
VehicleCostPerKm

FuelPrices
ID PK
FuelType
CostPerLitre
ForMonth

Rentals
ID PK
VehicleID PK
DateOfDeparture
DistanceUponDeparture
DateOfReturn
DistanceUponReturn
DaysRented (calculated?)
TravelDistanceInMeter (calculated?)