2016-05-12 7 views
0

So bin ich ziemlich neu in der Datenbankstruktur. Und derzeit muss ich ein Benachrichtigungssystem für meine Webanwendung erstellen. Nach dem googeln für eine Weile finde ich the first answer ist interessant.Wie kann TINYINT Zeichenketten Wert auf MySQL speichern

Warum activity_type ist TINYINT? Ist es nicht String, weil er sagt, dass der Beispielwert wie 'addierter Favorit' ist. Jeder kann helfen?

Antwort

0

Ja, folgen Sie diesem Beispiel nicht.

Er verwendet Zahlen im TINYINT, die magische Bedeutungen haben und höchstwahrscheinlich in seinem Code als Konstanten dargestellt werden, also bedeutet 1 eine Art von Aktivität, 2 bedeutet ein anderes, usw., und nur der Code kennt diese Bedeutungen - nicht die Datenbank.

Dann gibt es die "source_id", die sich auf einen nicht deklarierten, nicht erzwungenen Fremdschlüssel bezieht, der auf eine von mehreren anderen Tabellen verweist. Tu das nicht.

Innerhalb einer Datenbankspalte sollten alle Werte dieselbe Bedeutung haben - sie sollten alle aus derselben Informationsdomäne stammen. Wenn es eine "thing_id" -Spalte gibt, sollte sie sich immer auf die "id" einer Zeile in der Dingtabelle beziehen. Es sollte nicht beziehen sich auf eine Zeile in der Tabelle "thing1" manchmal oder vielleicht eine Zeile in der Tabelle "thing2" anderen Zeiten je nachdem, ob "thing_type" auf "1" oder "2" gesetzt ist ... yuck.

Es gibt wahrscheinlich brauchbare Anwendungsfälle für ein solches Design, aber ich würde dieses Modell als Warnhinweis auf eine Datenbank interpretieren, die keine referenzielle Integrität erzwingt ... und das nicht mit Best Practices für relationale Datenbanken übereinstimmt.

Hinweis von seinem letzten Kommentar ...

Nein verbindet.

Er verwendet die relationale Datenbank nicht wirklich als relationale Datenbank. Er benutzt es fast als eine Art Schlüssel/Wert-Speicher.

+0

Ok, gut gesagt, ich verstehe was du meinst. Also irgendwelche Verbesserungsvorschläge? –