Ik ben bezig met een nieuwe database te ontwerpen voor mijn applicatie.
Onze applicatie voor het loggen van machine gegevens wil ik naar een hoger niveau brengen.
Voorheen hadden we alleen de totale tijd dat een machine stil had gestaan of draaiden.
Ik wil het zo maken dat elk tijdstip van een stop of start terug te halen is. De totale duur kan ik vervolgens weer berekenen uit de gelogde stops.
Nu probeer ik mijn database efficient op te bouwen en nu had ik het een en ander gelezen over een multi kolom Primairy key. In mijn ogen een leuke oplossing want dan scheelt me dat per tabel 1 complete kolom dus minder data.
Echter zie ik ook veel reacties dat het een negatieve impact kan hebben op je performance.
Omdat ik zelden een database opzet en deze niet heel spectaculair zijn heb ik niet genoeg kennis wat het beste zou zijn in mijn situatie. En ik hoop dat jullie mij op weg kunnen helpen wat het verstandigste is in mijn situatie.
Ik heb een paar van deze tabellen:
t_Counter
- EventTime (PK)
- Machine_id (PK)
- Countername_id (PK)
- CounterValue
- CounterDifference
&
t_MachineState
- EventTime (PK)
- Machine_id (PK)
- State
De machine state kan zich altijd maar in 1 situatie verkeren. Of start, of stop, of manual.
Een record zal geschreven worden als de machine status veranderd. Ofwel de combinatie van EventTime en Machine_id is ten alle tijde uniek. Ik zou zeggen dan is dit is een multi kolom PK. Dit sheelt me 1 kolom MachineState_id.
Voor counters precies hetzelfde alleen 1 machine kan meerdere counters hebben. Alle counter van alle machine's worden elke 15 seconden gelogd. Ofwel de combinaite van EventTime, Machine_id & CounterName_id is uniek en multi kolom PK. Dus ook hier weer dit scheelt mij 1 kolom.
Is dit aan te raden om, of zouden jullie dit toch oplossen met een id kolom?
**note: Uiteindelijk zal ik een multi order moeten uitvoeren op de tabel t_machineState. Ik zal moeten orderen op tijd. Als ik een ID colomn heb dan kan ik ook orderen op ID aangezien dit direct gerelateerd is aan tijd. Misschien kan orderen op deze manier sneller kunnen...
Onze applicatie voor het loggen van machine gegevens wil ik naar een hoger niveau brengen.
Voorheen hadden we alleen de totale tijd dat een machine stil had gestaan of draaiden.
Ik wil het zo maken dat elk tijdstip van een stop of start terug te halen is. De totale duur kan ik vervolgens weer berekenen uit de gelogde stops.
Nu probeer ik mijn database efficient op te bouwen en nu had ik het een en ander gelezen over een multi kolom Primairy key. In mijn ogen een leuke oplossing want dan scheelt me dat per tabel 1 complete kolom dus minder data.
Echter zie ik ook veel reacties dat het een negatieve impact kan hebben op je performance.
Omdat ik zelden een database opzet en deze niet heel spectaculair zijn heb ik niet genoeg kennis wat het beste zou zijn in mijn situatie. En ik hoop dat jullie mij op weg kunnen helpen wat het verstandigste is in mijn situatie.
Ik heb een paar van deze tabellen:
t_Counter
- EventTime (PK)
- Machine_id (PK)
- Countername_id (PK)
- CounterValue
- CounterDifference
&
t_MachineState
- EventTime (PK)
- Machine_id (PK)
- State
De machine state kan zich altijd maar in 1 situatie verkeren. Of start, of stop, of manual.
Een record zal geschreven worden als de machine status veranderd. Ofwel de combinatie van EventTime en Machine_id is ten alle tijde uniek. Ik zou zeggen dan is dit is een multi kolom PK. Dit sheelt me 1 kolom MachineState_id.
Voor counters precies hetzelfde alleen 1 machine kan meerdere counters hebben. Alle counter van alle machine's worden elke 15 seconden gelogd. Ofwel de combinaite van EventTime, Machine_id & CounterName_id is uniek en multi kolom PK. Dus ook hier weer dit scheelt mij 1 kolom.
Is dit aan te raden om, of zouden jullie dit toch oplossen met een id kolom?
**note: Uiteindelijk zal ik een multi order moeten uitvoeren op de tabel t_machineState. Ik zal moeten orderen op tijd. Als ik een ID colomn heb dan kan ik ook orderen op ID aangezien dit direct gerelateerd is aan tijd. Misschien kan orderen op deze manier sneller kunnen...
[ Voor 6% gewijzigd door eatualive op 02-08-2013 11:21 ]
