Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Richtiges Datenbankmodell für ein Benutzer-Feedback-System (ein interessanter Fall)

Das ist ein schlechtes Design. Erstellen Sie einfach einen 2-spaltigen Primärschlüssel und 2-spaltige Fremdschlüssel dazu. Dies ist ein grundlegendes Anti-Pattern namens "Codierung von Informationen in Schlüsseln", die (dadurch) als "intelligente", "intelligente" oder "verkettete" Schlüssel bezeichnet werden. Ein guter Schlüssel ist ein "dummer" Schlüssel.

Beispiel: :

Außerdem gibt es keine Notwendigkeit um dies zu tun.

Viele DBMS erlauben "berechnete Spalten", deren Werte automatisch aus anderen Spalten berechnet werden. Um einen Primärschlüssel oder Fremdschlüssel zu erstellen, benötigen Sie ihn normalerweise "persistent", dh er muss wie eine normale Spalte Speicherplatz belegen, anstatt nur bei Bedarf wie eine Ansicht berechnet zu werden. MySQL hat diese nicht, aber 5.7.5 hat einige Funktionen, wo sie "generierte Spalten" genannt werden, die "gespeichert" werden können. Aber tun Sie dies nicht für PKs oder FKs!

Das eigentliche Designproblem ist der Umgang mit Datenbank/SQL-Untertypen/Hierarchien/Vererbung/Polymorphismus .