0

Ich habe Tabellen wie Customer, Purchase usw., die manchmal mit ihnen verbunden sind Dokumente, durch Dokumente meine ich einige Datei irgendwo (wie ein gescanntes Führerschein oder etwas)ist das Hinzufügen von reservierten Felder für zukünftige Werte eine gute Idee

Wir kann nicht die Anwendung diese Dokumente direkt in der Datenbank habe ich für diese eine unique~~POS=TRUNC Spalte so stattdessen laden haben

Meine Frage (Sollte ich stattdessen einen Dateihash haben?):
In Zukunft könnten wir mehrere Dokumente mit einem in Verbindung gebracht Tabelle, so dachte ich über das Hinzufügen von zusätzlichen Feldern wie:

Kunden
+ DriversLicenseDoc
+ Document1 // für die Zukunft
+ Document2 // zukünftige Verwendung

So in der Zukunft, wenn sie sich entscheiden, sie ein anderes Dokument möchte ich nur haben Aktualisieren Sie mein Entity-Framework-Modell und benennen Sie die Spalte in meinem Modell um und die Datenbank muss sich nicht ändern?

Ist das so allgemein gemacht? Irgendwelche besseren Ideen? Die Kehrseite, die ich sehe, ist, dass ich all diese zukünftigen Werte für null halten muss? Vielleicht ist das kein Nachteil?
Möchten Sie auch wissen, wie Sie mit Änderungen im Datenbankschema nach der Bereitstellung im Allgemeinen zurechtkommen?

Antwort

4

Nein, es ist eigentlich eine wirklich schlechte Idee. Entweder Sie sehen die Verwendung richtig voraus, in diesem Fall fügen Sie sie hinzu, wie sie sein sollen, oder Sie erraten nur, was passieren könnte, in welchem ​​Fall Sie warten sollten, bis Sie es wissen.

Die Vorgehensweise bei Schemaänderungen nach der Bereitstellung besteht darin, das Schema (und den zugehörigen Code) nach der Bereitstellung zu ändern. Sie sollten in das Akronym "YAGNI" schauen. In meiner Meinung, sollte jeder Aufwand, der nicht sofort benötigt wird, als Aufwand für etwas, das möglicherweise nie benötigt werden, angesehen werden. Mit anderen Worten, verschwendete Anstrengung.

Wenn eine unbekannte Anzahl von Dokumenten vorhanden ist, handelt es sich um eine einfache Eins-zu-Viele-Beziehung von der Kundentabelle zur Dokumententabelle, wobei jedes Dokument in der Tabelle den Dokumenttyp und die Dokumentnutzlast enthält :

customers: 
    custid primary key 
    <all other customer data> 
documents: 
    docid primary key 
    custid references customers(custid) 
    <all other document data> 

Auf diese Weise kann jeder Kunde so viele Dokumente haben, wie Sie wünschen, von so vielen Typen, wie Sie benötigen.

+0

Ich stimme irgendwie zu, aber ich denke, es ist wahrscheinlich besser zu "erkennen", dass Sie Flexibilität in einer Weise brauchen, die Sie nicht zuerst in Betracht ziehen, und dann möglicherweise leicht neu zu gestalten, um die 'reservierte' Struktur zu berücksichtigen . Ich denke nicht, dass es falsch ist, für die Zukunft zu planen (und ich bin mir sicher, dass Sie das auch nicht tun, aber es ist einfach nicht klar in Ihrer Antwort). –

+0

Nicht ganz sicher, was Sie meinen, _add sie wie sie sein sollen _ da ich von den Kunden gesagt wurde, haben wir vielleicht bis zu 5 oder 6 Dokumente in der Zukunft (sie haben keine Scanner, so dass sie nicht wirklich alle Dokumente jetzt aufzeichnen)) – gideon

+0

"mit jedem Dokument in der Tabelle, das den Dokumententyp und die Dokumentennutzlast" ... und den Kundenschlüssel enthält;) – Lazarus

Verwandte Themen