Buna,
as avea nevoie de un sfat referitor la o problema de arhitectura.
Folosesc in BD o tabela de useri, sincronizata cu AD, care este referita de majoritatea tabelelor din DB, prin cel putin 2 campuri. Noi ne-am gandit sa facem fk din orice tabela catre cea de useri ca sa logam id-ul userului care a creat fiecare inregistrare si a celui care a modificat-o ultima data.
Problema este ca , in cazul in care un user nu este activ - a fost creat din greseala sau mai stiu eu ce situatie mai apare, am nevoie sa il sterg. Insa, datorita faptului ca deja am peste 300 referinte la tabela de useri, si nr lor va mai creste, sql nu reuseste sa isi construiasca query planul. SI da eroarea : The query processor ran out of stack space during query optimization. Please simplify the query
Deocamdata am gasit 2 solutii:
- sa renuntam la fk si eventual sa facem verificarile pe triggeri la delete, ca userul nu a fost folosit in nici una din cel x...sute de tabele
- sa utilizam o tabela de useri de care sa se lege x tabele care sa contina id user, si care sa fie referite fiecare de o parte din tabelele existente; Ex: tabela u1 - sa fie referita de primele 100 tabele din DB; tabela u2 - referita de urmatoarele 100. Asta ar insemna ca sa stim ce tabela u ii corespunde fiecarei tabele de date din DB. Dar e o solutie greoaie si greu de monitorizat in cazul in care apar modificari.
Are cineva alte solutii? Idei?
Mercic mult
Ela