MySQL struktur/performance?

Tags:    mysql sql

Hej.

Skal lave et database struktur til en bådeportal.
der er måske 2-300data om hver båd.

nogen både har 1motor, nogen har 2, nogen har ingen, så ikke alle både har brug for at have samme data gemt.

sådan som jeg ser det er der 2 løsninger: (hurtigt sat sammen, selv om der skal rettes nogen ting skulle det vise hvordan jeg havde tænk det.)

1. en tabel for hver attribute type (motor, tank, osv)
Fold kodeboks ind/udKode 


2. en attribut tabel og en anden tabel der joiner attributes til en båd
Fold kodeboks ind/udKode 


jeg er bare i tvilv om hvad der er bedst med hensyn til udvidelse muligheder vs performance.
eller skal jeg lave det på en helt anden måde?

hvordan ville i gøre?

edit: blev ik så overskueligt som det så ud i editoren, men håber det kan læses.



Indlæg senest redigeret d. 23.11.2011 16:22 af Bruger #3427
9 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Fra Basic til Aptering, minus motor i en tabel. (Evt. plus Elektrisk udstyr)
Resten smider du i en i udstyrs tabel, og en kategori tabel. Alle båd og udstyr har en mange-til-mange relation. Udstyr og kategori en en-til-en relation. Motor kan du så lægge i en sidste tabel med en mange-til-mange relation hvis der evt. skulle være behov for at notere backup motorer.

Fold kodeboks ind/udKode 


Det er nok dit bedst udgangspunkt.

Hvad målene angår, så har alle både de mål du omtaler. Det er bare ikke alle leverandører der har oplyst disse mål. Men det er nok ikke alle både der har et plasma tv. :)



Indlæg senest redigeret d. 23.11.2011 21:10 af Bruger #10216
Jeg synes dit eget forslag 2 med en tvist. Jeg ville holde attribute værdien sammen med selve attributten, der er vel en forholdsvist samlet mængde at motorer, tanke osv.

Jeg ville så også flytte "Type" og "attr" sammen i den samme tabel, således du har en oversigt over type og enhed der måles i (hp, mph, liter osv.) - jeg synes ikke det giver mening at have den normaliseret ud, da en tank fx. ikke kan måles i hp. Det betyder du vil have en større tabel fx:

Fold kodeboks ind/udKode 


for alt fra aptering og ned vil jeg lave en enkelt tabel med id, navn og antal (antal skal med fordi der kan være 2 toiletter og også 2 radioer, gps osv.), og så en fordelingstabel med bådid og id fra denne tabel.

Performance skal du ikke tænke på, så længe du selecter og har fornuftige indekser, så er det ikke et problem. Den generelle regel er at det er ved indsætning man har problemerne med store normaliserede tabeller, ved læsning er der ikke noget.



Hvorfor vil du have så mange tabeller?

Nu er jeg ikke inde i hvordan både har det med motorer osv.

Men vi er jo nød til at finde ud af hvis en båd har to motorer, er det så ens motorer der er monteret, eller er det to forskellige.

Hvorfor ikke bare lave tabellerne som her
Baad
- id (primery)
- Name
- engine1_id (fremmed)
- engine2_id (fremmed)
- tank_id (fremmed)

Motor
- id (primery)
- name
- rpm
- hp
- timer

Tank
- id (primery)
- volumen

I min verden må det være den optimale.

Men 2-300 data om hver båd er godt nok mange informationer.
Men så er vi vel også ude i al information om hver enkelt båd (størrelse, farve, motor, tank, ekstraudstyr, osv.)?





bare for at holde det simpelt her på udvikleren, men der er også flere info om en motor end rpm og hk. - bare for at holde det kort.

men tænk på navigations udstyr, motor, mål, tv, køken udstyr, vaskemaskine osv, der er virklig mange informationer der skal gammes

men okay 300 var måske lidt højt sat :)

"Men så er vi vel også ude i al information om hver enkelt båd (størrelse, farve, motor, tank, ekstraudstyr, osv.)?"
Jep næsten alt.



Det hele kommer meget an på hvordan du vil benytte dine data.

F.eks. kan du stille dig selv en række spørgsmål. Disse spørgsmål skal gerne dække det generelle behov for din målgruppe, system mm. og dermed også analysere hvilke svar du vil give.

F.eks, navigationsudstyr (og svarmuligheder):

Har båden navigationsudstyr? (ja/nej)
Hvilket navigationsudstyr har båden? (den har X som navigationsudstyr)
Har den navigationsudstyr og hvad kan det? (båden har navigationsudstyr, og du kan læse mere om det her)

Så skal du her afdække behovet: Er det virkelig nødvendigt at fortælle hvilket navigationsudstyr der er i båden, og hvad navigationsudstyret kan.

Jeg tror du skal søge inspiration i f.eks. bilbasen, bådbasen og andre auto-sites.



jeg ved godt hvad data jeg skal gemme, har været på udkig på andre sites, er bare ik helt sikker på hvordan jeg sætter det op smatest.

Specs kunne se sådan her ud.

Basic
Title: 57' Posillipo TECHNEMA 60
Year: 1992
Current Price: EUR 250,000 Tax Not Paid
Located in Mainland Spain, Spain
Hull Material: Fiberglass
Engine/Fuel Type: Twin diesel

Specifikationer
Fabrikant: Posillipo, Italy
Indregistrering: Spanien

Mål
Samlet længde: 17.30 m
Bom: 4.76 m

Motorer
Motormærke: MAN
Motoreffekt: 1660 HP
Motormodel: D2840-LXE
Sejlhastighed: 20 knob @ 1500 Omdr/min.
Maks. hastighed: 32 knob
Motortimer: 1400

Tanke
Ferskvandstanke: (1000 Liter)
Brændstoftanke: (2800 Liter)
Holdingtanke: 1

Aptering
Antal enkeltkøjer: 2
Antal 2-pers. kahytter: 4
Antal dobbeltkøjer: 1
Antal kahytter: 4
Antal toiletter: 3
Antal badeværelser: 2

Elektronik
Ekkolod
Plotter
Kompas
GPS
VHF
Radar
Tv
Dvd-afspiller
Cd-afspiller

Interiør
Bovpropeller
Batterioplader
Air condition
Opvarmning
Varmt vand
Opvaskemaskine
Ovn
Køleskab

Elektrisk udstyr
Landtilslutning for el
Generator

Udenbordsudstyr/Ekstraudstyr
Sidedæk i teak
Badelejder
Redningsflåde

Navigation
Compass
Raymarine depthsounder
Raymarine GPS
Raymarine 24 nm radar/plotter
Furuno 24 nm radar
VHF

Equipment
Plasma TV
DVD
CD player
stereo system
Liferaft
lifejackets
Large garage for tender
underwater light

fordi nogen både har flere mål end 2 etc, så det skal være dynamisk.




Hvad målene angår, så har alle både de mål du omtaler. Det er bare ikke alle leverandører der har oplyst disse mål. Men det er nok ikke alle både der har et plasma tv. :)


ja men der er ik mastmål på en motorbåd for eksempel :)



Så er mastmålet vel 0 mm? ;)
og så udskriver dit systemet båden som værende uden mast.

Man kan også overdrive sin normalisering.



Man kan også overdrive sin normalisering.

du har nok ret ;D


Performance skal du ikke tænke på, så længe du selecter og har fornuftige indekser, så er det ikke et problem. Den generelle regel er at det er ved indsætning man har problemerne med store normaliserede tabeller, ved læsning er der ikke noget.

Tak for info. :)



t