5 clients and that their info will never join their data together. Is it admissible to have a potentially infinite number of tables with a table per client?
Non sono sicuro di dove stai andando. Disponi di più copie della tabella Client
? hai più copie delle tabelle che sono unite con Client
? In entrambi i casi, entrambi questi progetti causeranno problemi in futuro, principalmente con problemi di manutenzione a lungo termine.
Di solito ciò che succede è che il modello di dati cambia, quindi devi propagare la modifica a tutte le tabelle copiate e sperare che non si rompa nulla. Ad esempio, la rimozione / modifica delle colonne potrebbe non compromettere l'integrità referenziale per la maggior parte dei client, ma potrebbe esserlo per alcuni, quindi l'ambiente di test deve includere esempi di tutti dati copiati.
Un altro problema è che se stai facendo report, devi unire tutte le tabelle copiate se vuoi che il tuo report copra più di un sottoinsieme delle strutture copiate. Ciò può comportare interrogazioni molto lunghe e ingombranti e, se dimentichi la tabella di un cliente, i risultati saranno sbagliati.
E poi hai il problema di avere query e codice legati ai nomi delle tabelle copiate anche se potrebbero fare tutte la stessa cosa.
Ci sono alcuni casi in cui ciò è utile e forse necessario, ma trovo che sia qualcosa che richiede un po 'di riflessione e una buona ragione per farlo.
Is it admissible to make an unordered query and just assume that is implicitly ordered?
Se l'ordinamento del set di risultati non ha importanza, o se hai intenzione di riordinarlo più tardi nella tua applicazione (magari dopo qualche filtraggio / processo in-application molto specifico), allora non vedo perché questo è un problema. Se vuoi assicurarti che il set di risultati sia ordinato correttamente, aggiungi una clausola ORDER BY
alla tua query.
Naturalmente, se si scopre che alcune tabelle vengono frequentemente colpite con la stessa query e le stesse condizioni di ordinamento, potrebbe avere senso ordinare l'indice utilizzato dalla query in modo che sia ordinato come il modo più comunemente utilizzato. Questo potrebbe darti dei miglioramenti nelle prestazioni. Anche se lo fai, direi che è comunque una buona idea includere ORDER BY
. Principalmente in modo che qualcuno che non ha familiarità con il codice sa esattamente quale sia l'ordine e non deve scavare attraverso le definizioni del database per capirlo. Il modo in cui fai questo può variare a seconda del prodotto del database che stai utilizzando (se è addirittura supportato, ma penso che la maggior parte dei principali motori di database lo supportino).