1"use strict";(globalThis.webpackChunkschulconnex=globalThis.webpackChunkschulconnex||[]).push([[25,855],{17950(e,n,i){i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>c,frontMatter:()=>s,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"datenmodell-qs/datenmodell-arrays","title":"datenmodell-arrays","description":"Hinweis zur Reihenfolge der Elemente in Arrays","source":"@site/docs/datenmodell-qs/datenmodell-arrays.md","sourceDirName":"datenmodell-qs","slug":"/datenmodell-qs/datenmodell-arrays","permalink":"/docs/datenmodell-qs/datenmodell-arrays","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{}}');var t=i(74848),a=i(28453);const s={},d=void 0,l={},o=[{value:"Hinweis zur Reihenfolge der Elemente in Arrays",id:"hinweis-zur-reihenfolge-der-elemente-in-arrays",level:2}];function u(e){const n={h2:"h2",p:"p",...(0,a.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"hinweis-zur-reihenfolge-der-elemente-in-arrays",children:"Hinweis zur Reihenfolge der Elemente in Arrays"}),"\n",(0,t.jsx)(n.p,{children:"Die Reihenfolge der Elemente in JSON-Arrays, die vom Schulconnex-Server geliefert werden, ist nicht spezifiziert. Anwendungen d\xfcrfen sich nicht darauf verlassen, dass die Elemente in der Reihenfolge ihrer Speicherung oder bei wiederholten API-Aufrufen in derselben Reihenfolge erscheinen."})]})}function c(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},28453(e,n,i){i.d(n,{R:()=>s,x:()=>d});var r=i(96540);const t={},a=r.createContext(t);function s(e){const n=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),r.createElement(a.Provider,{value:n},e.children)}},63116(e,n,i){i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"datenmodell-qs/datenmodell","title":"Datenmodell","description":"Der Begriff Datenmodell steht im Kontext dieser Spezifikationen nicht f\xfcr das Datenmodell zur Persistierung von","source":"@site/docs/datenmodell-qs/datenmodell.md","sourceDirName":"datenmodell-qs","slug":"/datenmodell-qs/datenmodell","permalink":"/docs/datenmodell-qs/datenmodell","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"spezQuellsystemeSidebar","previous":{"title":"Allgemeines","permalink":"/docs/allgemeines-qs"},"next":{"title":"Anschrift","permalink":"/docs/datenmodell-qs/anschrift"}}');var t=i(74848),a=i(28453),s=i(17950);const d={},l="Datenmodell",o={},u=[...s.toc,{value:"Verwendete Konventionen",id:"verwendete-konventionen",level:2},{value:"Optionalit\xe4t und Anzahl",id:"optionalit\xe4t-und-anzahl",level:3},{value:"String",id:"string",level:3}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",mermaid:"mermaid",p:"p",...(0,a.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"datenmodell",children:"Datenmodell"})}),"\n",(0,t.jsx)(n.p,{children:"Der Begriff Datenmodell steht im Kontext dieser Spezifikationen nicht f\xfcr das Datenmodell zur Persistierung von\nEntit\xe4ten in einer Datenhaltung. Im Kontext dieser Spezifikation repr\xe4sentiert der Begriff die Datenstruktur\nder Nutzlast von Anfragen (Request Payload) und der Nutzlast der Antworten (Response Payload)\nbei XHR-Anfragen (HTTP-Anfragen gegen API-Endpunkte)."}),"\n",(0,t.jsxs)(n.p,{children:["Das Datenmodell der Schnittstelle basiert auf Datenmodellen der Spezifikationen ",(0,t.jsx)(n.a,{href:"https://www.xrepository.de/details/urn:xoev-de:xbildung-de:def:standard:xbildung",children:"XBildung"})," und\n",(0,t.jsx)(n.a,{href:"https://www.xrepository.de/details/urn:xoev-de:xschule-digital:def:standard:xschule",children:"XSchule"})," (bspw. \u201eNatuerlichePerson\u201c ist die Vorlage f\xfcr \u201ePerson\u201c, auch \u201eOrganisation\u201c ist an XBildung orientiert),\njeweils mit spezifischen Erweiterungen."]}
1),"\n",(0,t.jsx)(n.mermaid,{value:"classDiagram\n Personendatensatz --\x3e Person : 1\n Personendatensatz --\x3e Personenkontext : 0..n\n Beziehung --\x3e Personenkontext : 1..n\n Person --\x3e Organisation : 0..1\n Personenkontext --\x3e Organisation : 1\n Personenkontext --\x3e Sichtfreigabe : 0..1\n Organisation --\x3e Anschrift : 0..1\n Anschrift --\x3e VerwaltungspolitischeKodierung : 0..1\n Gruppe --\x3e Organisation : 1\n Gruppendatensatz --\x3e Gruppe : 1\n Gruppendatensatz --\x3e Gruppenzugeh\xf6rigkeit : 0..n\n Gruppe --\x3e Lernperiode : 0 oder 2\n class Personendatensatz {\n person\n personenkontexte\n }\n class Beziehung {\n id\n mandant\n ktid\n beziehung\n revision\n }\n class Person {\n id\n referrer\n mandant\n stammorganisation\n name\n name.familienname\n name.vorname\n name.initialenfamilienname\n name.initialenvorname\n name.rufname\n name.titel\n name.anrede\n name.namenssuffix\n name.sortierindex\n geburt\n geburt.datum\n geburt.geburtsort\n geschlecht\n lokalisierung\n vertrauensstufe\n auskunftssperre\n revision\n }\n class Personenkontext {\n id\n referrer\n mandant\n organisation\n rolle\n erreichbarkeiten\n erreichbarkeiten.typ\n erreichbarkeiten.kennung\n personenstatus\n jahrgangsstufe\n sichtfreigabe\n loeschung\n loeschung.zeitpunkt\n revision\n }\n class Gruppendatensatz {\n gruppe\n gruppenzugehoerigkeiten\n }\n class Organisation {\n id\n kennung\n name\n namensergaenzung\n kuerzel\n anschrift\n typ\n traegerschaft\n }\n class Anschrift {\n postleitzahl\n ort\n ortsteil\n verwaltungspolitischeKodierung\n }\n class VerwaltungspolitischeKodierung {\n bundesland\n }\n class Gruppe {\n id\n mandant\n orgid\n referrer\n bezeichnung\n thema\n beschreibung\n typ\n bereich\n optionen\n differenzierung\n bildungsziele\n jahrgangsstufen\n faecher\n faecher.kennung\n faecher.bezeichnung\n referenzgruppen\n referenzgruppen.grupid\n referenzgruppen.rollen\n laufzeit\n laufzeit.von\n laufzeit.vonlernperiode\n laufzeit.bis\n laufzeit.bislernperiode\n revision\n }\n class Gruppenzugeh\xf6rigkeit {\n id\n mandant\n referrer\n ktid\n rollen\n von\n bis\n revision\n }\n class Lernperiode {\n bezeichnung\n typ\n beginn\n ende\n }\n class Sichtfreigabe {\n id\n orgid\n von\n bis\n revision\n }"}),"\n",(0,t.jsx)(n.admonition,{title:"Hinweis",type:"note",children:(0,t.jsxs)(n.p,{children:["Die Angabe ",(0,t.jsx)(n.code,{children:"0 oder 2"})," f\xfcr \u201eGruppe\u201c assoziiert mit der Klasse \u201eLernperiode\u201c bedeutet, dass eine Gruppe entweder\nkeine Lernperioden oder genau zwei Lernperioden (",(0,t.jsx)(n.code,{children:"vonlernperiode"})," und ",(0,t.jsx)(n.code,{children:"bislernperiode"}),") haben kann, siehe auch\n",(0,t.jsxs)(n.a,{href:"/docs/datenmodell-qs/gruppe",children:["Datenmodell Gruppe Attribut ",(0,t.jsx)(n.code,{children:"laufzeit"})]}),"."]})}),"\n",(0,t.jsx)(s.default,{}),"\n",(0,t.jsx)(n.h2,{id:"verwendete-konventionen",children:"Verwendete Konventionen"}),"\n",(0,t.jsx)(n.h3,{id:"optionalit\xe4t-und-anzahl",children:"Optionalit\xe4t und Anzahl"}),"\n",(0,t.jsxs)(n.p,{children:["In den Datenmodellen wird f\xfcr jedes Attribut die Anzahl des Vorkommens definiert. Attribute mit der\nAnzahl ",(0,t.jsx)(n.code,{children:"0..1"})," oder ",(0,t.jsx)(n.code,{children:"0..n"})," sind als optional zu verstehen. Je nach Autorisierung kann bei einer erfolgreichen\nHTTP-Anfrage gegen einen API-Endpunkt das minimale Datenmodell ausgegeben werden. Dieses umfasst die Attribute\nmit der Mindestanzahl ",(0,t.jsx)(n.code,{children:"1"}),". Beispielsweise kann eine R\xfcckgabe nur das Attribut ",(0,t.jsx)(n.code,{children:"id"})," (identifier) enthalten."]}),"\n",(0,t.jsx)(n.h3,{id:"string",children:"String"}),"\n",(0,t.jsx)(n.p,{children:"Bei Attributen vom Typ String (Zeichenkette) ist die maximale L\xe4nge der Zeichenkette standardm\xe4\xdfig mit\n256 Zeichen definiert. Bei Strings, deren maximale L\xe4nge davon abweicht, ist die maximale L\xe4nge in den\nDatenmodellen angegeben. Diese Angabe erfolgt durch Anhang der Maximall\xe4nge in Klammern hinter den Datentyp
1String.\nDie Angabe \u201eString (32)\u201c definiert einen Text mit der maximalen L\xe4nge von 32 Zeichen."})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.