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

Sollte man für jede Zeile in einer Datenbanktabelle, die sonst keine eindeutigen Schlüssel hat, eine eindeutige ID generieren?

Sie können immer einen einfachen numerischen Primärschlüssel (z. B. mysql auto_increment) hinzufügen, sodass Sie am Ende eine eindeutige Kennung für jede Zeile haben. Zusammengesetzte Primärschlüssel sind ein ernsthaftes Problem, wenn Sie die Tabelle in einer Fremdschlüsselbeziehung verwenden müssen, da Sie gezwungen sind, jedes Feld der Komponente des Primärschlüssels in allen Joins/FK-Spezifikationen aufzulisten. Im Vergleich dazu reduziert das Hinzufügen eines einfachen int-Primärschlüssels das Tragen dieses EINEN Feldes für die FK/Join-Beziehungen.

Ich würde etwas in der Art vorschlagen:

patients (id, name, ....)
meds (id, brand, name, ...)
patient_meds (patient_id, med_id, dosage, ...)