Wat voor titel moet ik dit dampende probleem nou geven?

  • Onderwerp starter Onderwerp starter Pony
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Pony

Gebruiker
Lid geworden
8 okt 2008
Berichten
10
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
 
Key Constraints

Eerlijk gezegd snap ik totaal niet wat je allemaal bedoeld, maar dat het een vage structuur is, daar heb je in ieder geval gelijk in. :p

Maar het enige dat ik kan bedenken op dit moment met de huidige omschrijving is dat er mogelijk bij het wijzigen een probleem is met enkele key constraints.

Die kun je voorkomen door deze key constraints tijdelijk uit te schakelen:

Code:
SET FOREIGN_KEY_CHECKS = 0;

Vervolgens maak je je aanpassingen aan de tabellen en daarna zet je de constraints weer netjes aan:

Code:
SET FOREIGN_KEY_CHECKS = 1;

Is dit mogelijk wat je bedoeld?
 
Eerlijk gezegd snap ik totaal niet wat je allemaal bedoeld, maar dat het een vage structuur is, daar heb je in ieder geval gelijk in. :p

Maar het enige dat ik kan bedenken op dit moment met de huidige omschrijving is dat er mogelijk bij het wijzigen een probleem is met enkele key constraints.

Die kun je voorkomen door deze key constraints tijdelijk uit te schakelen:

Code:
SET FOREIGN_KEY_CHECKS = 0;

Vervolgens maak je je aanpassingen aan de tabellen en daarna zet je de constraints weer netjes aan:

Code:
SET FOREIGN_KEY_CHECKS = 1;

Is dit mogelijk wat je bedoeld?

Nope..helaas..duidelijker kan ik t ook niet uitleggen. Het is namelijk ook helemaal geen logisch of vaker voorkomend probleem..vandaar dat ik er ook geen antwoord op kon vinden.
 
Tja, sorry, dan kan ik je vrees ik ook niet helpen.

Toch nog succes ermee dan!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan