hmm: SQL Query

Beitrag lesen

Hi leute,

ich muss leider meine Datenbank komplett umkrempeln und habe jetzt Probleme mit einer Insertquery.

Meine neuen Tabellen haben folgende Form (ich benutze übrigens sqlite3):

create table user (user_id INTEGER PRIMARY KEY AUTOINCREMENT, email TEXT, anrede TEXT, vorname TEXT, nachname TEXT, passwort TEXT);
create table mitarbeiter (mitarbeiter_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);
create table user_mitarbeiter (user_id INTEGER, mitarbeiter_id INTEGER);
create table mitarbeiter_skill (mitarbeiter_id INTEGER, skill TEXT, subskill TEXT, nivau TEXT,  PRIMARY KEY (mitarbeiter_id, skill, subskill));
create table team (team_id INTEGER PRIMARY KEY AUTOINCREMENT, team_name TEXT);
create table user_team (user_id INTEGER, team_id INTEGER, admin INTEGER, PRIMARY KEY (user_id, team_id));

Wenn sich jemanhd auf meiner Seite einloggt, so kann er diese Tabellen mit werten befüllen. Die eindeutige EMail des Users ist abrufbar per

req.session.email

Hat der User neue Daten eingetragen so werden die alten Daten des Users gelöscht und durch die Neuen ersetzt, dass sah bei meinen alten Tabellen so aus:

app.post('/saveSkillData', function(req, res) {
    
    if(req.session.email) {
        var insertQuerys = [];
        var deleteStatment = "delete from skill_data where email = '" + req.session.email + "';";
        dbManager.deleteStatment(deleteStatment);

        for(var i = 0; i < req.body.arr.length; i++) {
            var data = req.body.arr[i];
            if(data.skill.trim() != "" && data.subskill.trim() != "" 
                && data.name.trim() != "" && data.nivau.trim() != "") {
                var insertQuery = "INSERT into " + tabellen + " (email, skill, subskill, NAME, nivau) VALUES ('"
                    + req.session.email + "', '" 
                    + data.skill + "', '"
                    + data.subskill + "', '"
                    + data.name + "', '"
                    + data.nivau
                    + "');";
                insertQuerys[i] = insertQuery;
            }
        }
        dbManager.insertDataWithQuerys(insertQuerys);
    }
});

Anstelle der Alten skill_data Tabelle habe ich jetzt aber eine Tabelle die ich wie folgt zusammenjoinen kann:

var tabellen = "user join user_mitarbeiter on user.user_id = user_mitarbeiter.user_id"
                 + " join mitarbeiter on user_mitarbeiter.mitarbeiter_id = mitarbeiter.mitarbeiter_id"
                 + " join mitarbeiter_skill on user_mitarbeiter.mitarbeiter_id = mitarbeiter_skill.mitarbeiter_id";
    

Jetzt möchte ich den saveSkillData Code so umschreiben, dass er auch für die neuen Tabelle funktioniert, also für die gejointe Tabelle anstelle der alten Tabelle skill_data.

Habe ich mir meine Anwendung gerade komplett kaputt "Datenbanken normalisiert"? Ich krieg schon Kopfschmerzen, wenn ich nur darüber nachdenke, welche Values die gejointe Tabelle jetzt frisst. (da alle Tabellen zurzeit leer sind, zeigt mir sqlite auch keinen Header an, selbst bei .header on nicht :( )

akzeptierte Antworten