Database relaties hulp

Status
Niet open voor verdere reacties.

davidw5391

Nieuwe gebruiker
Lid geworden
18 jan 2013
Berichten
2
Dag allemaal,

ik ben sinds enige tijd begonnen met wat domotica experimentjes. Na wat programmeerwerk (en vooral debugwerk :p) in C++ & PHP kan ik nu al verlichting aansturing via timers en een (remote) website. Ik gebruik een DMX kring (Enttec DMX Pro + 8 dimmerkanalen) en binnenkort komt er nog een RFXcom transceiver bij om RF signalen te ontvangen en te versturen.

Ik wil nu een klein websitetje opzetten waar ik het beheer van de apparaten kan doen en ook m'n ip camera's kan bekijken en ook timers etc. instellen. Momenteel probeer ik een mysql database op te zetten, hieronder vind je het huidige design. Ik heb in het verleden al vaak gewerkt met MySQL databases, maar nog nooit echt met relaties etc.

De hoofdtabel is 'devices', hier staat in hoe apparaten noemen, van welke controller ze gebruik maken, waar het toestel zicht bevind in huis en tot welke categorie het toestel behoort (slechts 1). De relatie tussen 'devices', 'categories' en 'locations' lijken me in orde?

Elk eindtoestel (dus geen controllers) zal in deze hoofdtabel komen te staan. Afhankelijk van welke controller is aangegeven bij een toestel in de tabel 'devices', moet er extra data gehaald worden uit de tabellen 'network (zal gaan dienen om routers te pingen), 'ipcams' en 'dmx'. Dit is waar ik vast loop :confused:, ik heb geen idee hoe ik de relaties tussen de tabel 'devices', 'controllers', 'network', 'ipcams' en 'dmx' moet leggen. Misschien moeten er tussentabellen gebruikt worden?

Hopelijk kunnen jullie me hierbij helpen? Alvast bedankt voor het lezen van deze vraag :thumb:

dha_mysql.png
 
Dag David,

Als je altijd maar 1x data nodig hebt uit elke tabel aan de rechterkant, kun je de koppeling direct leggen via 'devices'. Is het zo dat je meerdere data uit 1 tabel gaat nodig hebben, dan zul je wel een tussentabel moeten gebruiken met de IDs van de 3 tables en de 'devices' table.

Vriendelijke groet,

Bart
 
Als je altijd maar 1x data nodig hebt uit elke tabel aan de rechterkant, kun je de koppeling direct leggen via 'devices'. Is het zo dat je meerdere data uit 1 tabel gaat nodig hebben, dan zul je wel een tussentabel moeten gebruiken met de IDs van de 3 tables en de 'devices' table.

Dag Bart,

bedankt voor je antwoord.

Volgens mij was het nog niet duidelijk i.v.m. de tabellen aan de rechterkant.

Afhankelijk van wat er gespecificeerd wordt in 'devices.controller_id', moet er data gehaald worden uit 'network' OF 'ipcams' OF 'dmx'.

Dus bv. 'controller_id' = 1 verwijst naar de dmx controller en dus moet er data gehaald worden uit de tabel 'dmx'.
Dus bv. 'controller_id' = 2 verwijst naar ipcams en dus moet er data gehaald worden uit de tabel 'ipcams'.

Snappie? Hoe kan ik dit best aanpakken?

Groetjes, David
 
Dag David,

Het enige wat dan eigenlijk de beste en meest snelle optie zal zijn, is 3 kolommen creëren in de 'controllers' table. Iedere kolom vertegenwoordigd dan een foreign key die verwijst naar ieder van deze 3 tabellen. Het kan op een andere manier (zoals een ID die maar 1 keer mag voorkomen in 1 van de drie tabellen) maar dan is het simpelweg niet mogelijk om de relatie met deze tabellen te leggen en moet je dus oppassen met wat je insert.

Vriendelijke groet,

Bart
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan