Domanda

Sto implementando un'applicazione basata sul web utilizzando silverlight con un DB SQL Server sul back-end per tutti i dati che l'applicazione visualizzerà. Voglio assicurarmi che l'applicazione possa essere facilmente scalabile e sento che la direzione da seguire è fare in modo che il database sia liberamente accoppiato e non legare tutto con chiavi esterne. Ho provato a cercare alcuni esempi ma senza risultati.

Qualcuno ha qualche informazione o buoni punti di partenza / campioni / esempi per aiutarmi a decollare con questo?

Aiuto molto apprezzato.

Cordiali saluti,

È stato utile?

Soluzione

A meno che tu non stia eseguendo enormi quantità di inserti alla volta, come in un data warehouse, usa chiavi esterne . Normalizzazione si ridimensiona come un matto e dovresti approfittarne. Le chiavi esterne sono veloci e il vincolo ti trattiene davvero solo se stai inserendo milioni e milioni di record alla volta.

Assicurati di utilizzare chiavi intere con un indice cluster su di esse. Ciò dovrebbe rendere la tabella di giunzione molto rapida. I problemi che puoi affrontare senza chiavi esterne sono molti e frustranti. Ho appena trascorso tutto il fine settimana a farlo, e abbiamo fatto una scelta consapevole di non avere chiavi esterne (abbiamo però terabyte di dati).

Altri suggerimenti

Penso che stai mescolando un po 'la tua terminologia. "liberamente accoppiato" si riferisce alla desiderabilità di avere componenti software che non sono così dipendenti l'uno dall'altro da non poter funzionare o persino compilare senza essere uniti nello stesso programma. Non ho mai visto il termine usato per descrivere le relazioni tra le tabelle nello stesso database.

Penso che se cerchi i termini "normalizzazione" e "denormalizzazione" otterrai risultati migliori.

Prima ancora di pensare a una cosa del genere, devi pensare all'integrità dei dati. Esistono chiavi esterne per cui non è possibile inserire record nelle tabelle se i dati primari su cui si basano non sono presenti. Se non usi chiavi esterne, prima o poi (probabilmente prima) finirai con dati privi di valore perché non sai davvero a chi è il cliente a cui è collegato l'ordine, ad esempio. Le chiavi esterne sono protezione dei dati, non dovresti mai considerare di non utilizzarle.

E anche se pensi che tutti i tuoi dati verranno dalla tua applicazione, nella vita reale, questo semplicemente non è vero. I dati arrivano da più applicazioni, dalle importazioni di grandi quantità di dati, dalla finestra della query (pensate a quando qualcuno decide di aggiornare tutti i prezzi che non intendono fare un prezzo alla volta dall'interfaccia utente). I dati possono entrare nel database da molte fonti e devono essere protetti a livello di database. Fare di meno è mettere a rischio l'intera applicazione e i dati.

Commento interessante sulla sicurezza del database quando i dati vengono immessi attraverso fonti esterne come gli script del database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top