Dies ist eher ein Kommentar, aber da dies eine lange Antwort ist, die es wert ist, erwähnt zu werden, poste ich sie als Antwort.
Ihre Datenbank sieht für Ihre Bedürfnisse ausreichend aus. (Na ja, wie es am besten aus dem Diagramm übernommen werden.) Ich gehe davon aus, dass die UserAccountTabelle , die eine Beziehung einer Eins-zu-viele hat zwischen den vier Tabellen Vehicle, Book, VideoGameund Movie(von hier an, den VBVM Tabellen) . Als nächstes gehe ich davon aus, dass der AssetTisch hat eine Eins-zu-Eins-Beziehung zu jeder Verbindung zwischen den VBVM-Tabelleneinträgen. Mit diesen Informationen würde ich empfehlen, die UserAccount_idvon jeder VBVM-Tabelle in die zu verschieben AssetTable.
Als nächstes scheint dies Assetimmer mit einer der vier VBVM-Tabellen verbunden zu sein. In Anbetracht dieser Art der Einrichtung würde ich empfehlen, eine zusätzliche Tabelle zu erstellen AssetType.
+-----------+
| AssetType |
+-----------+
| id |
| typeDesc |
+-----------+
Aktualisieren Sie als Nächstes die AssetTabelle und jede VBVM-Tabelle, um ein AssetType_IDFeld einzuschließen . Die AssetTypeTabelle sollte für jeden Asset-Typ einen Eintrag enthalten. In diesem Fall Vehicle, Book, Video Gameund Movie, die jeweils mit einer eindeutigen Beschreibung und ID.
Möglicherweise möchten Sie dies aus mehreren Gründen tun: Zunächst können Sie jetzt die AssetTabelle abfragen und erkennen, welche Art von Asset in einem bestimmten Datensatz gespeichert ist, ohne die Daten mit Ihren vier anderen VBVM-Tabellen verknüpfen zu müssen. Dies beschleunigt das Abfragen der Daten, wenn nicht alle Informationen aus Ihren vier Tabellen benötigt werden. Zweitens bietet dies auch eine einfache Möglichkeit, eine Textbeschreibung des mit dem AssetEintrag verknüpften Asset-Typs zu verknüpfen . Auch hier müssen Sie keine Verknüpfung zu den VBVM-Tabellen herstellen, um dies herauszufinden.
Schließlich können Sie wollen prüfen , die Barcode - Datenverarbeitung unterschiedlich. Wenn es sich bei dem Barcode um eine einfache Suche handelt, können Sie ihn der Asset-Tabelle hinzufügen. Wenn Barcode-Werte jedoch eindeutig sein müssen, muss sie in einer sekundären Tabelle gespeichert werden, da die Datenbank eingeschränkt werden muss. Sie könnten dies tun, wenn es in die AssetTabelle integriert wäre. Ihre Fahrzeugdaten würden jedoch Probleme verursachen, da Fahrzeuge keine Barcodes haben. Meines Wissens können Sie in den meisten, wenn nicht allen großen Datenbankmodulen kein eindeutiges Feld definieren, das auch nullWerte zulässt , da die Daten dann nicht mehr eindeutig sind.
Sie könnten geneigt sein zu glauben, dass Sie das BarcodeFeld mit dem kombinieren könnten VIN. Da VINs eindeutig und Barcodes eindeutig sind und auch nicht identisch sein sollten, können sie nicht in einem Feld in der AssetTabelle zusammengefasst werden, sodass Sie die zusätzliche BarcodeTabelle löschen können . Ich würde dies nicht empfehlen, da ich denke, dass die Daten dadurch weniger "fokussiert" werden.
Ja, es ist eine Form der eindeutigen Objekt-ID, aber Barcodes sind Barcodes und VINs sind VINs - das Konzept hinter beiden ist völlig unterschiedlich und die Konsolidierung der beiden kann mit der Zeit verwirrend werden. Wenn Sie Ihr Projekt in Zukunft erweitern, kann dies außerdem zu Kollisionen führen. Technisch gesehen sehe ich kein großes Problem damit (in Ihrem Fall), aber ich würde trotzdem empfehlen, diese Option zu vermeiden.
Außerdem würde ich das auch assetType_idzur BarcodeTabelle hinzufügen , aus den gleichen Gründen, aus denen Sie es der AssetTabelle hinzugefügt haben .
messyist eigentlichnormalizationdas, was normalerweise gut ist.