Hi Leute
Ich hab da ein problem bei meiner Datenbank... Naja, Problem ist vllt übertrieben, aber ich muss ne bessere Lösung finden.
Folgendes Szenario: Ich habe drei Tabellen, Company, Department, User
Company besitzt keine FK's
Department besitzt einen FK auf Company
User besitzt einen FK auf Department
Datenbanksystem ist postgresql
Im Java gibts für jedes Tabelle ein DAO und ein DTO. Für verschiedene Aktionen muss ich von einer Company wissen, ob irgendeine Zeile in Department auf die Company referenziert. Im moment habe ich das so gelöst, dass das CompanyDAO bei einem Select alle Departments ausliest und überprüft, ob eines davon auf die jeweilige Company refernziert. Ist nicht so die schönste Lösung und der falsche Ort für die Abfrage.
Eine weitere möglichkeit, die mir zur Zeit vorschwebt, ist eine seperate Methode im CompanyDAO hasChildren(Company c). In dieser würde das selbe passieren wie oben, nur halt ausgelagert. Das wäre dann zwar besser abgetrennt, allerdings wiederum nicht die schönste möglichkeit...
Meine Frage ist nun, ob es dafür vllt bessere Lösungen gibt. Möglicherweise ein DB Befehl, der zu einer bestimmten Zeile sagen kann, ob auf diese referenziert wird. Noch schöner, aber denke ich kaum dass das funktioniert, einen Befehl, denn man auf dem ResultSet ausführen kann, der das selbe durchführen würde.
Oder gibts da gar keine Möglichkeiten, um nicht selbst Zeile für Zeile aller möglichen Kinder durchzuschauen, ob jetzt irgendwo auf die Company referenziert wird...[/code]
Ich hab da ein problem bei meiner Datenbank... Naja, Problem ist vllt übertrieben, aber ich muss ne bessere Lösung finden.
Folgendes Szenario: Ich habe drei Tabellen, Company, Department, User
Company besitzt keine FK's
Department besitzt einen FK auf Company
User besitzt einen FK auf Department
Datenbanksystem ist postgresql
Im Java gibts für jedes Tabelle ein DAO und ein DTO. Für verschiedene Aktionen muss ich von einer Company wissen, ob irgendeine Zeile in Department auf die Company referenziert. Im moment habe ich das so gelöst, dass das CompanyDAO bei einem Select alle Departments ausliest und überprüft, ob eines davon auf die jeweilige Company refernziert. Ist nicht so die schönste Lösung und der falsche Ort für die Abfrage.
Code:
Company company = CompanyDAO.readById(id);
boolean children = false;
ArrayList<Department> departments = new DepartmentDAO().readAll();
if(departments != null) {
for(Department d: departments){
if(d.getCompanyId() == company.getId()) {
used = true;
break;
}
}
}
Meine Frage ist nun, ob es dafür vllt bessere Lösungen gibt. Möglicherweise ein DB Befehl, der zu einer bestimmten Zeile sagen kann, ob auf diese referenziert wird. Noch schöner, aber denke ich kaum dass das funktioniert, einen Befehl, denn man auf dem ResultSet ausführen kann, der das selbe durchführen würde.
Oder gibts da gar keine Möglichkeiten, um nicht selbst Zeile für Zeile aller möglichen Kinder durchzuschauen, ob jetzt irgendwo auf die Company referenziert wird...[/code]