Daten Modell Gemeinde

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 50 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Daten Modell Gemeinde

    Hallo Leute,
    ich bin gerade dabei, ein Tool zu schreiben, womit man eine Gemeinde verwalten kann.
    Ich fange mit dem Daten Modell an und hier qualmt mir bisschen der Kopf.
    Hier mal, was ich als Vorlage zusammen getragen habe:

    Quellcode

    1. Eine Gemeinde:
    2. - hat einen Namen
    3. - hat eine Anschrift
    4. - hat Einwohner (1 oder mehrere)
    5. - hat GemeindeGrundstücke (1 oder mehrere)
    6. - hat ein Straßennetz (1 oder mehrere)
    7. - hat einen Bürgermeister
    8. Ein Einwohner (kann auch ein KEIN Einwohner sein) (ein KEIN Einwohner hat zwar Grundstücke und/oder Gebäude, wohnt aber woanders):
    9. - hat einen Vornamen
    10. - hat einen Nachnamen
    11. - hat eine WohnAnschrift
    12. - hat ein Geburtsdatum
    13. - weis ob er Bürgermeister ist
    14. - weis ob er im Gemeinderat ist
    15. - weis ob er Eigentümer oder Mieter ist
    16. - hat eventuell 1 oder mehrere Grundstücke und/oder Gebäude
    17. Eine Straße:
    18. - hat einen Namen
    19. - hat Grundstücke (1 oder mehrere)
    20. Ein Grundstück:
    21. - hat eine Größe
    22. - hat eine FlurNummer
    23. - weis ob es bebaut ist
    24. - hat Besitzer (1 oder mehrere)
    25. - kann ein Gebäude haben
    26. Ein Gebäude:
    27. - hat eine Nummer
    28. - hat eine Anzahl an Geschoßen
    29. - hat eine Größe
    30. - hat Besitzer (1 oder mehrere)
    31. Eine Anschrift:
    32. - hat eine Straße
    33. - hat ein Gebäude
    34. - hat eine Postleitzahl
    35. - hat einen Ort


    daraus ergibt sich erstmal stumpf diese Klassen:
    Spoiler anzeigen

    C#-Quellcode

    1. public class Community
    2. {
    3. public virtual int ID {get;set;}
    4. public virtual string Name {get;set;}
    5. public virtual Address Address {get;set;}
    6. public virtual ICollection<Person> Residents {get;set;}
    7. public virtual ICollection<LandArea> CommunityAreas {get;set;}
    8. public virtual ICollection<Street> StreetNetwork {get;set;}
    9. public virtual Person CommunityMayor {get;set;}
    10. }
    11. public class Person
    12. {
    13. public virtual int ID {get;set;}
    14. public virtual string FirstName { get; set; }
    15. public virtual string LastName {get;set;}
    16. public virtual Address HomeAddress {get;set;}
    17. public virtual DateTime BirtDate {get;set;}
    18. public virtual bool IsCommunityMayor {get;set;}
    19. public virtual bool IsMemberOfMunicipalCouncil {get;set;}
    20. public virtual bool IsOwner {get;set;}
    21. //irgendwie hier ne Liste von Gebäuden und/oder Grundstücken
    22. }
    23. public class Street
    24. {
    25. public virtual int ID {get;set;}
    26. public virtual string StreetName {get;set;}
    27. public virtual ICollection<LandArea> StreetAreas {get;set;}
    28. }
    29. public class LandArea
    30. {
    31. public virtual int ID {get;set;}
    32. public virtual decimal Size {get;set;}
    33. public virtual int AreaNumber {get;set;}
    34. public virtual bool IsBuildOn {get;set;}
    35. public virtual ICollection<Person> Owners {get;set;}
    36. public virtual Building HouseOnArea {get;set;}
    37. }
    38. public class Building
    39. {
    40. public virtual int ID {get;set;}
    41. public virtual int Number {get;set;}
    42. public virtual int FloorCount {get;set;}
    43. public virtual decimal LivingSize {get;set;}
    44. public virtual ICollection<Person> Owners {get;set;}
    45. }
    46. public class Address
    47. {
    48. public virtual int ID {get;set;}
    49. public virtual Street Street {get;set;}
    50. public virtual Building House {get;set;}
    51. public virtual int PostalCode {get;set;}
    52. public virtual string City {get;set;}
    53. }


    So, nun raucht der Kopf bei folgendem:
    Eine Person hat ja eine Wohnanschrift.
    Problem dabei ist, diese Wohnanschrift muss nicht zwingend in dieser Gemeinde sein. Aber, diese Person kann ein Gebäude und/oder ein Grundstück in dieser Gemeinde besitzen, somit muss ich diese Person mit aufnehmen.
    Weiter ist es so, das ein Gebäude mitunter ja von mehreren bewohnt werden kann (hab ich dem Modell noch garnicht beachtet) und ein Gebäude kann mehrere Besitzer haben.
    Genauso kann ein Grundstück mehrere Besitzer haben, aber grundsätzlich nur 1 Gebäude (wenn wir von bewohnbaren Häusern ausgehen).
    Eine Person kann mehrere Grundstücke besitzen, kann mehrere Gebäude besitzen, hat aber nur 1 Wohnanschrift in dieser Gemeinde (könnte aber weitere Anschriften in anderen Gemeinden haben)
    Genauso kann es sein, das 1 Grundstück mehrere Besitzer hat, aber das Gebäude darauf mehrere andere Besitzer haben kann.

    Denke ich zu kompliziert? Ich bekomms nicht aus meinem Kopf in eine Datenmodell gebastelt.

    Hat jemand nen Schubs für mich?
    "Hier könnte Ihre Werbung stehen..."
    @MichaHo Eine Gemeinde hat keine Anschrift, jedoch eine Postleitzahl (oder mehrere), die muss nicht zur Anschrift.
    Bei mehreren Postleitzahlen müssten dann Sub-Gemeinden abgesteckt werden.
    Du musst dann zu jedem Grundstück einen Besitzer und einen Bewohner (oder mehrere) listen.
    Da wäre es praktisch, bei Gleichheit "Wie oben" eintragen zu können.
    Nicht jeder Einwohner bekommt den Titel "Bürgermeister oder nicht", sondern die Gemeinde bekommt eine Verwaltung, in der solch Posten gelistet sind.
    ====
    Ich würde die Anzahl der Anstriche klein halten, dafür lieber mehr Ordnungs-Gruppen einführen.
    Diese Ordnungs-Gruppen lassen sich dann hieerarchisch aufbauen und dann auch elegant (abgeleiteten) Klassen zuordnen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany Danke Dir. Gemeinde - Anschrift und Gemeinde - Verwaltung hab ich übernommen.
    Ich müsste ja dann zu jedem Grundstück UND zu jedem Gebäude 2 Listen führen, einmal Besitzer und 1 mal Bewohner (bzw. auf dem Grundstück wohnt ja keiner, der wohnt ja in dem Haus auf dem Grundstück).
    Wollte die Listen erst in die Person hauen, aber dann hab ich das Problem das eine 2. Person aus gleichem Haushalt ja ne eigene Grundstücks und Gebäudeliste hat, das wäre ja dann doppelt.
    Meine Frau hat ja mit mir zusammen das Haus und Grundstück und nicht jeder von uns 1 Haus und Grundstück...

    Die Anschrift selbst benötigt aber doch eine PLZ nämlich dann, wenn die Anschrift in einem anderen Ort liegt. (kann ja vorkommen, Besitzer vom Grund oder Gebäude wohnt im Nachbarort mit anderer PLZ)

    Den letzten Satz verstehe ich allerdings nicht.
    "Hier könnte Ihre Werbung stehen..."
    @MichaHo Wenn mehrere Personen ein Grundstück sowohl besitzen als auch bewohnen, müssen die gelistet werden.
    Da ergibt sich die Frage, wie rum man das macht.
    Die Anzahl der Grundstücke ist wohl definiert (Teilungen und Zusammenführungen wollen wir zunächst außen vor lassen), die Anzahl der Eigentümer ist an die der Grundstücke gebunden.
    Die Anzahl der Bewohner ist mehr oder weniger dynamisch, die Bewohner sind an die (Anzahl der) Wohneinheiten gebunden.
    Eigentümer und Bewohner sollten getrennt sein, ein Eigentümer sollte einen Haken bekommen, wenn er auch der Bewohner ist.
    Klar, in einer ländlichen Gemeinde sind Eigentümer und Bewohner meist identisch, das ist aber nicht verallgemeinerbar, deswegen sollte das getrennt werden.
    Wenn ein Eigentümer oder ein Bewohner Eigentümer eines außerhalb liegenden Grundstücks ist, sollte das eigentlich nicht berücksichtigt werden, denn das hat für die Gemeinde keine Relevanz.

    Zur hierarchischen Ordnung:
    • "Gebinde" gleicher Postleiztahl
    • Straße
    • Grundstück
    • Wohneinheiten
    • Eigentümer
    • Bewohner, Angehörige
    Lustig wird es, wenn ein Grundstück mehrere Wohneinheiten mit unterschiedlichen Eigentümern hat (Erbengemeinschaften, Eigentumswohnungen, ...).
    Ein Eigentümer hat dann z.B. 37,456 Tausendstel Teileigentum am Gesamtgrundstück, was nur mengenmäßig handhabbar ist. ...
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi @RodFromGermany, Erstmal Danke, das klingt plausibel.

    RodFromGermany schrieb:

    Wenn ein Eigentümer oder ein Bewohner Eigentümer eines außerhalb liegenden Grundstücks ist


    Das ist genau anders rum und deswegen relevant.
    Grundstück innerhalb der Gemeinde, Wohneinheit innerhalb der Gemeinde, aber Eigentümer außerhalb der Gemeinde.
    Daher muss ich eine Anschrift auch außerhalb der Gemeinde vergeben können. Also Anschrift des Grundstücks/Wohneinheit ist innerhalb, Eigentümer ist außerhalb.
    "Hier könnte Ihre Werbung stehen..."
    @MichaHo Missverständnis.
    Ich meinte:
    Ein Bewohner der Gemeinde besitzt ein Grundstück in Spanien (nicht relevant).
    Du meinst:
    Ein Spanier besitzt ein Haus / Grundstück in Deiner Gemeinde (relevant).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Dksksm Jo, das sah ich ja auch so. Da ja auch die Gemeinde selbst Grundflächen hat. (Friedhof, Gemeindehaus, Feuerwehr usw.)
    Diese Flächen haben meist keine Adresse.
    In meiner Denke bin ich auch davon ausgegangen, das eine Gemeinde ein Straßennetz hat und jede Straße Grundstücke inne hat, die wiederum bebaut oder nicht bebaut sein können, wenn bebaut (mit Wohnhaus) dann hat dieses Wohnhaus eine Adresse.

    Stark abgespeckt sieht es jetzt erstmal so aus:
    Spoiler anzeigen

    C#-Quellcode

    1. public abstract class ModelBase
    2. {
    3. public virtual int ID {get;set;}
    4. }
    5. public class Community : ModelBase
    6. {
    7. public virtual string Name {get;set;}
    8. public virtual int PostalCode {get;set;}
    9. public virtual ICollection<Person> Residents {get;set;}
    10. public virtual ICollection<Street> StreetNetwork {get;set;}
    11. public virtual Administration CommunityAdministration {get;set;}
    12. }
    13. public class Administration : ModelBase
    14. {
    15. public virtual ICollection<CouncilMember> CouncilMembers {get;set;}
    16. public virtual CouncilMember CommunityMayor {get;set;}
    17. }
    18. public class Street : ModelBase
    19. {
    20. public virtual string StreetName {get;set;}
    21. public virtual ICollection<LandArea> StreetAreas {get;set;}
    22. }
    23. public class LandArea : ModelBase
    24. {
    25. public virtual ICollection<Owner> Owners {get;set;}
    26. public virtual ICollection<HousingUnit> HousingUnits {get;set;}
    27. }
    28. public class HousingUnit : ModelBase
    29. {
    30. public virtual ICollection<Owner> Owners {get;set;}
    31. public virtual ICollection<Resident> Residents {get;set;}
    32. }
    33. public abstract class Person : ModelBase
    34. {
    35. public virtual string FirstName {get;set;}
    36. public virtual string LastName {get;set;}
    37. public virtual string FullName => $"{FirstName} {LastName}";
    38. }
    39. public class Owner : Person
    40. {
    41. public virtual bool IsResident {get;set;}
    42. }
    43. public class Resident : Person
    44. {
    45. }
    46. public class CouncilMember : Person
    47. {
    48. }
    "Hier könnte Ihre Werbung stehen..."
    Hallo @ErfinderDesRades
    In meinem Fall ja, da unsere Gemeinde Teil einer Verbandsgemeinde ist und die Verbandsgemeinde hat mehrere PLZ.
    Ich will mich hier aber auf die Gemeinde (Ort) beschränken, alles andere wird ja noch komplizierter.

    EDIT:
    ich hänge hier mal ein TestProjekt an. Soweit sieht das mal gut aus.CommunityManager.zip
    "Hier könnte Ihre Werbung stehen..."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MichaHo“ ()

    ErfinderDesRades schrieb:

    hat eine Gemeine nur einen PostalCode?
    Das hatte ich in Post #4 schon eingebracht.
    @MichaHo Man könnte dann für jede Postleitzahl solch ein Konstrukt aufsetzen, das sollte in der ersten und zweiten Runde keine Auswirkung haben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi,
    @ErfinderDesRades ja, das mit der PLZ hab ich ja schon geändert.
    Deine Definition einer Gemeinde versteh ich nicht, vielleicht definieren wir alle aber auch Gemeinde anders.
    Also, bei uns im Westerwaldkreis ist es so, das eine Gemeinde = ein Dorf darstellt.
    Mehrere Dörfer bilden eine Verbandsgemeinde.
    Bei uns kann, soweit ich weis, ein Grundstück nur 1 Wohnhaus haben, ansonsten wird aus dem Grundstück ein 2. gemacht wo dann ein Haus drauf steht. Somit hat 1 Grundstück auch immer nur 1 PLZ und zwar die, von der Gemeinde selbst.
    In meinem Datenmodell gehe ich eben davon aus, das 1 Gemeinde 1 PLZ hat, 1 Namen hat, 1 Liste von Personen die Einwohner sind, 1 Liste von Personen die einen Gemeinderat bilden und 1 Person die der Bürgermeister ist. (Da hat @RodFromGermany ja schon gesagt das das eine Verwaltung wäre, also Gemeinderat und Bürgermeister).
    Dann gehe ich davon aus das 1 Gemeinde eine Liste von Straßen hat das das Straßennetz bildet und da die Gemeinde selbst ja auch Grundstücke hat, gibt es noch eine Liste von Grundstücken die als Besitzer die Gemeinde hat.
    1 Straße hat einen Namen und eine Liste von Grundstücken
    1 Grundstück hat eine Größe, eine FlurkartenNummer, eine Liste von Besitzern und 1 Gebäude.
    1 Gebäude hat eine Hausnummer, eine Liste von Bewohnern und eine Liste von Besitzern
    dann gibt es noch die verschiedenen Personen, also Bewohner, Besitzer, Gemeinderatsmitglied und Bürgermeister.
    "Hier könnte Ihre Werbung stehen..."
    Hi,

    MichaHo schrieb:

    1 Gebäude hat eine Hausnummer, eine Liste von Bewohnern und eine Liste von Besitzern

    Also bei uns ist es so, dass ein Gebäude sehr wohl mehrere Hausnummern haben kann, z.B. Musterstraße 15-17.

    LG Florian
    ----

    WebApps mit C#: Blazor

    ErfinderDesRades schrieb:


    Imo ein Grundstück kann mehrere Gebäude haben
    ein gebäude evtl. mehrere Addressen, mehrere Nummern


    Ich frage mich wozu das benötigt wird, wie ein Liegenschaftskataster aufgebaut ist kann man leicht recherchieren.
    Die Gemeinde muss aber wissen, welches Flusrstückl erschlossen ist oder nicht, ob es Fehlanschlüße gibt (ist in den 60er / 7er Jahren viel vorgekommen), etc.
    Nur grundsätzlich spielen die Anzahl der Gebäude für eine Gemeinde Eigentlich gar keine Rolle und die Adressen auch nicht.
    Über die Zuordnung zu Eigentümer kommen erst Adressen ins Spiel, vorher eigentlich nicht.

    @MichaHo sollte mal definieren, was das Projekt für eine Aufgabe hat, wie es sich definiert.
    @florian03 hmm, mehrere Hausnummer ja, oder besser gesagt 1 Hausnummer.
    denn Hausnummer ist bei mir ja nen String, da kann mann dann 15-17 rein schreiben, oder 4a oder 12b

    EDIT:
    @Dksksm das will ich gerne tun.
    es geht hier darum, eine Gesamtübersicht unserer Gemeinde(unseres Dorfes) zu haben.
    ich benotige das für Auswertungen als Bürgerinitiative gegen willkürliche Verwendung oder Auslebung des WKB. Somit sollten wir wissen, wer alles im Dorf wohnt, wer welche Grundstücke besitzt, ob diese bebaut sind und ob das Haus Eigentum oder vermietet ist.
    Ob die Einwohner Wahlberechtigt sind oder nicht. Da wir gerade Unterschriften sammeln, müssen wir dann noch erfassen, wer bereits unterschrieben hat, wer nicht unterschreiben will (da brauch dann keiner mehr hin) usw.

    da wir hier aufm Dorf sind, aufm Land, sind halt die Besitzverhältnisse nicht immer ganz klar, so kann es dann halt auch vorkommen das 1 Grundstück mehrere Besitzer hat usw. oder Grundstücke andere Besitzer wie das Haus was drauf steht und dann auch noch kann der Besitzer des Hauses ganz woanders wohnen.
    "Hier könnte Ihre Werbung stehen..."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MichaHo“ ()

    Hi,
    Wiederkehrende Straßenausbau Beiträge. Für so ein kleines Dorf wie wir eine Katastrophe weil es vom Land RLP keine Vorgaben gibt und die lokalen Gemeinderäte tun und lassen können was sie wollen.
    "Hier könnte Ihre Werbung stehen..."

    MichaHo schrieb:

    1 Grundstück hat eine Größe, eine FlurkartenNummer, eine Liste von Besitzern und 1 Gebäude.
    Das ist hier nicht gesichert.
    Was wäre mit einem Mehrfamilienhaus mit mehreren eingängen und folglich mehreren Hausnummern?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!