Ich habe eine Datenbank gegeben, die kontinuierlich durch einen automatischen Import gefüllt wird. Daher kann ich die Datenbankstruktur nicht ändern und muss das Doctrine-Modell um die Datenbank herum erstellen. Daher habe ich dafür ein Modell erstellt und die meisten Dinge funktionieren in meinem Quellcode gut, vor allem aber nicht für die folgenden Tabellen.Symfony + Doctrine Probleme mit der Modellierung der angegebenen Datenbank
Table Device
----------
deviceId (pk)
name
deviceType (fk to DeviceType)
...
Table Processor
-----------
deviceId (pk)
ProcessorName
Clockspeed
...
Table RAM
-----------
deviceId (pk)
Size
Manufacturer
...
Table DeviceType
------------
deviceTypeId(pk)
DeviceType
...
Lehre wurde Erzeugung eine Eins-zu-Eins-Abbildung, beispielsweise zwischen dem Gerät und der RAM-Tabelle, was falsch ist, denke ich. Das Problem ist, teilen die Tabellen den Primärschlüssel (DeviceId). Wenn es also ein Gerät mit der ID 1 in der Gerätetabelle gibt, gibt es auch ein Dataset in der RAM-Tabelle, wenn der Gerätetyp "RAM" ist (definiert in der Tabelle deviceType). ID 2 ist beispielsweise ein Prozessor, also gibt es einen Eintrag im Gerät und im Prozessor, beide mit der ID 2. Und so weiter ... Ein Datensatzeintrag in der Gerätetabelle hat immer einen Gerätetyp, der in der Gerätetyptabelle definiert ist.
Ich bin nicht der Datenbankspezialist, aber ist das nicht wirklich eine Beziehung zwischen mir und einer Eins-zu-eins-Zuordnung? Wie kann ich die Subtypen von Gerät (RAM, Prozessor) der übergeordneten Tabelle in Doctrine zuordnen?
Nach googlen, ich denke, eine einzelne Tabelle Vererbung ist was ich suche, aber ich weiß nicht, ob Doctrine kann mein Datenbankmodell richtig umgehen, weil das einzige, was die Subtypen (RAM, Prozessor ...) teilen mit der Elternklasse (Gerät) ist das ID-Feld. Alle anderen Felder sind für jede Tabelle sehr unterschiedlich.
Es ist wirklich wichtig, dass Doctrine die Struktur meiner Datenbank nicht berührt, weil der Import nicht mehr funktioniert.
Irgendwelche Ideen?
Vielen Dank.
Ich glaube nicht, dass es möglich ist, ohne die vorhandene Datenbank aufgrund seines "schlechten Designs" zu ändern. Wenn Sie den Importvorgang nicht mit einem leicht geänderten Schema aktualisieren können, versuchen Sie es mit der automatisch generierten Zuordnung und implementieren Sie die erforderlichen Funktionen, um die Objekte in einem benutzerdefinierten Repository abzurufen. – lordrhodos
Ok, ich habe es versucht und versucht, das Doktrinmodell zu aktualisieren, jetzt bekomme ich Verletzungen der Integrität, wenn die Doktrin einen neuen Fremdschlüssel setzt ... –