Hallo mensen,
Ik zit werkelijk met m'n handen in het haar. Laat ik voor de duidelijkheid eerst een inleidend verhaaltje geven. Ik heb een database aansturing gemaakt met php en sql waarin meetwaarden worden toegevoegd. Om wat concreter te zijn: er bestaan tekstbestanden met meetwaarden die worden uitgelezen en na eventuele bewerking in tabellen worden opgeslagen. Dit gaat allemaal prima. Deze meetwaarden zijn afkomstig van zonnepanelen, windturbines, kwh-meters, inverters en ad-converters. Deze meetmodulen kunnen aan de database worden toegevoegd zodat een koppeling ontstaat tussen de meetwaarden en de genoemde meetmodules. Er bestaat per meetmodule een tabel (tabel solar_panel, kwh_meter, wind_turbine etc) Dit ging tot voor kort ook allemaal prima. Nu is er echter bij mij een probleem opgetreden waar ik totaal niet uitkom. Door een wat ongelukkige database structuur bestaat er een tabel 'object' waarin kolommen staan die gelijk zijn aan de id's van de genoemde modules. Dit ziet er als volgt uit:
CREATE TABLE IF NOT EXISTS `object` (
`id` int(4) NOT NULL auto_increment,
`solar_id` int(3) NOT NULL,
`wind_id` int(3) NOT NULL,
`kwh_id` int(3) NOT NULL,
`inv_id` int(3) NOT NULL,
`adc_id` int(3) NOT NULL,
PRIMARY KEY (`id`),
KEY `solar_id` (`solar_id`),
KEY `wind_id` (`wind_id`),
KEY `inv_id` (`inv_id`),
KEY `kwh_id` (`kwh_id`),
KEY `adc_id` (`adc_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
De bedoeling hiervan is, dat er voor iedere meetmodule één uniek object-id is, ongeacht het type meetmodule. Het ongelukkige van deze tabel is de verwijzende sleutels naar de andere tabellen. Wanneer een meetmodule wordt toegevoegd in de tabel 'object' kan voor de overige kolommen geen nul, niets of welke andere waarde dan ook worden ingevuld omdat er dan problemen optreden met de verwijzende sleutels. Dit probleem is opgelost door in de tabel van elke meetmodule een default record met id '1' toe te voegen die wordt gebruikt om de overige kolommen van de tabel 'object' in te vullen. En dan komt nu het probleem. Wanneer ik achter elkaar in de tabel van iedere meetmodule kijk of er al een default record aanwezig is en, wanneer dit niet het geval is, deze toevoeg, blijft er ELKE keer één tabel zonder default record. Dit is ook steeds willekeurig een andere tabel. Ik heb geprobeerd dit voor elke tabel in een aparte functie en een apart bestand te zetten maar het lukt me gewoon echt niet.
Wie kan mij helpen?
Groeten,
Pony
Ik zit werkelijk met m'n handen in het haar. Laat ik voor de duidelijkheid eerst een inleidend verhaaltje geven. Ik heb een database aansturing gemaakt met php en sql waarin meetwaarden worden toegevoegd. Om wat concreter te zijn: er bestaan tekstbestanden met meetwaarden die worden uitgelezen en na eventuele bewerking in tabellen worden opgeslagen. Dit gaat allemaal prima. Deze meetwaarden zijn afkomstig van zonnepanelen, windturbines, kwh-meters, inverters en ad-converters. Deze meetmodulen kunnen aan de database worden toegevoegd zodat een koppeling ontstaat tussen de meetwaarden en de genoemde meetmodules. Er bestaat per meetmodule een tabel (tabel solar_panel, kwh_meter, wind_turbine etc) Dit ging tot voor kort ook allemaal prima. Nu is er echter bij mij een probleem opgetreden waar ik totaal niet uitkom. Door een wat ongelukkige database structuur bestaat er een tabel 'object' waarin kolommen staan die gelijk zijn aan de id's van de genoemde modules. Dit ziet er als volgt uit:
CREATE TABLE IF NOT EXISTS `object` (
`id` int(4) NOT NULL auto_increment,
`solar_id` int(3) NOT NULL,
`wind_id` int(3) NOT NULL,
`kwh_id` int(3) NOT NULL,
`inv_id` int(3) NOT NULL,
`adc_id` int(3) NOT NULL,
PRIMARY KEY (`id`),
KEY `solar_id` (`solar_id`),
KEY `wind_id` (`wind_id`),
KEY `inv_id` (`inv_id`),
KEY `kwh_id` (`kwh_id`),
KEY `adc_id` (`adc_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
De bedoeling hiervan is, dat er voor iedere meetmodule één uniek object-id is, ongeacht het type meetmodule. Het ongelukkige van deze tabel is de verwijzende sleutels naar de andere tabellen. Wanneer een meetmodule wordt toegevoegd in de tabel 'object' kan voor de overige kolommen geen nul, niets of welke andere waarde dan ook worden ingevuld omdat er dan problemen optreden met de verwijzende sleutels. Dit probleem is opgelost door in de tabel van elke meetmodule een default record met id '1' toe te voegen die wordt gebruikt om de overige kolommen van de tabel 'object' in te vullen. En dan komt nu het probleem. Wanneer ik achter elkaar in de tabel van iedere meetmodule kijk of er al een default record aanwezig is en, wanneer dit niet het geval is, deze toevoeg, blijft er ELKE keer één tabel zonder default record. Dit is ook steeds willekeurig een andere tabel. Ik heb geprobeerd dit voor elke tabel in een aparte functie en een apart bestand te zetten maar het lukt me gewoon echt niet.
Wie kan mij helpen?
Groeten,
Pony