Ein Entity-Relationship (ER)-Diagramm modelliert die Datenstruktur für ein Apothekenverwaltungssystem. Unten ist ein normalisiertes Design, das Kernentitäten und Beziehungen erfasst.
Kernentitäten
Medikament
- MedicineID (PK)
- Name
- Beschreibung
- QuantityInStock
- UnitPrice
- ExpiryDate
- Manufacturer
- Category (OTC, Prescription, Controlled)
Kunde
- CustomerID (PK)
- FirstName, LastName
- PhoneNumber
- Email
- Address
- DateOfBirth (für altersbeschränkte Medikamente)
- InsuranceInfo (optional)
Mitarbeiter
- EmployeeID (PK)
- FirstName, LastName
- Role (Pharmacist, Technician, Cashier, Manager)
- LicenseNumber (für Apotheker)
- HireDate
- ShiftSchedule
Verkauf (Transaktion)
- SaleID (PK)
- CustomerID (FK)
- EmployeeID (FK) - wer Verkauf verarbeitet hat
- SaleDateTime
- TotalAmount
- PaymentMethod
- PrescriptionID (FK, nullable)
SaleItem (Positionen)
- SaleItemID (PK)
- SaleID (FK)
- MedicineID (FK)
- Quantity
- UnitPriceAtSale
- Subtotal
Rezept
- PrescriptionID (PK)
- CustomerID (FK)
- PrescriberID (FK - externer Arzt)
- DateIssued
- DateFilled
- Status (Active, Filled, Expired, Cancelled)
- RefillsRemaining
Lieferant
- SupplierID (PK)
- Name
- ContactInfo
- LeadTimeDays
Bestellung
- POID (PK)
- SupplierID (FK)
- EmployeeID (FK - wer bestellt hat)
- OrderDate
- ExpectedDeliveryDate
- Status
Wichtige Beziehungen
- Customer 1:M Sale (Ein Kunde tätigt viele Verkäufe)
- Sale 1:M SaleItem (Ein Verkauf enthält mehrere Artikel)
- Medicine 1:M SaleItem (Ein Medikament erscheint in vielen Verkaufszeilen)
- Employee 1:M Sale (Ein Mitarbeiter verarbeitet viele Verkäufe)
- Customer 1:M Prescription (Ein Kunde hat viele Rezepte)
- Prescription 1:M Sale (Ein Rezept kann über mehrere Verkäufe eingelöst werden)
- Supplier 1:M PurchaseOrder
- PurchaseOrder 1:M PurchaseOrderItem (nicht gezeigt, verlinkt auf Medikament)
Design-Hinweise
- Separate Sale und SaleItem ermöglicht variable Artikel pro Transaktion
- Prescription-Entität unterstützt Nachfüllverfolgung und regulatorische Compliance
- Überlegen Sie, InventoryAuditLog für Bestandsabweichungsverfolgung hinzuzufügen
- Indizes auf MedicineID, CustomerID, SaleDateTime optimieren häufige Abfragen