2016-08-20 1 views
0

Angenommen, ich habe einen Tisch Patienten und einen Tisch Tests. Patienten können viele Tests machen und Tests werden vielen Patienten gegeben. Es ist also eine Beziehung von vielen zu vielen. Ich erstelle eine Junction-Tabelle zwischen ihnen. Ich möchte auch das Datum speichern, an dem der Patient die Tests machen möchte, also mache ich das in der Abzweigungstabelle. Angenommen, ein Patient nimmt an einem Tag mehr als einen Test vor und ich möchte ein spezielles Abrechnungskonto für alle Tests an diesem Tag erstellen.Kann ein Junction-Tabellenattribut als Fremdschlüssel in einer anderen Tabelle verwendet werden?

Ich erstelle eine automatisch generierte Abrechnung nicht. Ich füge das auch der Junction-Tabelle hinzu.

Bisher meine Verknüpfungstabelle Datensatz die Tests ein Patient auf ein Datum genommen haben kann und die Abrechnung nicht.

Jetzt erstelle ich eine Tabelle billingaccounts. In dieser Tabelle möchte ich alle Abrechnungsinformationen gegen 1 Abrechnungsnummer wie Gesamtbetrag, bezahlter Betrag und so weiter speichern. Ich möchte hier auch die Rechnungsnummer angeben, da es mir hilft, den Patienten zu identifizieren, und Tests, auf die sich das Rechnungskontofeld bezieht.

Ich habe versucht, die Rechnungsnummer in dieser Rechnungskontentabelle als Fremdschlüssel für die Rechnungsnummer in der vorherigen Junction-Tabelle zu machen.

Aber ich kann das nicht tun, da die Abrechnung nicht in der Verknüpfungstabelle kann nicht eindeutig gehalten werden, da es sich um eine m ist: n Verknüpfungstabelle.

Was kann ich tun, um diese Arbeit oder andere Alternativen zu machen?

+0

Sie können dies auf http://dba.stackexchange.com/ – mathguy

+0

verschieben Ich entfernte die inkompatiblen Datenbank-Tags. –

Antwort

0

Fügen Sie der Tabelle "junction" einfach eine Primärschlüsselspalte hinzu. Ihre Junction-Tabelle ist reicher als einfach zwei Tabellen zu vergleichen. Da Sie eine Fremdschlüsselbeziehung wünschen, ist sie ihrem eigenen Primärschlüssel würdig. Zum Beispiel (unter Verwendung von MySQL-Syntax):

create table PatientTests (
    PatientTestId int primary key auto_increment, 
    PatientId int not null, 
    TestId int not null, 
    TestDate date, 
    BillingAccount int, 
    . . . 
    constraint fk_patienttests_patientid references Patients(PatientId), 
    . . . 
); 

Tabelle

0

Machen Sie die billing no in der Verknüpfungstabelle einen Fremdschlüssel für den Primärschlüssel der billingaccounts Tabelle erstellen. So würden Sie eine neue Zeile in billingacounts zuerst erstellen, darunter eine automatisch generierte id/Abrechnung nein, dann diese Nummer verwenden, in der Verknüpfungstabelle.

Verwandte Themen