2016-04-27 9 views
1

Ich versuche herauszufinden, wie ich mein Entity-Diagramm am besten einrichten kann. Ich werde anhand des folgenden Bildes erklären.Bestes Tabellen-Beziehungs-Design für ähnliche Entitäten

tblParentCustomer: Diese Tabelle speichert Informationen für unsere Hauptkunden, die entweder ein Unternehmen oder Verbraucher sein können (Sie werden eine Lookup-Tabelle tblCustomerType identifiziert.)

tblChildCustomer. Diese Tabelle speichert Kunden, die unter dem Primary sind Kunde. Die primären Geschäftskunden können autorisierte Mitarbeiter und autorisierte Mitarbeiter haben. Die Kunden des primären Kunden können autorisierte Benutzer haben. (Sie werden mithilfe einer Nachschlagetabelle tblCustomerType identifiziert.)

tblChildAccountNumber: In dieser Tabelle werden AccountNumbers für tblChildCustomer gespeichert. Diese Kontonummern sind hauptsächlich für die Kindergeschäftskunden bestimmt. Ich möchte die Kontonummern für die Kunden der Kinderkunden hinzufügen, ich bin mir noch nicht sicher, aber ich glaube, dass dieses Design dies ermöglicht, falls/wenn nötig.

Zurück zu tblParentCustomer: Wenn dieser Kunde ein Verbraucher ist, muss ich Kontonummern für sie hinzufügen. Meine Frage ist, erstelle ich eine 1 - Viele Beziehung zwischen tblParentCustomer und tblParentAccountNumber? Diese Option würde mir zwei verschiedene Kontonummertabellen geben.

Oder wäre es sinnvoll, eine Junction Account Tabelle zu erstellen, die tblParentCustomer und tblChildCustomer schneidet?

Die erste Option ergibt keinen Sinn für mich, denn was ist, wenn es nur 1 Kontonummer für einen Kunden aber mehrere childCustomers gibt?

Macht es Sinn, 2 ähnliche Account-Tabellen zu haben, die einen anderen Zweck erfüllen?

enter image description here

+0

Hat ein Kunde eine Account haben oder kann ein Kunde haben mehrere AccountNumbers? Wenn ein Kunde nur eine Kontonummer hat, sollte Kontonummer direkt in die Kundentabelle eingegeben werden. Die Kontonummer kann als Primärschlüssel verwendet werden, wenn sich die Kontonummer auch nicht ändert. –

+0

Kann ChildAccountNumber die gleichen Nummern wie ParentAccountNumber haben? Wenn nicht, warum sollten Sie sie in zwei separate Tabellen legen? Wählen Sie einfach zwischen den beiden mit einem Feld namens Parent, das auf True oder False gesetzt ist. –

Antwort

1

Erstellen einer many-to-many so, wie Sie es haben wollen, müssen Sie einen Link-Tabelle, die das Ganze von 1- gehen machen * und dann * -1 Das Verknüpfungstabelle wird habe zwei FK, eine, die mit der parentTable und eine Verbindung mit der childTable verknüpft. Die Kombination dieser beiden FK ergibt eine zusammengesetzte PK (dies ist wichtig, um Duplikate zu vermeiden). Es wird jedem Kunden erlauben, an so vielen Konten wie möglich teilzunehmen (duh .. es wird die Eltern/Kind-Tabelle zu einer Viele-zu-Viele-Beziehung machen). Dieser Ansatz ist sehr häufig in Bezug auf CRM oder Konten, die Personen enthalten. Bringen Sie es noch einen Schritt weiter und in dieser Tabelle möchten Sie möglicherweise einen "primären Kontakt" in der AccountMembers-Tabelle hinzufügen. Löschen Sie die Tabelle childAccountNumber; du brauchst es nicht. enter image description here

enter image description here

+0

Darüber hinaus, wenn jedes Konto _can_ haben nur ein Elternteilkonto, ein Feld in dem Konto, das die ID des übergeordneten Kontos. Wenn mehr als eins, erstellen Sie eine andere relationale Tabelle, die accountMembers mit zwei fk ähnlich ist, sodass eine kombinierte PK beide auf den Kontonamen verweist, wie ParentAccountID und ChildAccountID. Das ist der Weg zu gehen. – WickedFan