C'è qualche motivo per creare vincoli tra le tabelle (all'interno di SQLserver) al giorno d'oggi? Se sì, quando? La maggior parte delle applicazioni nella mia area sono basate su principi di oggetti e le tabelle vengono unite su richiesta. La domanda si basa sulla necessità dell'applicazione. Non caricherò un mucchio di tabelle vincolate per una semplice ricerca, che a sua volta (dopo l'azione) richiedono l'un l'altro una semplice ricerca.
Gli strumenti ORM come EntityContext, Linq2Data, NHibernate gestiscono da soli i vincoli, almeno sai quali tabelle hanno bisogno l'una dell'altra. Fare dei vincoli all'interno del server equivale a fare (forzare) le stesse modifiche due volte?
Di solito non è una domanda da prendere per decisione, ma questo database è stato progettato in modo abbastanza diverso. Il design sembra regolare, per lo più rispecchiava gli oggetti utilizzati dalle applicazioni. Ciò che mi disturba sono tutti i vincoli configurati all'interno di SQLserver con "not cascade". Il che significa che devi giocare "cerca e trova" quando codi nuove query del database. Alcuni casi richiedono fino a 10 livelli di un ordine esatto per effettuare una singola eliminazione.
Questo mi sorprende e non sono sicuro di come gestirlo.
Nel mio mondo semplice, questa impostazione rende i vincoli perdere la maggior parte dello scopo. OK se il database è stato acceduto da host senza conoscenza del design.
Come agiresti in questo scenario?
Perché non rimuovere solo tutti i vincoli da db e tenerli a livello di applicazione?