11 KiB
11 KiB
ER-Diagramm - Django FBF Datenbank
Übersicht der Datenbankstruktur
erDiagram
User ||--o{ FallenBird : creates
User ||--o{ Costs : creates
User ||--o{ Emailadress : creates
User ||--o{ Bird : creates
User ||--o{ Aviary : creates
User ||--o{ Contact : creates
Bird ||--o{ FallenBird : "is type of"
Bird ||--o{ Costs : "can have costs"
Bird }|--|| BirdStatus : "has status"
Bird }|--|| Circumstance : "has circumstances"
Bird }|--|| Aviary : "housed in"
Circumstance ||--o{ FallenBird : "describes finding"
BirdStatus ||--o{ FallenBird : "has status"
Aviary ||--o{ FallenBird : "houses"
FallenBird ||--o{ Costs : "has costs"
ContactTag ||--o{ Contact : "categorizes"
User {
int id PK
string username
string email
string first_name
string last_name
datetime date_joined
boolean is_active
boolean is_staff
boolean is_superuser
}
FallenBird {
uuid id PK
string bird_identifier
uuid bird_id FK
string age
string sex
date date_found
string place
date death_date
string cause_of_death
text notes
int created_by_id FK
datetime created
datetime updated
bigint find_circumstances_id FK
string diagnostic_finding
int user_id FK
bigint status_id FK
uuid aviary_id FK
string sent_to
text comment
text finder
}
Bird {
bigint id PK
string name UK
richtext description
string species
string age_group
string gender
decimal weight
decimal wing_span
date found_date
string found_location
string finder_name
string finder_phone
string finder_email
uuid aviary_id FK
bigint status_id FK
bigint circumstance_id FK
text notes
int created_by_id FK
datetime created
datetime updated
boolean melden_an_naturschutzbehoerde
boolean melden_an_jagdbehoerde
boolean melden_an_wildvogelhilfe_team
}
BirdStatus {
bigint id PK
string name
string description UK
}
Circumstance {
bigint id PK
string name
string description
}
Aviary {
uuid id PK
string name
string location
string description
int capacity
int current_occupancy
string contact_person
string contact_phone
string contact_email
text notes
int created_by_id FK
string condition
date last_ward_round
string comment
datetime created_at
datetime updated_at
}
Costs {
uuid id PK
bigint bird_id FK
uuid id_bird_id FK
string description
decimal amount
string category
date date
text notes
int user_id FK
datetime created
datetime updated
}
Contact {
uuid id PK
string first_name
string last_name
int created_by_id FK
string email
string phone
string address
string city
string postal_code
string country
text notes
boolean is_active
string name
uuid tag_id_id FK
datetime created_at
datetime updated_at
}
ContactTag {
uuid id PK
string tag
}
Emailadress {
int id PK
string email_address
datetime created_at
datetime updated_at
int user_id FK
boolean is_naturschutzbehoerde
boolean is_jagdbehoerde
boolean is_wildvogelhilfe_team
}
Tabellenbeschreibungen
Kern-Entitäten
FallenBird
(Patienten)
- Zweck: Zentrale Entität für gefundene/verletzte Vögel (individuelle Patienten)
- Primärschlüssel: UUID
- Neue Features:
- Todesdatum und Todesursache für verstorbene Tiere
- Erweiterte Notizen-Funktionalität
- Verbesserte Audit-Trails
- Beziehungen:
- Gehört zu einem
Bird
(Vogelart) - Hat einen
BirdStatus
(Status) - Wird von einem
User
erstellt und bearbeitet - Kann in einer
Aviary
(Voliere) untergebracht sein - Hat
Circumstance
(Fundumstände) - Kann
Costs
(Kosten) haben
- Gehört zu einem
Bird
(Vogelarten)
- Zweck: Katalog der verschiedenen Vogelarten mit umfassenden Metadaten
- Primärschlüssel: BigInt
- Eindeutig: Name
- Neue Features:
- Erweiterte physische Eigenschaften (Gewicht, Flügelspannweite)
- Finder-Informationen (Name, Telefon, E-Mail)
- Benachrichtigungseinstellungen für Behörden
- Beziehungen zu Status, Fundumständen und Volieren
- Beziehungen: Hat viele
FallenBird
Instanzen, kann Costs haben
Aviary
(Volieren)
- Zweck: Unterbringungsplätze für die Vögel mit erweiterten Verwaltungsfunktionen
- Primärschlüssel: UUID
- Neue Features:
- Name und Standort-Informationen
- Kapazitäts- und Belegungsmanagement
- Kontaktperson-Details (Person, Telefon, E-Mail)
- Audit-Trail (created_by, timestamps)
- Status: Offen, Geschlossen, Gesperrt
- Beziehungen: Kann mehrere
FallenBird
beherbergen, gehört zu einemUser
Referenz-Tabellen
BirdStatus
(Patientenstatus)
- Zweck: Status-Katalog (z.B. "In Behandlung", "Freigelassen", "Verstorben")
- Primärschlüssel: BigInt
- Neue Features: Zusätzliches
name
Feld für interne Bezeichnungen - Eindeutig: Description
Circumstance
(Fundumstände)
- Zweck: Katalog der Fundumstände (z.B. "Verletzt gefunden", "Aus Nest gefallen")
- Primärschlüssel: BigInt
- Neue Features: Zusätzliches
name
Feld für interne Bezeichnungen
Kosten-Management
Costs
(Kosten)
- Zweck: Erweiterte Kostenerfassung pro Patient oder Vogelart
- Primärschlüssel: UUID
- Neue Features:
- Duale Beziehungen: zu
Bird
(Vogelart) undFallenBird
(Patient) - Kategorisierung (medizinisch, Nahrung, Ausrüstung, Transport, Sonstiges)
- Detaillierte Beschreibungen und Notizen
- Verbesserte Audit-Trails
- Duale Beziehungen: zu
- Beziehungen: Gehört zu einem
FallenBird
oderBird
und wird von einemUser
erstellt
Kontakt-Management
Contact
(Kontakte)
- Zweck: Erweiterte Kontaktdaten (Finder, Tierärzte, etc.)
- Primärschlüssel: UUID
- Neue Features:
- Strukturierte Namensfelder (Vor- und Nachname)
- Vollständige Adressinformationen (Stadt, PLZ, Land)
- Aktivitätsstatus für Kontakte
- Benutzer-Zuordnung und Audit-Trail
- Beziehungen: Kann mit
ContactTag
kategorisiert werden, gehört zu einemUser
ContactTag
(Kontakt-Tags)
- Zweck: Kategorisierung von Kontakten
- Primärschlüssel: UUID
E-Mail-System
Emailadress
(E-Mail-Adressen)
- Zweck: Erweiterte Verwaltung von E-Mail-Adressen mit Benachrichtigungskategorien
- Primärschlüssel: BigInt
- Neue Features:
- Benachrichtigungskategorien (Naturschutzbehörde, Jagdbehörde, Wildvogelhilfe-Team)
- Automatische Zuordnung basierend auf Vogelart-Einstellungen
- Standard-Aktivierung für Naturschutz und Wildvogelhilfe
- Beziehungen: Gehört zu einem
User
Hinweis: Das frühere BirdEmail
-System wurde durch das direkte kategoriebasierte Benachrichtigungssystem ersetzt.
Datenbank-Design-Prinzipien
Primärschlüssel-Strategien
- UUID: Für Geschäftsobjekte (
FallenBird
,Aviary
,Contact
,ContactTag
,Costs
) - BigInt: Für Referenzdaten (
Bird
,BirdStatus
,Circumstance
) und E-Mail-System
Beziehungstypen
- 1:N: Die meisten Beziehungen (User zu FallenBird, Bird zu FallenBird, etc.)
- M:N: Ersetzt durch direkte Benachrichtigungsfelder in Models
- Optional: Viele Felder unterstützen NULL-Werte für Flexibilität
- Duale Beziehungen:
Costs
kann sowohl zuBird
als auch zuFallenBird
gehören
Besondere Eigenschaften
- Soft References:
Costs.id_bird
undCosts.bird
mitSET_NULL
für Datenschutz - Audit Trail: Umfassende
created
/updated
Felder mit Benutzer-Zuordnung - Rich Text:
Bird.description
für formatierte Beschreibungen mit CKEditor 5 - Benachrichtigungssystem: Automatische E-Mail-Benachrichtigungen basierend auf Vogelart und E-Mail-Kategorien
- Kategorisierung: Kosten-Kategorien und Kontakt-Tags für bessere Organisation
- Flexibilität: Duale Beziehungen ermöglichen Kosten auf Vogelart- und Patientenebene
Geschäftslogik-Unterstützung
Das Schema unterstützt folgende Geschäftsprozesse:
- Patientenaufnahme: FallenBird → Bird, Circumstance, User
- Vogelartverwaltung: Bird mit umfassenden Metadaten und Benachrichtigungseinstellungen
- Unterbringung: FallenBird → Aviary mit Kapazitätsmanagement
- Statusverfolgung: FallenBird → BirdStatus
- Erweiterte Kostenverfolgung: FallenBird/Bird → Costs mit Kategorisierung
- Kontaktverwaltung: Contact → ContactTag mit strukturierten Adressdaten
- Intelligente E-Mail-Benachrichtigungen:
- Automatische Benachrichtigung basierend auf Vogelart-Einstellungen
- Kategorisierte E-Mail-Adressen (Naturschutz, Jagd, Wildvogelhilfe)
- Standard-Aktivierung für wichtige Kategorien
- Audit und Compliance: Umfassende Benutzer-Zuordnung und Zeitstempel
Änderungsprotokoll (Stand: Juni 2025)
Wesentliche Erweiterungen
Bird Model (Vogelarten)
- Erweiterte Metadaten: Hinzufügung von physischen Eigenschaften (Gewicht, Flügelspannweite)
- Finder-Informationen: Vollständige Kontaktdaten für Finder
- Benachrichtigungssystem: Automatische E-Mail-Benachrichtigungen für Behörden
- Beziehungserweiterungen: Verbindungen zu Status, Fundumständen und Volieren
E-Mail-System
- Kategorisierte E-Mail-Adressen: Naturschutz, Jagd, Wildvogelhilfe-Team
- Intelligente Standardwerte: Naturschutz und Wildvogelhilfe standardmäßig aktiviert
- Automatische Benachrichtigungen: Basierend auf Vogelart-Einstellungen
Kosten-Management
- Duale Beziehungen: Kosten können sowohl Vogelarten als auch Patienten zugeordnet werden
- Kategorisierung: Medizinisch, Nahrung, Ausrüstung, Transport, Sonstiges
- Erweiterte Dokumentation: Detaillierte Beschreibungen und Notizen
Volieren-Management
- Kapazitätsverwaltung: Überwachung von Belegung und Kapazität
- Kontaktinformationen: Ansprechpartner mit vollständigen Kontaktdaten
- Erweiterte Metadaten: Name, Standort und detaillierte Beschreibungen
Kontakt-System
- Strukturierte Daten: Separate Vor- und Nachnamenfelder
- Vollständige Adressen: Stadt, PLZ, Land-Informationen
- Aktivitätsstatus: Aktive/Inaktive Kontakte
Datenintegrität und Compliance
- Umfassende Audit-Trails: Benutzer-Zuordnung und Zeitstempel in allen wichtigen Tabellen
- Flexible Beziehungen: NULL-fähige Fremdschlüssel für optionale Beziehungen
- Soft-Delete-Mechanismen: SET_NULL für wichtige Beziehungen zum Datenschutz