2010-11-28 1 views
1

Gleich nach einem Ratschlag in Bezug auf diese Datenbankentwurfssituation.Selbstreferentielle Entität - VIELEN AN VIELEN

Also habe ich zwei Tabellen in der Datenbank.

Tabelle 1: Patienten Tabelle 2: Ansprecher

Patienten Datenattribute auf einem privaten Patienten hält, so Details über die Person, ihren/seinen Geburtstag, Namen, medizinische Bedingungen, etc etc .. Ansprecher das ist Entität, die im Namen des Patienten zahlt, so kann Kläger selbst ein Patient sein, eine andere Person, ein Unternehmen (wer für Arbeitsunfälle), private Gesundheitsdienstleister, Regierungsbehörden usw. bezahlt.

Patienten und Kläger haben IDs wer sind Fremdschlüssel in anderen Tabellen wie Rechnungen, Quittungen etc ...

Ein Patient kann mehrere Anspruchsberechtigte haben (mehrere Unternehmen können in seinem Namen zahlen), jeder Antragsteller kann mehrere Patienten haben.

Bei weiteren Untersuchungen habe ich festgestellt, dass viele der Attribute von Patienten und Ansprecher überlappen, wie ein Patient für sich selbst bezahlen kann, so ist ein privater Ansprecher.

Mein Gedanke ist es, die beiden Tabellen zu einem einzigen zusammenführen und nennen Sie es Konten und ein ClaimantType-Feld, um den Typ des Kontos zu identifizieren, sei es privat, Gesundheitswesen, Wirtschaft oder Regierung.

Welche möglichen praktischen Nachteile muss ich bei dieser Änderung beachten? Abgesehen von der Änderung der anderen verknüpften Tabellen in der Datenbank?

EDIT: Nur um es klar zu machen, Es gibt bereits eine junctional Tabelle PatientenClaimants, die im Grunde nur die Patienten den Klägern zuordnen. Vielen Dank!

Antwort

0

Sie können entweder (a) eine Schnittstellentabelle einfügen, die Patienten-IDs mit Antragsteller-IDs in Beziehung setzt, oder (b) sie zusammenfassen, aber wenn Sie bereits Daten haben, könnte das problematisch sein.

Sie können auch eine Demographie-Tabelle einrichten, die allgemeine Daten zwischen Patienten und Antragstellern anzeigt und auf eine verkürzte Patienten-/Anspruchsteller-Tabelle verweist - auf diese Weise wird Ihre bestehende Struktur nicht durchbrochen.

+0

Als Side Noote - wenn Sie zu einer geteilten Demographie-Tabelle verschoben werden, könnten Sie immer ein paar Ansichten erstellen, um Ihre Daten so zu präsentieren, dass Ihr Legacy-Code damit arbeiten könnte (mehr als einmal beim Refactoring einer App)) –

+0

Hallo Bob, Können Sie die Demographie-Tabelle näher erläutern? Wie würde ich sie auf die beiden Tische zurückführen? – Rillanon

+0

Ich habe bereits etwa 10K Reihen von Patienten + Ansprecher, aber ich nehme an, dass ich abfragen und in eine neue Tabelle einfügen kann. Die Beziehungen sind nicht besonders kompliziert. Ich frage mich nur, ob es sich lohnt. – Rillanon

2

Zusammenführen diese zwei Tabellen, glaube ich, ist falsch.

Ein Patient ist immer ein Mensch. Es kann also kein Geschäft oder eine Organisation sein.

Ich glaube, hier haben Sie:

Address 
======= 
...... 

Person 
======= 
AddressId (FK) 

BusinessEntity 
============== 
AddressId (FK) 

Patient 
======= 
PersonId (FK) 

Claimant 
======== 
PersonId (FK) 
BusinessEntityId (FK) 

Hier PersonId oder BusinessID einer von ihnen kann null sein.

+0

Vereinbarte 100%. Geburtstag, Namen, Krankheitsbilder klingen patientenspezifisch und sollten wohl in einem eigenen Tisch aufbewahrt werden. – mlibby

+0

Hi Aliostad, ich kann die Vorteile Ihres Entwurfs sehen, aber das Problem ist, dass im Moment Geschäft, Organisationen in der Tabelle der Ansprecher nicht getrennt sind, so dass ich keine Möglichkeit habe, sie in die Untertabellen zu trennen und einzufügen zu sagen, welcher Kläger ist ein Unternehmen, das ist eine Gesundheitsversorgung etc ... aber danke! Dies gab mir einige Ideen für zukünftige Designs. – Rillanon