Bewährt sich die Verwendung einer Master-Tabelle für gemeinsam genutzte Spalten für eine gesamte Datenbank?

Im Folgenden erkläre ich einen grundlegenden Entwurf für eine Datenbank, an der ich arbeite. Da ich keine DB bin, mache ich mir Sorgen, ob ich auf einer guten oder einer schlechten Strecke bin. Deshalb wollte ich dies für einige Ratschläge auf den Stapel legen. Ich konnte keine ähnliche Diskussion finden, die zu meinem Design passt.

In meiner Datenbank wird jede Tabelle als Entität betrachtet. Eine Entität kann ein Kundenkonto, eine Person, ein Benutzer, eine Reihe von Mitarbeiterinformationen, Informationen zum Auftragnehmer, ein LKW, ein Flugzeug, ein Produkt, ein Support-Ticket usw. sein. Hier sind meine aktuellen Entitäten (Tabellen) ...

MenschenBenutzerKontenAccountUsersAdressenMitarbeiterinformationInformationen zum Auftragnehmer

Und um Informationen über diese Entitäten zu speichern, habe ich zwei Tabellen:

Entity Tables
-EntityType
-> EntityTypeID (INT)
-Entities
-> EntityID (BIGINT)
-> EnitityType (INT) : foreign key

Jede Tabelle, die ich erstellt habe, verfügt über einen automatisch generierten Primärschlüssel und einen Fremdschlüssel in einer EntityID-Spalte für die Entity-Tabelle.

In der Entitätstabelle habe ich einige gemeinsame Felder wie:

Datum erstelltDatum geändertUser_CreatedUser_ModifiedIst gelöschtCanUIDelete

Ich benutze Trigger für alle Tabellen, um ihren Entitätseintrag automatisch mit dem richtigen Entitätstyp für Einfügungen zu erstellen. Und Update-Trigger aktualisieren das Datum von LastModified.

Aus Sicht der Anwendungsebene muss sich der Code lediglich um die einzelnen Entitäten kümmern (mit Ausnahme der Felder USER_Modified / User_Created, die "aktualisiert" werden, indem die Entitäts-ID hinzugefügt wird).

Der Grund für die Entitätstabelle ist nun, dass ich ein EAV-Modell haben möchte, sodass jeder Entitätstyp mit benutzerdefinierten Feldern erweitert werden kann. Es dient auch als anständiger Ort zum Speichern von Metadaten über die Entitäten (wie die erstellten / geänderten Felder).

Ich bin gerade neu in DB Design und möchte eine 2. Meinung.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage