Ich habe ein Formular auf einer Website, die viele verschiedene Bereiche hat. Einige der Felder sind optional, während andere obligatorisch sind. In meiner Datenbank habe ich eine Tabelle, die alle diese Werte enthält. Ist es besser, einen NULL-Wert oder eine leere Zeichenfolge in die DB-Spalten einzufügen, in die der Benutzer keine Daten eingegeben hat?
230
Wenn Sie jemals vorhaben, die Datenbank zu wechseln , sollten Sie berücksichtigen, dass Oracle keine leeren Zeichenfolgen unterstützt . Sie werden automatisch in NULL konvertiert und können nicht mit Klauseln wie abgefragt werden
WHERE somefield = ''
.quelle
Steve B.
: siehe diese Frage: stackoverflow.com/questions/1171196/…Beachten Sie, dass NULL Ihre Codepfade möglicherweise erheblich erschwert. In Python zum Beispiel die meisten Datenbank - Adapter / ORMs Karte
NULL
zuNone
.Also Dinge wie:
könnte zu "Hallo, keine Joe Doe!" Um dies zu vermeiden, benötigen Sie so etwas wie diesen Code:
Das kann die Dinge viel komplexer machen.
quelle
Besser einfügen,
NULL
um die Konsistenz in Ihrer Datenbank in MySQL zu gewährleisten. Fremdschlüssel können als gespeichert werdenNULL
aber NICHT als leere Zeichenfolgen .Sie haben Probleme mit einer leeren Zeichenfolge in den Einschränkungen. Möglicherweise müssen Sie einen gefälschten Datensatz mit einer eindeutigen leeren Zeichenfolge einfügen , um eine Fremdschlüsseleinschränkung zu erfüllen. Schlechte Praxis, denke ich.
Siehe auch: Kann ein Fremdschlüssel NULL und / oder doppelt sein?
quelle
Ich weiß nicht, was hier die beste Vorgehensweise wäre, aber ich würde mich im Allgemeinen für die Null irren, es sei denn, Sie möchten, dass Null etwas anderes als eine leere Zeichenfolge bedeutet und die Benutzereingabe mit Ihrer Definition einer leeren Zeichenfolge übereinstimmt.
Beachten Sie, dass ich sage, dass SIE definieren müssen, wie sie unterschiedlich sein sollen. Manchmal ist es sinnvoll, sie anders zu haben, manchmal nicht. Wenn nicht, wählen Sie einfach eine aus und bleiben Sie dabei. Wie gesagt, ich tendiere dazu, die NULL die meiste Zeit zu bevorzugen.
Oh, und denken Sie daran, dass, wenn die Spalte null ist, der Datensatz weniger wahrscheinlich in praktisch jeder Abfrage erscheint, die basierend auf dieser Spalte eine where-Klausel (in SQL-Begriffen) auswählt (es sei denn, die Auswahl bezieht sich auf eine Nullspalte) natürlich.
quelle
Wenn Sie mehrere Spalten in einem eindeutigen Index verwenden und mindestens eine dieser Spalten obligatorisch ist (dh ein erforderliches Formularfeld), können Sie doppelte Zeilen erhalten, wenn Sie die anderen Spalten im Index auf NULL setzen. Dies liegt daran, dass NULL-Werte in eindeutigen Spalten ignoriert werden. Verwenden Sie in diesem Fall leere Zeichenfolgen in den anderen Spalten des eindeutigen Index, um doppelte Zeilen zu vermeiden.
Hier sind einige Codes:
Fügen Sie dies nun ein, um zu sehen, dass die duplizierten Zeilen zulässig sind:
Fügen Sie nun dies ein und überprüfen Sie, ob es nicht erlaubt ist:
Hier gibt es also kein Richtig oder Falsch. Es liegt an Ihnen, zu entscheiden, was mit Ihren Geschäftsregeln am besten funktioniert.
quelle