Quando data di due testi diversi é la stessa dovrebbe uscire output e quindi il testo deve essere riscritto per un altra data
Hai due possibilità:
- effettuare il controllo contestualmente all'inserimento, dunque evitando che nella base di dati possano masi esistere due testi con la stessa data
- effettuare il controllo a posteriori, quando nella base di dati ci sono potenzialmente già dei testi con la stessa data
Nel primo caso, con lo schema che hai attualmente, ti basta dichiarare le colonna dateid della tabella di lookup e la colonna con la data della tabella delle date come UNIQUE. In questo modo potrà esistere un'unico record per ogni data, ed un unico record di lookup per ogni data, di conseguenza un unico testo per data. Sarà la base di dati stessa a generare un errore se cerchi di inserire un testo associandolo ad una data già "occupata".
Nel secondo caso, un'interrogazione come questa (occhio ad eventuali errori di sintassi):
Codice:
SELECT date.data, COUNT(*) FROM testo JOIN lookup ON testo.id = lookup.testoid JOIN date ON date.id = lookup.dateid GROUP BY date.data HAVING COUNT(*) > 1;
restituirà tutte e sole le date a cui sono associati almeno due testi.
A pensarci bene forse bastano due tabelle
Probabilmente ne basta una sola, quella del testo, in cui la data diventa un attributo. Le interrogazioni diventeranno più semplici. A meno che non ci sia una buona motivazione per avere una data come entità a se stante.