####Sie wird vom Programm 'dbbuild' gelesen und in SQL-Befehle umgesetzt.
#
## Doku::
# Tabelle: name
## SQL-Name der Datenbank
# Index: id, kunde datum, name(10), >>acct hash seq
## Eindeutige Indices (Im Beispiel ist 'kunde' alleine NICHT eindeutig)
## (##) hinter dem Indexfeld: indizierte Länge.
## ">>bla fasel laber" bezeichnet einen Index, der auch Foreign Key ist
## und auf die Felder fasel+laber in in Tabelle 'bla' verweist.
## (Feldnamen sind identisch.)
# Index: datum
## Nichteindeutige Indices.
## Grundsätzlich ist nicht festgelegt, wie ein Index in der Real-Datenbank
## heißt. Indices, die man für "USE INDEX" verwenden will, kann man aber einen
## definierten Namen geben, indem man den voranstellt, gefolgt von einem
## Doppelpunkt. Beispiel: "quelle: quelle dienst timestamp" (vgl. RT#254440)
# Verwendung: Text Text
#             Text
## Kurze Beschreibung, wozu diese Tabelle da sein soll.
# Aufbau:
# Bla	intLAENGE	Flags	Doku
# Fasel	charLAENGE	Flags	Doku
## Jeweils max. Länge in Bytes.
#
## Flags::
# !>bla.fasel Der Eintrag verweist auf das Datenfeld 'fasel' in der
#             Tabelle 'bla', mit ON DELETE RESTRICT
# !>bla       Referenz auf den Primärschlüssel der Tabelle bla
# !>>bla      dito, aber mit ON DELETE CASCADE 
# !>bla/laber siehe !bla/laber (Altlast: Dienst-Deskriptor)
# !bla        Der Eintrag verweist auf den Deskriptor 'bla' in der
#             Deskriptorentabelle; NULLs darf es nicht geben
# !bla/F,G,^H begrenze die Anzeige auf Werte in Gruppen F oder G aber außer H
#             (Default: ^hide, wenn '!<Name>_ident.hide' bekannt ist)
# !bla.X      dito, Defaultwert bei NULL ist X
# !*bla       Der Eintrag enthält eine Bitmap von Deskriptoren 'bla',
#             der Wertebereich ist dabei notwendigerweise auf 1..63 beschränkt
# !?bla       der nächste freie Wert steht in nextid->'bla'
# !?+         der nächste freie Wert wird via autoincrement zugeteilt
# !$          Geldbetrag (in Cent)
# !/          der Eintrag ist eine Datums+Zeitangabe (Unix-Sekunden, wenn uint4)
# !/+         der Eintrag ist ein Zeitstempel (automatisch geupdatet)
# !//         der Eintrag ist ein Zeitraum (Sekunden)
# !(A-Z)      Beschränkung des Wertebereichs auf A bis Z inklusive
#             können Zahlen oder andere Felder sein
# !(JJJJMM)   Feld enthält Jahr+Monat
# !(TT/X)     Feld enthält Tag; Jahr+Monat steht in Feld X, zwecks Prüfung
# !(dienst!ziel) Suche in der durch das Feld 'dienst' bezeichneten
#             Deskriptortabelle (also doppelt indirekt), oder in Tabelle
#             'ziel' wenn es eine solche nicht gibt
# !%XXX       Spezialbehandlung notwendig (Constraint: XXX)
# !%ref       die Referenz (NUR bei Deskriptoren!) darf ungültig sein
# !%null      das Feld kann sowohl 0 als auch NULL enthalten
# !%max(X)    nächster freier Wert bei gleichem Inhalt von Spalte X
# !%max(Y.Z)  höchster(?) Wert in Tabelle Y; Spalte Y.Z hat !%max(X)
# !%hash()    der Feldinhalt wird via hash()-Aufruf gebaut
# !%ascii     Zeichensatz (Default: ASCII bei 1stelligen Strings, sonst UTF8)
# !%latin1    Zeichensatz
# !%ctrl      Feld darf Steuerzeichen (ASCII < \x20) enthalten
#             insbes. Tab und LF
# !%case_sens In diesem Feld muss Groß/Kleinschreibung unterschieden werden
# !%ticket    Das Feld referenziert eine Ticketnummer.
# !^ / !^^    Menubaum. Siehe tools/dbtree.
# !-          Feld darf NULL sein
# !##         Feld ist obsolet
# !#          Feld ist bald obsolet
#
#	char        ein ASCII-Zeichen
#	charNN      bis zu NN ASCII-Zeichen
#	fcharNN     NN ASCII-Zeichen (char, nicht varchar)
#	int         Integer (32 bit)
#	intN        Integer (N*8 Bits, N=1 2 4 (8))
#	uintN       Integer (N*8 Bits, N=1 2 4 (8)), nicht-negativ
#	textN       Text (max. 2^(N*8) Zeichen, N=1 2 3)
#	binN        Binärdaten (max. 2^(N*8) Zeichen, N=1 2 3)
#	datetime        TIMESTAMP- oder DATETIME-Spalte
#	float       Fließkommazahl
#	double      Fließkommazahl mit hoher Präzision
##
## Der "ID-Liste:"-Eintrag besagt, für welche Tabellen nextid-Spalten
## angelegt werden sollen.


Tabelle:	nextid
Verwendung:	Speicherung des nächsten ID-Werts
           	(nicht alle Datenbanken können atomare sequentielle Werte)
Index:	name
Index:	timestamp
Aufbau:
id	int4	Zähler
name	char255	-	ID
timestamp	datetime	!/+	Zeitstempel

ID-Liste:	ticket


Tabelle:	descr_typ
Verwendung:	Deskriptoren-Name
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!^!?+	eindeutige Nummer
name	char30	-	Name der Subtabelle
info	char255	!-	kurze Erklärung
timestamp	datetime	!/+	Zeitstempel


Tabelle:	descr
Verwendung:	Mappt numerische Werte auf lesbare Beschreibungen.
Index:	id, typ descr, typ bla
Index:	timestamp
Aufbau:
id	int4	!?+	ID
typ	int4	!^!>descr_typ	Subtabelle
descr	int4	-	numerischer Wert, oder ASCII des Zeichens
bla	char30	-	textuelle Beschreibung (kurz)
idchar	char	!-!%case_sens!%utf8	Kurzzeichen für die Übersicht
gruppe	int4	!*<name>_ident	Untergruppen
infotext	char255	!-	kurze Erklärung
timestamp	datetime	!/+	Zeitstempel


Tabelle:	ticket
Verwendung:	RT-Tickets
Index:	id
Index:	ticket, kunde queue, timestamp, status bearbeiter, bearbeiter queue, queue subject
Aufbau:
id	int4	!?ticket	eindeutige Nummer; ausnahmsweise weiterhin über DoSeq() vergeben, weil wir die Ticket-ID schon vor Anlegen des Datensatzes kennen möchten.
timestamp	datetime	!/+	Zeitstempel
ticket	int4	!-!>ticket	Bezug (Tickets mit id!=ticket werden
			nur zur Assoziation verwendet; NULL:transienter Zustand)
kunde	int4	!^__!>kunde	Kunde, der das Problem hat
subject	char255	-	Genauere Problemkurzbeschreibung
infotext	char255	!-	Aktueller Zustand
queue	int4	!>queue	für RT, Queue
queue_area	int4	!-!>queue_areas	für RT, Area
beginn	uint4	!/	Problem bemerkt (Unix-Zeit), Ticket generiert
			(rt: date_created)
wichtig	int2	-	Dringlichkeit
status	int2	!tickets.0
termin	uint4	!-!/	Wiedervorlage (RT: date_due)
endtermin	uint4	!-!/	bis wann das Teil bearbeitet sein muß
bearbeiter	int4	!-!>person	der Mensch, dem das Teil gehört
d_told	uint4	!/	date_told von RT
d_acted	uint4	!/	date_acted von RT
maxseq	int4	!%max(ticketid.seq)	nur informativ!
zeit	int4	!-	für dieses Ticket budgetierte(!) Arbeitszeit


Tabelle:	ticketid
Verwendung:	Message-IDs zum Wiederfinden von Tickets, Tickettexte
Index:	id, ticket seq, ticket extern seq
Index:	timestamp, ticket typ data, data, person, email
Aufbau:
id	char255	-	Message-ID-Inhalt
timestamp	datetime	!/+	Zeitstempel
ticket	int4	!^!>ticket	Nummer des Tickets
person	int4	!-!>person	Absender
email	char255	!-	Absender-Mailadresse
seq	int4	!-!%max(ticket)+1	Nummer der Mail
			NULL => nur Referenz
extern	char	!bool.n	'y' -> dieser Text ist extern sichtbar, geht an alle
			in 'errmail' aufgeführten Adressen
typ	int2	!tickett	RT:type
data	char255	!-	RT:trans_data
inhalt	bin3	!%ctrl	eigentlicher Text
			Binärfeld wegen evtl. utf8-Inkonsistenzen
			in externen Mails o.ä.


Tabelle:	ticketadr
Verwendung:	Speichern von Mailadressen für Tickets.
           	Ticketänderungen werden an die gespeicherten Adressen gemailt,
           	wenn gewünscht.
Index:	id
Index:	ticket email, ticket person, timestamp
TODO: ('person' und) 'adr' wegwerfen.
Aufbau:
id	int4	!?+	ID des Eintrags
ticket	int4	!^!>ticket	Nummer des Tickets
person	int4	!-!>person	Person
email	char255	-	Mailadresse
marker	char	!marker.0	Abgleich der Personenliste
			(requestor-Liste; NULL=nein)
timestamp	datetime	!/+	Zeitstempel


Tabelle:	mailassoc
Verwendung:	Assoziation zusätzlicher Mailadressen zu einem Personen- oder Kundenrecord
Index:	id, email
Index:	person, timestamp
Aufbau:
id	int4	!?+	ID
email	char255	-	Mailadresse
person	int4	!^!>person	zugeordnete Person
timestamp	datetime	!/+	Zeitstempel


Tabelle:	ipkunde
Verwendung:	Map IP-Adresse zu Kunde
Index:	id, ip6 bits ende, vrf
Index:	kunde, name, mac ende, ticket, timestamp
Aufbau:
id	int4	!?+	ID des Eintrags
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!^!>kunde	Kunde
ip6	char32	!%ascii	IPv6-Adresse in nicht abgekürzter Hexadezimalschreibweise (IPv4-Adressen mit 24 führenden Nullen)
bits	int1	!(0-128)	Anzahl der rechts _nicht_ zur Netzmaske gehörenden Bits
tarif	int2	!>dienst	IP-Dienst, dem die IP-Daten dieser Adresse zugeordnet werden
beginn	uint4	!/	Zeitpunkt der Zuteilung der Adresse
ende	uint4	!-!/	Freigabezeitpunkt der Adresse
kiste	char16	!-	Router, der die Adresse announcet
mac	fchar12	!-!%ascii	MAC-Adresse der Kiste
name	char255	!-	primärer Domainname; bei Netzen: Kurzbeschreibung
infotext	char255	!-	Zusatzinfo
alloc	char	!-!alloc.n	Auto-Allokation? "+" oder "-"
ipregion	int4	!-!>ipregion	die aus diesem Bereich Adressen vergeben kann
ticket	int4	!-!%ticket	Kundenauftrag für das inetnum-Objekt
owner	int4	!-!>person	Firma des Adressblocks
adminc	int4	!-!>person	Admin-C des Adressblocks
techc	int4	!-!>person	Tech-C des Adressblocks
nic	int2	!-!nic	Registrar für den Adressblock
status	int1	!-!ipstatus	Status des Antrags
dest	int2	!ziel	Zielcode für IP-Traffic an diese Adresse
nagiosconf	char255	!-	spezielle Konfigurationseinstellungen für Nagios (vgl. RT#259990)
flags	int4	!*ipflags	Flags, z. B. "no_virusscan"
snmp_community	char255	!-	SNMP-Community für Abfragen z. B. durch CapMan (vgl. RT#349627)
mail_ip	uint1	!-	Wert des letzten Bytes der IP-Adressen, die auf mail.noris.net für E-Mails verwendet werden soll, die von diesem Host eingeliefert wurden (vgl. RT#407095)
vrf	char255	!-	Name des VRFs. Darf nur bei /96-Netzen gesetzt sein, die mit dem $VRF_PREFIX beginnen. Vgl. RT#369538.


Tabelle:	iptree
Verwendung:	Parent<->Child-Beziehungen von IP-Adress-Host-Objekten für Monitoring-Konfiguration, vgl. RT#221142
Index:	id, child parent, parent child
Index:	timestamp
Aufbau:
id	int4	!?+	ID des Eintrags
timestamp	datetime	!/+	Zeitstempel
child	int4	!>ipkunde	ID des Kind-Objekts
parent	int4	!^!>ipkunde	ID des Eltern-Objekts


Tabelle:	hostgroup
Verwendung:	Hostgruppen, z. B. für eine Gruppierung in Nagios oder collectd, vgl. RT#437749
Index:	id, name
Index:	timestamp, kunde
Aufbau:
id	int4	!?+	ID des Eintrags
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!^!>kunde	Kunde, zu dem die Hostgroup gehört
name	char64	-	eindeutiger Name der Hostgroup
beschreibung	char64	!-	Beschreibung (zur Anzeige in Benutzerschnittstellen)


Tabelle:	ip_hostgroup
Verwendung:	Zuordnung von IP-Adressobjekten zu Hostgroups
Index:	id, host gruppe
Index:	timestamp, gruppe
Aufbau:
id	int4	!?+	ID des Eintrags
timestamp	datetime	!/+	Zeitstempel
host	int4	!>>ipkunde	zugeordneter Host
gruppe	int4	!^!>hostgroup	Hostgroup, der der Host zugeordnet ist


Tabelle:	confitem
Verwendung:	Liste von Setups pro Kunde zur Kategorisierung von incident-Tickets, vgl. RT#199848
Index:	id, kunde name
Index:	timestamp
Aufbau:
id	int4	!?+	ID des Eintrags
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!^!-!>kunde	Kunde
name	char255	-	Name des CIs


Tabelle:	leitung
Verwendung:	(Stand-)Leitungen verwalten und zu Kunden assoziieren
Index:	id
Index:	timestamp, a_hardware, b_hardware
Aufbau:
id	int4	!?+	ID des Eintrags
kunde	int4	!^!>kunde	Kunde
ktarif	int4	!-!>tarifkunde	Tarif des Kunden, der zu dieser Leitung gehört (vgl. Ticket 10096055)
name	char255	-	noris-Bezeichnung der Leitung
art	int2	!-!leitungsart	Art der Leitung, vgl. RT#211370
carrier	int4	!-!>person	Carrier für diese Leitung
name_carrier	char255	!-	Leitungsbezeichnung des Carriers
infotext	char255	!-	zusätzliche Informationen
backup	int4	!-!>person	Account für das (z. B. ISDN-)Backup, vgl. RT#381245
a_ende	int4	!-!>person	A-Endpunkt der Leitung
a_hardware	int4	!-!>hardware	Hardware am A-Ende (RT#402575)
b_ende	int4	!-!>person	B-Endpunkt der Leitung
b_hardware	int4	!-!>hardware	Hardware am B-Ende (RT#402575)
timestamp	datetime	!/+	Zeitstempel
beginn	uint4	!/	Zeitpunkt der Zuteilung der Adresse
ende	uint4	!-!/	Freigabezeitpunkt der Adresse


Tabelle:	wartungsvertrag_leitung
Verwendung:	Zuordnung von Wartungsverträgen zu Leitungen
Index:	id
Index:	leitung beginn, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
wartungsvertrag	int4	!>wartungsvertrag	zugeordneter Wartungsvertrag
leitung	int4	!^!>leitung	zugeordnete Leitung
beginn	uint4	!/	Beginn der Laufzeit des Wartungsvertrags
ende	uint4	!/!-	Ende der Laufzeit des Wartungsvertrags


Tabelle:	domainkunde
Verwendung:	Map Domainadresse zu Kunde
Index:	id, domain ende
Index:	kunde, ktarif, nserver, ticket, timestamp, person, status beginn
Aufbau:
id	int4	!?+	ID des Eintrags
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!^!>kunde	Kunde
domain	char100	!%ascii	vollständiger Domainname, punycode
beginn	uint4	!/	Zuteilung
ende	uint4	!-!/	Freigabe
expires	uint4	!-!/	Ablauf laut Registrar
		--
status	int2	!domainstatus	Status
infotext	char255	!-	Kurzbeschreibung wieso (IP-Nr etc.)
tarifname	int4	!-!>tarifname	Name des (künftigen...) Tarifs
rechinfo	int4	!-	externe Rechnung -> erech
ktarif	int4	!-!>tarifkunde
person	int4	!-!>person	Besitzer des Webspaces o.ä.
owner	int4	!-!>person	Firma des Domainantrags
adminc	int4	!-!>person	Admin-C des Domainantrags
techc	int4	!-!>person	Tech-C des Domainantrags
zonec	int4	!-!>person	Zone-C des Domainantrags
billc	int4	!-!>person	Bill-C des Domainantrags
nic	int2	!-!nic	Registrar für die Domain
nserver	int4	!-!>ipkunde	Name+Adresse eines kundeneigenen Primary
tsig	int2	!-!tsig	TSIG-Key für allow_update
ticket	int4	!-!%ticket	Kundenauftrag für die Domain
nachricht	int4	!-!>person	Benachrichtigung bei Updates etc.
flags	int4	!*domainflags	Flags, z. B. "dnszone"
mail_ip	uint1	!-	Wert des letzten Bytes der IP-Adressen, die auf mail.noris.net für E-Mails mit dieser Absenderdomain verwendet werden sollen
auftragsnr	uint4	!-	externe Auftragsnummer beim Registrar (Partnergate), vgl. Ticket 459102

Tabelle:	uucpkunde
Verwendung:	Aliasnamen für Kunden
Index:	name
Index:	kunde, timestamp
Aufbau:
name	char32	-	Aliasname des Kunden
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!^!>kunde	Nummer des Kunden
			Die Namen werden nicht recycelt!


Tabelle:	konten
Verwendung:	Abbuchungsaufträge etc.
Index:	kunde
Index:	timestamp
Aufbau:
kunde	int4	!^!>kunde
blz	char10	-	Bankleitzahl
name	char40	-	Kontoinhaber (Länge entsprechend FibuNet, vgl. Ticket #10023411)
kontonr	char15	-	Kontonummer
bank	char40	-	Name der Bank
timestamp	datetime	!/+	Zeitstempel


Tabelle:	kunde
Verwendung:	Kundendatenbank
Index:	id, name
Index:	timestamp, reseller, kunde, ende id
Aufbau:
id	int4	!^!?+	ID-Nummer des Kunden
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!-!>kunde	Übergeordneter Kunde
reseller	int4	!-!>kunde	Reseller, der für diesen Kunden aktiv sein darf
name	char32	-	Kurzname des Kunden (weitere -> uucpkunde)
beginn	uint4	!/	Zeitpunkt Vertragsabschluß (Kunde)
ende	uint4	!-!/	Kündigungstermin. Kunde:0 nie Kunde:1.
zuletzt	int4	!-!(JJJJMM) nächster zu berechnender Monat
berechne	char	!intervall.m	wie oft wird berechnet? 'm'onat 'q'uartal 'j'ahr 'x'=manuell
kprio	char	!-!kprio	wie wichtig ist der Kunde?
geaendert	uint4	!-!/	Zeitpunkt der letzten Änderung an diesem Kunden;
			verwendet zum Rechnungssortieren
flags	int4	!*kunde	Flags dieses Kunden
pwklasse	int2	!-!passwort	Hint, welches Passwort für den Kunden verwendet wurde
skip	char	!bool.n	überspringe in diesem Rechnungslauf
erloeskonto	int4	!-	Buchungs-Kontonr für Rechnung
steuernr	char20	!-	UST-ID-Nr
zahlung	int1	!-	Zahlungsziel (NULL == Default)
sprache	int2	!-!sprache	Default-Sprache, insb. für Postfächer (RT#224274)
#
hauptperson	int4	!-!>person	Adresse etc. des Kunden (ehemals :-0)
billc	int4	!-!>person	Rechnungsanschrift des Kunden (ehemals billc-0)
adminc	int4	!-!>person	Ansprechpartner für Domains (ehemals nic/adminc-0)
ap_vertrieb	int4	!-!>person	vertrieblicher Ansprechpartner, vgl. RT#273307
ap_technik	int4	!-!>person	technischer Hauptansprechpartner, vgl. RT#273307
mail_ip	uint1	!-	Wert des letzten Bytes der IP-Adressen, die auf mail.noris.net für E-Mails dieses Kunden verwendet werden sollen


Tabelle:	rechnungen
Verwendung:	speichert ab, welche Kunden welche Rechnungen bekommen haben
Index:	rnr
Index:	kunde datum, betrag, datum kunde, timestamp
Aufbau:
rnr	int4	-	Rechnungsnummer
timestamp	datetime	!/+	Zeitstempel
datum	uint4	!/	Zeitpunkt der Rechnungserstellung
kunde	int4	!^!>kunde
infotext	char255	-	für die Buchung
betrag	int4	!$	Cent, ohne Märchensteuer
steuer	int4	!$	Märchensteuer dazu
auftragsnr	char50	!-	Auftragsnummer
rbetrag	int4	!-!$	Cent, bezahlter Betrag
buchung	int4	!-	Buchungsnummer
auszug	int4	!-	Kontoauszugsnummer
flags	int4	!*rstatus	Gemailt/gedruckt/whatever
rtext	text3	!%ctrl!-	Text der Rechnung
fusstext	text2	!%ctrl!-	Text unter der Rechnung
konto	int3	!-   Sachkonto
storniert	uint4	!-!/	Datum zu dem die Rechnung storniert wurde
			(NULL: nicht storniert)


Tabelle:	buchung
Verwendung:	Speichert die zu einer Rechnung gehörenden Buchungsdatensätze
           	# ;;;astrum: Routerport, 2000-10-23-2000-10-31, ;40.50;;8426
Index:	rnr seq
Index:	timestamp
Aufbau:
rnr	int4	!^!>rechnungen.rnr	Rechnungsnummer
seq	int2	- Buchungssatz
buchtext	char767	-	Buchungstext (zur Länge s. RT#469524)
betrag	int4	!$	Cent (gesamt) -- manuell: Einzelpreis wird berechnet
kunde	int4	!>kunde	(Unter)kunde für den berechnet wurde
beginn	uint4	!-!/	Anfang des berechneten Zeitraums
ende	uint4	!-!/	Ende des berechneten Zeitraums
konto	int4	-	Konto, auf das gebucht wird
timestamp	datetime	!/+	Zeitstempel
mtext	char250	!-	Rechnungstext
manzahl	int4	!-	Anzahl*1000
meinheit	int2	!-!einheit	Stück/Bytes/whatever
mrabatt	int2	-	Prozent
flags	int4	!*buchung	Flags


Tabelle:	acct
Verwendung:	Speicherung von detaillierten Accountingrecords
Hash:	kunde dienst dest jjmm tt quelle
Index:	hash seq
Index:	jjmm dienst dest, kunde jjmm dienst, dienst quelle jjmm, timestamp, dienst timestamp, quelle: quelle dienst timestamp
Aufbau:
hash	int4	!%hash(kunde,dienst,dest,jjmm,tt,quelle)	interner Index
seq	int2	!%max(hash)+1	Folgenummer für gleiche Hashes
kunde	int4	!^!>kunde	ID des Kunden
jjmm	int4	!(JJJJMM)	Jahr und Monat des Eintrags
tt	int2	!(TT/jjmm)	Tag des Eintrags
dienst	int2	!>dienst	Typ des Eintrags
dest	int2	!(dienst!ziel)	Ziel
pakete	uint8	-	Zahl der IP-Pakete / Mails / Verbindungen
bytes	uint8	-	Summe der Bytes / Einheiten
quelle	int2	!quelle	Wer hat diese Bytes gezählt?
timestamp	datetime	!/+	Zeitstempel

Tabelle:	kundemail
Verwendung:	Welche Person gehört bei welchem Kunden zu was?
Index:	kunde dienst person
Index:	timestamp, person
Aufbau:
kunde	int4	!>kunde	ID des Kunden
dienst	int2	!dienst	Dienst
dringend	int2	-	Ordnungskriterium
person	int4	!^!>person	Person
timestamp	datetime	!/+	Zeitstempel


Tabelle:	person
Verwendung:	Speichert die für einen Mitarbeiter einer Firma
           	relevanten Daten. Dient auch als Zusatz zur /etc/passwd
           	bei noris. Die hier nicht aufgeführten Felder der
           	/etc/passwd werden automagisch generiert.
Index:	id, suchbegriff, user
Index:	uid, email, mperson, timestamp, name, uremip, kunde
Aufbau:
infotext	char255	!-	(längliche) Beschreibung
id	int4	!?+!%kpersinfo	ID-Nr des Menschen
kunde	int4	!^___!>kunde	"Hauptkunde" des Eintrags
name	char255	!-	Anrede/Vor/Zuname | Firmenname
abt	char255	!-	Abteilung
email	char255	!-	Mailadresse
fon	char255	!-!%Fon	Telefonnummer
fax	char255	!-!%Fon	Faxnummer
pager	char255	!-!%Fons	Pager/Handynummer
isdn	char255	!-!%Fons	ISDN-Nummern
dest	char4	!-!mailart	Ziele für Nachrichten TODO !*mailart
adresse	int4	!^^!-!>adresse	Adresse
ausweisnr	char255	!-	Personalausweisnummer
zusatzinfo	char255	!-	Sonstiges
suchbegriff	char255	!-	Suchbegriff
user	char32	!-	Username
pass	char255	!-	Paßwort
uid	int4	!-!%UID	ID des Users
homedir	char255	!-	Homeverzeichnis / WWW-Unterverzeichnis
pwuse	int8	!*pwdomain	für was das PW gilt
redirect	char255	!-	HTTP-Redirect-Ziel
pppoe	int2	!-!pppoe	Template für Radius-Usernamen, vgl. Ticket 10120431
radiustemplate	int2	!-!radius-templates	zu verwendendes Radius-Template, vgl. RT#200867
maxconn	int1	!-!(0-30)	max. Zahl gleichzeitiger Multilink-Verbindungen
vrf	int2	!#!-!vrf	Virtual Routing and Forwarding, vgl. RT#169889
uremip	int4	!-!>ipkunde	entfernte Adresse (Transitnetz?) für PPP etc.
prefcall	int2	!-!mailart	welcher Dienst vorrangig zur Benachrichtigung
			verwendet wird -> descr.mailart
tarifname	int4	!-!>tarifname	wie die Arbeitszeit normalerweise verrechnet wird
mperson	int4	!-!>person	übergeordneter Eintrag?
gebtag	int2	!-	wann geboren?
gebjahr	int2	!-	wann geboren?
job	char255	!-	was macht der dort?
nagiosconf	char255	!-	spezielle Konfigurationseinstellungen für Nagios (vgl. RT#259990)
timestamp	datetime	!/+	Zeitstempel


Tabelle:	land
Verwendung:	Speichert Daten über ein Land
Index:	id
Index:	timestamp
Aufbau:
id	int2	!?+	ID
timestamp	datetime	!/+	Zeitstempel
kfz	char3	-	ein- bis dreistellige Kennung
iso2	fchar2	-	iso 2stellig
iso3	fchar3	-	iso 3stellig
name	char30	-	Name des Landes
name_en	char30	-	Name des Landes
eu	char	!jbool.n	EU-Mitglied?


Tabelle:	adresse
Verwendung:	Speichert Adressdaten.
Index:	id, kurz
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
kurz	char40	!-	Kurzname für diese Adresse (z.B. "RZ2")
land	int2	!^^!>land	
plz	char10	-	Postleitzahl
ort	char100	-	Ort
strasse	char250	!%ctrl	der ganze Rest; potenziell mehrzeilig


Tabelle:	pwhist
Verwendung:	speichert Änderungen im pwuse-Feld
Index:	id
Index:	person, timestamp
Aufbau:
id	int4	!?+	ID
person	int4	!^!>person	wessen Flags geändert wurden
flag	int8	!*pwdomain	gesetzte oder gelöschte Bits
timestamp	datetime	!/+	Zeitstempel


Tabelle:	mailrules
Verwendung:	Mail-Zustellungsregeln (vgl. RT#124007)
Index:	id, quelle
Index:	kunde typ, typ ziel(255), timestamp
Aufbau:
id	int4	!?+	ID
kunde	int4	!^!>kunde	assoziierter Kunde
quelle	char255	!-	E-Mail-Adresse oder Domain, für die diese Regel gilt (NULL = "*"-Umleitung)
typ	int2	!mailrules	Typ der Regel
ziel	text2	!-	Umleitungsziel (genaue Bedeutung je nach Typ unterschiedlich)
timestamp	datetime	!/+	Zeitstempel


Tabelle:	ipmap
Verwendung:	Zuordnung mehrerer IP-Adressen zu einem Zugang
Index:	ipkunde person
Index:	person, timestamp
Aufbau:
person	int4	!^!>person	assoziierter Kunde
ipkunde	int4	!>ipkunde	assoziierter Adressbereich
metrik	uint1	-	Routen-Metrik, s. RT#413407
timestamp	datetime	!/+	Zeitstempel


Tabelle:	tarif
Verwendung:	Speichert die für einen Tarif relevanten Kosten
Acct: ttarif{'tarifname'}{'dienst'}{"feldname","NEXT","SEEN"}
Index:	id, klasse dienst beginn mini unitmini
Index:	timestamp
Aufbau:
id	int4	!?+	ID des Tarifs
klasse	int4	!^!>tarifklasse	Name+Art des Tarifs
dienst	int2	!>dienst	welche Art Traffic berechnet wird
frei	int4	!$$	Freibetrag
festpreis	int4	!$$	pro Bestellung
preis	int4	!$$	pro XXX Bytes / Gebühreneinheiten, Zehntelcent
skala	uint8	!$$	das XXX im Preis-Feld
unitpreis	int4	!$$	pro Paket / Anruf
beginn	uint4	!/	ab wann der Kram so berechnet wird
mini	int4	-	wieviele Einheiten brauche ich für den Tarif
unitmini	int4	-	wieviele Pakete/Anrufe brauche ich für den Tarif
intval	char	!rechnung	Rechnungsstellung wie?
infotext	char255	!-	Kurzbeschreibung des Tarifs
festinfo	char255	!-	Kurzbeschreibung bei Festpreisen
varinfo	char255	!-	Kurzbeschreibung bei variablen Preisen
dnull	char	!jbool.n	drucke Preis auch wenn kostenlos?
fnull	char	!jbool.j	drucke Festpreis auch wenn kostenlos?
fkonto	int4	!-	Auf welches Konto buchen? (Festkosten)
vkonto	int4	!-	Auf welches Konto buchen? (variable Kosten)
freiinfo	char255	!-	für Menschen lesbare Version des Freikontingents
nonum	char	!jbool.n	Anzahl auf den Preis durchhauen lassen
#neu_preis	int4	!-!>preise	Grundpreis im neuen Tarifsystem
#neu_staffel	int4	!-!>staffelung	Staffelpreis im neuen Tarifsystem
timestamp	datetime	!/+	Zeitstempel
description	text2	!-	Erläuterungen insb. für die Technik
betriebszeit	char255	!-	Betriebszeit(en) gemäß zum Tarif gehörenden SLA als (erweiterte) Time::Period-Spezifikation
servicezeit	char255	!-	Servicezeit(en) gemäß zum Tarif gehörenden SLA als (erweiterte) Time::Period-Spezifikation
wartungsfenster	char255	!-	Wartungsfenster gemäß zum Tarif gehörenden SLA als (erweiterte) Time::Period-Spezifikation
# weiter unten: #STRING tarif name tarif tarifklasse id tarifname


Tabelle:	tarifklasse
Verwendung:	augmentierte Assoziation eines Tarifnames mit Kunden
Index:	id, tarifname kunde
Index:	timestamp
Aufbau:
id	int4	!?+	ID des Tarifs
timestamp	datetime	!/+	Zeitstempel
#name	int4	!>tarif.name
tarifname	int4	!^!>tarifname	Name des Tarifs
kunde	int4	!-!^!>kunde	Kunde, für den diese Tarifklasse gilt
klassen	int4	!*tarifklasse
obsolet	char	!jbool.n	"j" => nicht in der Liste anzeigen
laufzeit	uint2	!-!%null	initial, Monate
verlaengern	uint2	!-!%null	wenn ungekündigt, Monate
kuendigung	uint2	!-!%null	Frist vor Auto-Verlängerung, Tage


Tabelle:	tarifname
Verwendung:	Namen von Tarifen
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!^!?+	ID des Tarifs
timestamp	datetime	!/+	Zeitstempel
name	char255	-	Name des Tarifs


Tabelle:	tarifkunde
Verwendung:	Zuordnung eines / mehrerer Tarife zu einem Kunden
Index:	id
Index:	kunde dienst, kunde beginn, timestamp
Acct: atarif{$kunde}{$dienst}{"feldname","NEXT","SEEN"}
TODO: Tarif "unbekannt" => tarifname == NULL, das kann mig.strings nicht
Aufbau:
id	int4	!?+	ID des Eintrags
kunde	int4	!^!>kunde	ID des Kunden <- kunde.id
tarifname	int4	!>tarifname	Tarif.
dienst	int2	!>dienst/tarif	genutzter Dienst
anzahl	int2	-	Zahl der belegten Anschlüsse, Ports, etc.
beginn	uint4	!/	ab wann genutzt?
ende	uint4	!-!/	bis wann genutzt?
ablauf	uint4	!-!/	bis wann vereinbart?
notiz	uint4	!-!/	wann das System zuletzt Traffic bemerkt hat
infotext	char255	!-	Kurzbeschreibung wieso (Domainname etc.)
rechnung	char	!-	Einrichtungsgebühr berechnet? 0/1 TODO bool
nextrech	int4	!-!/	wann die nächste Rechnung zu stellen ist
timestamp	datetime	!/+	Zeitstempel


Tabelle:	nextrech
Verwendung:	Speichere "historische" Werte für Tarif-Berechnung
Index:	id, tarifkunde knextrech
Index:	knextrech, timestamp
Aufbau:
id	int4	!?+	ID
tarifkunde	int4	!>tarifkunde	ID des berechneten Tarifs
knextrech	int4	!^!-!>knextrech	Rechnung
beginn	uint4	!/	Anfang des berechneten Zeitraums
ende	uint4	!/	Ende des berechneten Zeitraums
anzahl	int3	-	momentan: informativ
timestamp	datetime	!/+	Zeitstempel


Tabelle:	knextrech
Verwendung:	Speichere "historische" Werte für Rechnungszeiträume
Index:	id, rnr kunde
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!>kunde	Kunde, für den berechnet wird
			(kann ein Unterkunde sein, also != rnr->kunde)
rnr	int4	!^!-!>rechnungen.rnr	Rechnung
			(kann NULL sein bei Altlasten --
			 manche Altrechnungen sind nicht mehr zuzuordnen)
mwst	int2	!-!%null	Mehrwertsteuer, als Promille
#
beginn	uint4	!/	Anfang des berechneten Zeitraums (Accounting)
ende	uint4	!/	Ende des berechneten Zeitraums (Accounting)
rbeginn	uint4	!/	Anfang des berechneten Zeitraums (R-Kopf)
rende	uint4	!/	Ende des berechneten Zeitraums (R-Kopf)


Tabelle:	tarifacct
Verwendung:	Welche Daten welcher Kunde wie accountet bekommt.
           	Gesucht wird mit '(kunde = $kunde or kunde IS NULL)
           	or (tarif = $tarif or tarif IS NULL) and ... order
           	by id'; der erste resultierende Eintrag (also mit
           	der kleinsten ID) wird verwendet.
Index:	real_id, id kunde
Index:	timestamp
Acct: $afeldname[0..$tline]
Aufbau:
real_id	int4	!?+	ID
kunde	int4	!-!^!>kunde	Kunde; NULL: alle
id	int4	!%unique(id)	sequentieller Zähler, 1..N, mit Lücken
tarifname	int4	!-!>tarifname	Tarif    NULL=alle
dienst	int2	!-!%null!>dienst/tarif	Accountingdaten mit diesem Dienst
			(Rekursion wird berücksichtigt)
ziel	int2	!-!(dienst!ziel)	Accountingdaten mit diesem Ziel
			(Bedeutung ist dienst-abhängig)
quelle	int2	!-!quelle	Daten mit dieser Quelle
faktor	int4	-	Multiplikator*100
beginn	uint4	!/	ab wann gilt der Faktor?
ende	uint4	!-!/	bis wann gilt der Faktor?
ddienst	int2	!-!>dienst/tarif	umgemappter Dienst
dkunde	int4	!-!>kunde	Umgemappter Kunde (nur bei direkt=>'p')
direkt	char	!direkt	wann wird das Mapping aktiv?
timestamp	datetime	!/+	Zeitstempel


Tabelle:	dienst
Verwendung:	Speichert die Daten zu einem Dienst (war: tarifeq-Tabelle)
Index:	id, name
Index:	timestamp
Aufbau:
id	int2	!^!?+	ID
timestamp	datetime	!/+	Zeitstempel
name	char15	.	Name dieses Diensts
info	char100	!-	Beschreibung, was da accountet wird
rechnungstext	char100	!-	Bezeichnung des Dienstes auf Rechnungen (falls NULL, wird der dienst.name verwendet)


Tabelle:	tarifeq
Verwendung:	Speichert eine Korrespondenz zwischen zwei Diensten
Index:	id, dienst
Index:	timestamp
Aufbau:
id	int4	!^!?+	ID
timestamp	datetime	!/+	Zeitstempel
dienst	int2	!^!>dienst	genutzter Dienst
berechne	int2	!-!>dienst	berechneter Dienst 
			# Einträge mit NULL in tarifeq.berechne fliegen demnächst raus
faktor	int4	-	Multiplikator*100
infotext	char255	!-	Kurzbeschreibung der Korrespondenz
isrec	char	!jbool.n	'j' => der Dienst wird auch als berechne-Dienst gewertet,
			z. B. beim Werten der letzten Nutzung in der Tarifliste.
			# Einträge mit "n" in tarifeq.isrec fliegen demnächst raus


Tabelle:	rechstep
Verwendung:	Verarbeitungsschritt innerhalb der Rechnung festlegen
Index:	id, kunde dienst
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
step	int2	.	Sequenz auf der Rechnung
kunde	int4	!-!>kunde	Spezialbehandlung für diesen Kunden?
dienst	int2	!^!>dienst	Dienst, für den dieser Datensatz gilt
flags	int4	!*acctflag	Flags (z. B.: Einzelpreis nicht drucken, Menge ohne Kommastellen, ...)
info	char100	!-	Text (für die Übersicht in kunde)


Tabelle:	recheinheit
Verwendung:	abhängige Einheiten
Index:	id
Index:	timestamp, rechstep typ start
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
rechstep	int4	!^!>rechstep	Schritt, für den diese Einheit gilt
typ	char	.	Art ('b':Bytes 'p':Pakete)
start	int8	.	Menge, ab der diese Einheit gedruckt wird, *1000
faktor	int8	.	Reduktion um diesen Faktor, *1000
name	char10	.	Text der Einheit (kurz)
info	char30	.	Text der Einheit (lang)


Tabelle:	updatelog
Verwendung:	Speichert Änderungen
Index:	id
Index:	timestamp, db_tabelle wert
Aufbau:
id	int4	!^!?+	ID
person	int4	!>person	ändernder Mensch, <- person.id
db_tabelle	int4	!^!>db_tabelle	Geänderte Tabelle
indexspalten	int4	!>updatelog_spalten	Liste der Datenfelder
wert	char100	-	Indexwerte, getrennt mit '|'. Sollte "indexinhalt" heißen.
datenspalten	int4	!>updatelog_spalten	Liste der Datenfelder
dwert	text2	!%ctrl!-	alte Datenwerte, getrennt mit '|'. Sollte "dateninhalt" heißen.
timestamp	datetime	!/+	Zeitstempel


Tabelle:	updatelog_spalten
Verwendung:	Spaltenreferenz für Änderungslog
Index:	id, namen
Index:	timestamp
Aufbau:
id	int4	!^updatelog!?+	ID
timestamp	datetime	!/+	Zeitstempel
namen	char255	-	Spaltennamen


Tabelle:	applikation
Verwendung:	Speicherung von Applikationsnamen (für statistische Zwecke, vgl. Tabelle funktionsaufrufe)
Index:	id, name
Index:	timestamp
Aufbau:
id	uint2	!?+	ID
timestamp	datetime	!/+	Zeitstempel
name	char255	-	Applikationsname, z. B. "/usr/pop/bin/kunde" oder "/usr/pop/bin/gen.adressplan"


Tabelle:	funktion
Verwendung:	Speicherung von Funktionsnamen (für statistische Zwecke, vgl. Tabelle funktionsaufrufe)
Index:	id, name
Index:	timestamp
Aufbau:
id	uint2	!?+	ID
timestamp	datetime	!/+	Zeitstempel
name	char255	-	Funktionsname, z. B. "edit_kunden"
flags	uint4	!*funktionsflags	Flags (z. B., ob die Funktionalität bereits in kundebunt integriert wurde)


Tabelle:	aufrufe
Verwendung:	Logging von Funktionsaufrufen (für statistische Zwecke)
Index:	id, applikation funktion person tag
Index:	timestamp, funktion tag
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
tag	uint4	-	Tag, an dem der Aufruf erfolgte (in Tagen seit dem fiktiven Jahr 0)
applikation	uint2	!>applikation	Applikation, aus der die Funktion aufgerufen wurde
funktion	uint2	!>funktion	aufgerufene Funktion
person	int4	!>person	Programmnutzer, für den die Funktion aufgerufen wurde
anzahl	uint4	-	Anzahl der Aufrufe


### Ab hier: RT-Kram

Tabelle:	queue_acl
Verwendung:	Berechtigungen für RT-Queues speichern
Index:	person queue
Index:	timestamp
Aufbau:
person	int4	!>person
queue	int4	!^!>queue
acls	int4	!*rt_acl
timestamp	datetime	!/+	Zeitstempel


Tabelle:	queue_areas
Verwendung:	Mapping Area=>Queue
Index:	id, queue name
Index:	timestamp
Aufbau:
id	int4	!?+	eindeutige ID
queue	int4	!^!>queue
name	char50	-
timestamp	datetime	!/+	Zeitstempel


Tabelle:	ticketlast
Verwendung:	Mappt, wer welches Ticket schon gesehen hat
Index:	ticket person
Index:	timestamp
Aufbau:
ticket	int4	!^!>ticket
person	int4	!>person
seq	int4	!%max(ticketid.seq)	letzte Nummer
timestamp	datetime	!/+	Zeitstempel


Tabelle:	queue
Verwendung:	Liste der RT-Queues globale Einstellungen pro Queue
Index:	id, name, email
Index:	timestamp
Aufbau:
id	int4	!^!?+	ID (war: Pointer auf Stringtabelle)
name	char30	-	Name der Queue
email	char255	-	Mailadresse der Queue
flags	int4	!*rt_queue
defprio	int1	-	Standard-Priorität
defdue	int2	-	Tage Wiedervorlage
deffdue	int2	-	Tage Endtermin
defbearb	int4	!-!>person	default-Verantwortlicher
timestamp	datetime	!/+	Zeitstempel


Tabelle:	rt_template
Verwendung:	Mustertexte (neu)
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!^Muster!?+	ID
name	char30	-	Kurzname
inhalt	text2	!%ctrl	Mustertext
timestamp	datetime	!/+	Zeitstempel


Tabelle:	rt_formular
Verwendung:	Mustertexte (neu)
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!^Muster!?+	ID
name	char30	-	Kurzname
inhalt	text2	!%ctrl	Mustertext
timestamp	datetime	!/+	Zeitstempel


Tabelle:	rech_fuss
Verwendung:	Mustertexte (neu)
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!^Muster!?+	ID
name	char30	-	Kurzname
inhalt	text2	!%ctrl	Mustertext
timestamp	datetime	!/+	Zeitstempel


Tabelle:	adress_vorlage
Verwendung:	Mustertexte (neu)
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!^Muster!?+	ID
name	char30	-	Kurzname
inhalt	text2	!%ctrl	Mustertext
timestamp	datetime	!/+	Zeitstempel


Tabelle:	rt_eskalation_muster
Verwendung:	Mustertexte (neu)
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!^Muster!?+	ID
name	char30	-	Kurzname
inhalt	text2	!%ctrl	Mustertext
timestamp	datetime	!/+	Zeitstempel


Tabelle:	stunden
Verwendung:	Arbeitszeiten für Mitarbeiter speichern
Index:	id
Index:	person beginn, kunde beginn, timestamp, ticket beginn, dauer
Aufbau:
id	int4	!^perso!?+
person	int4	!>person	Mitarbeiter
kunde	int4	!>kunde	Kunde, für den die Arbeit geleistet wurde
ticket	uint8	!-!%ticket	Ticket hierzu
beginn	uint4	!/	Startzeit
dauer	uint4	!//	wie lang gebraucht?
zeit	uint4	!-!//	wie lang gebraucht?
			(Cache: mit Faktor, ohne verschachtelte Einträge. NULL = muss neu berechnet werden)
art	int2	!>stunden_art	Art des Stundeneintrags (normal/Urlaub/Hotline/...)
infotext	text2	!%ctrl!-	was wurde getan?
timestamp	datetime	!/+	Zeitstempel


Tabelle:	stunden_art
Verwendung:	Mappt Arten von Stundeneinträgen auf lesbare Beschreibungen etc.
Index:	id, name
Index:	timestamp
Aufbau:
id	int2	!?+	ID
name	char30	-	textuelle Beschreibung (kurz)
infotext	char255	!-	kurze Erklärung (Tooltip)
faktor	int2	-	dem Mitarbeiter zugeordneter Anteil, in Prozent
timestamp	datetime	!/+	Zeitstempel
flags	int4	!*stunden_art	Flags


Tabelle:	nic
Verwendung:	Mapping Personen zu NIC-Handles
Index:	id, person nic, nic handle
Index:	username, timestamp, status
Aufbau:
id	int4	!?+	ID
person	int4	!^!%!>person	Mensch mit Handle
nic	int2	!nic	Center, bei dem der Handle registriert ist
handle	char128	!-	Bezeichner des Handles
username	char15	!-	damit verbundener Login
passwort	char15	!-	damit verbundenes Passwort
ticket	int4	!-!%ticket	auslösendes Ticket
			(Kundenauftrag, Domain-Automaten-Ticket)
status	int1	!handlestatus	Status des Vorgangs
timestamp	datetime	!/+	Zeitstempel


Tabelle:	resellernic
Verwendung:	Mapping Personen zu NIC-Handles eines Resellers
Index:	id, person reseller, handle reseller
Index:	timestamp
Aufbau:
id	int4	!?+	ID
person	int4	!^!%!>person	Mensch mit Handle
reseller	int4	!^!>kunde	Reseller, von dem der Handle kommt
handle	char120	-	Bezeichner des Handles
timestamp	datetime	!/+	Zeitstempel


Tabelle:	rt_defaults
Verwendung:	individuelle Default-Einstellungen fürs RT, vgl. RT#283876
Index:	person
Index:	timestamp
Aufbau:
person	int4	!^!>person	ID der Person, für die die Einstellungen gelten
query	text2	-	Query-String fürs RT
timestamp	datetime	!/+	Zeitstempel


Tabelle:	perso
Verwendung:	Personaldatenbank
Index:	person
Index:	timestamp, vorgesetzter, personr
Aufbau:
person	int4	!^!>person
beginn	uint4	!/	Gültigkeit
ende	uint4	!-!/	Gültigkeit
abschluss	uint4	!-!/	Datum, bis zu dem Stundeneinträge geändert werden dürfen
urlaub	int4	!//	restliche Urlaubszeit, dieses Jahr
resturlaub	int4	!//	restliche Urlaubszeit, Vorjahr
ueberstunde	int4	!//	angesammelte Überstunden
ueberstundenlimit	uint4	!-!//	drüber rausgehende Überstunden fliegen raus
letzter	int4	!-!(JJJJMM)	bis zu dem die Daten geupdatet wurden
personr	int2	-	Personalnummer
jahresurlaub	uint4	!//	Urlaubszeit pro Jahr, Tage
timestamp	datetime	!/+	Zeitstempel
vorgesetzter	int4	!-!>person	Adressat für Stundenabrechnungen etc.
tagstunden	int4	!-	Stunden*1000 eines Arbeitstags
anfangsmonat	uint3	!-!(JJJJMM)	Anfang eines Monats (i. d. R. Jahreswechsel), zu dem ein fester Stand an Überstunden festgelegt wurde
anfangsueber	int3	!-	festgelegter Bestand an Überzeit zum Anfangsmonat (vgl. oben) in Sekunden

Tabelle:	persomonat
Verwendung:	Speichern der Sollzeit pro Monat (und evtl. Person)
Index:	id, monat person
Index:	timestamp
Aufbau:
id	int4	!?+	ID
monat	int4	!(JJJJMM)	Zeit
person	int4	!^!-!>person (NULL bei globalen Solldatensätzen)
soll	uint4	!-!//	Soll-Arbeitszeit in diesem Monat
ist	uint4	!-!//	Ist-Arbeitszeit, berechnet bei Abrechnung
urlaub	uint4	!%null!-!//	Ist-Urlaubszeit, berechnet bei Abrechnung
auszahl	uint4	!%null!-!//	ausgezahlte Überstunden für diesen Monat
diff	int4	!//	Differenz Ist/Soll, abgerechnet
ueberstundenlimit	uint4	!-!//	drüber rausgehende Überstunden fliegen raus
hotline	uint4	!-!//	nicht berücksichtigte Zeit für Hotline-Einsätze
timestamp	datetime	!/+	Zeitstempel


#Tabelle:	einzel.quelle
#Verwendung:	lokales Einzelaccounting, extern sichtbar
#Index:	# datum quelle ziel kunde ## falls untertags eine Adresse umgesetzt wird... Overkill
#Index:	kunde datum, quelle datum ziel
#Aufbau:
#kunde	int4	!>kunde
#quelle	int4	!^IP-Adresse	(des Kunden, 0 für Summe)
#datum	int4	!^!(JJJJMMTT)
#ziel	int1	!^!ziel	woher die Daten kamen, nicht näher aufgeschlüsselt
#pakete	int8	-	Anzahl der Datenpakete
#bytes	int8	-	Anzahl der Bytes


Tabelle:	domreg
Verwendung:	Index der Registrare
Index:	id, domain
Index:	timestamp
Aufbau:
id	int4	!?+	eindeutige ID
domain	char255	-	Name der Superdomain
dienst	int2	!>dienst	Dienst zu berechnender Dienst
nic	int2	!^!-!nic!>nicdata.nic	zu verwendender NIC
techc	int4	!-!>person	Default-Tech-C für diese Domains
zonec	int4	!-!>person	Default-Zone-C für diese Domains
billc	int4	!-!>person	Default-Bill-C für diese Domains
timestamp	datetime	!/+	Zeitstempel
whoisserver	char255	!-	whois-Server für diese Domains (ggf. inkl. zusätzlicher Argumente und Platzhalter <domain> bzw. <domain-ace>)


Tabelle:	nicdata
Verwendung:	Basisdaten eines Registrars
Index: id, nic
Aufbau:
nic	int2	!nic	NIC
id	int4	!^!?+	eindeutige ID
timestamp	datetime	!/+	Zeitstempel
handle_re	char100	!-	Regulärer Ausdruck zum Prüfen von Handles auf Gültigkeit


Tabelle:	passwort
Verwendung:	Paßworttabelle für Kunden
Index:	kunde seq
Index:	timestamp
Aufbau:
kunde	int4	!^!>kunde
seq	int3	-	Zähler
pass	bin3	!%ctrl	verschlüsselter Inhalt, ohne Transfer-Encoding
timestamp	datetime	!/+	Zeitstempel


Tabelle:	db_tabelle
Verwendung:	speicher für Tabellendefs
Index:	id
Index:	timestamp
Aufbau:
id	int4	!?+
name	char30	-	Tabellenname
text	char100	-	Verwendungstext der Tabelle
timestamp	datetime	!/+	Zeitstempel


Tabelle:	db_feld
Verwendung:	speichern der Felddefs
Index:	id, db_tabelle name
Index:	timestamp
Aufbau:
id	int4	!?+
db_tabelle	int4	!^!>db_tabelle
name	char30	-	Feldname
typ	char8	-	Datentyp
beschreib	char100	-	Beschreibung des Inhalts, der Maschienenverwertbar ist
rem	char200	-	Bemerkungen zum Feld und Beschreibung
timestamp	datetime	!/+	Zeitstempel


Tabelle:	ipregion
Verwendung:	Speichert Namen für IP-Autoallokation und
           	Blockgröße+Bereich für neue Allokationen
Index:	id, zone
Index:	ipkunde, timestamp
Aufbau:
id	int4	!?+	eindeutige ID
zone	char50	-	Name der Region (eindeutig)
infotext	char255	!-	zusätzlicher Infotext
kunde	int4	!>kunde	dem die Region primär gehört
alloc	int1	-	Größe des nächsten zu allozierenden Blocks, wenn eine
			Allokation nicht möglich ist
ipkunde	int4	!^!-!>ipkunde	Bereich, aus dem der Block geholt werden soll
timestamp	datetime	!/+	Zeitstempel


Tabelle:	fnbatch
Verwendung:	Batch-Server für fibunet
Index:	id
Index:	timestamp, status
Aufbau:
id	int1	!^	kleinste
timestamp	datetime	!/+	Zeitstempel (=FibuNet-Übernahmedatum)
buchen	uint4	!-!/	Buchungsdatum
#buchen	char10	!-	Buchungsdatum (fibunet-Format)
mandant	int1	!fnmandant
status	int1	!fnstatus
art	char100	-	Kurzbeschreibung, Inhalt der Übernahmedatei
fehler	char200	-	Fehlerbeschreibung
daten	text3	!%ctrl	Buchungsdaten. Zeichensatz:latin1


Tabelle:	in_arbeit
Verwendung:	Aufzeichnung, wer gerade welchen Datensatz offen hat
Index:	id
Index:	timestamp, tabelle idx
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
person	int4	!^!>person	Bearbeiter
tabelle	char40	-	bearbeitete Tabelle
row	char40	-	bearbeitete Spalte
idx	char40	-	bearbeitete Zeile


Tabelle:	ausgabe
Verwendung:	Befehlszeilen
Index:	id, ausgabe
Index:	timestamp
Aufbau:
id	int4	!^!?+	ID
ausgabe	int2	!ausgabe	Deskriptor
befehl	char255	!-	Befehl; Argumente oder stdin
timestamp	datetime	!/+	Zeitstempel


Tabelle:	stundenliste
Verwendung:	Wann sollen wem Stundenlisten gemailt werden?
Index:	id
Index:	timestamp, person, zuletzt
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
person	int4	!^perso!>>person	wessen Stunden?
ziel	int4	!-!>person	an wen soll die Mail? (NULL=AL+perso)
zuletzt	uint4	!/	Wann wurde zuletzt verschickt?
zeitraum	int2	!-	Bereich über den die Liste gehen soll? (NULL=Monat)
delay	int2	-	Verzögerung zwischen Ende-des-Zeitraums und Absendezeitpunkt
art	int1	!std_liste	Art der Liste?
kunde	int4	!-!>kunde	welcher Kunde?
infotext	char255	!-	Infotext: wieso der Eintrag?


Tabelle:	reseller
Verwendung:	Reseller-Status eines Kunden
Index:	id, kunde, name
Index:	keyid, email
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!^!>kunde	wer ist der Reseller
art	int1	!reseller	auch Tarifsuffix (domain-?)
name	char20	-	im Header
flags	int4	!*rs_flag	was darf der Reseller? Sonderfunktionen?
keyid	char10	!-	PGP-Key-ID zwecks Suche / Verifikation
email	char100	!-	Mailadresse


Tabelle:	domainzustand
Verwendung:	Zustandsübergangstabelle Domains
Index:	id, von erkannt reseller
Aufbau:
id	int4	!^domainkram!?+	ID
timestamp	datetime	!/+	Zeitstempel
von	int2	!domainstatus	aktueller Zustand der Domain
erkannt	int2	!domainstatus	Typ der erkannten Mail
nach	int2	!-!domainstatus	Ziel-Zustand der Domain
aktionen	int4	!*domainaktion	was zu tun ist
ticketstatus	int2	!-!tickets	RT-Status des betreffenden Tickets
statusinfo	char255	!-	Statustext für das Ticket
acctinfo	int2	!-!acctinfo	Text für die Rechnung
reseller	fchar1	!zsreseller.b	j/n/b (b=beide)


Tabelle:	handlezustand
Verwendung:	Zustandsübergangstabelle Handles
Index:	id, von erkannt reseller
Aufbau:
id	int4	!^domainkram!?+	ID
timestamp	datetime	!/+	Zeitstempel
von	int2	!handlestatus	aktueller Zustand des Handles
erkannt	int2	!handlestatus	Typ der erkannten Mail
nach	int2	!-!handlestatus	Ziel-Zustand der Domain
aktionen	int4	!*handleaktion	was zu tun ist
ticketstatus	int2	!-!tickets	RT-Status des betreffenden Tickets
statusinfo	char255	!-	Statustext für das Ticket
acctinfo	int2	!-!acctinfo	Text für die Rechnung
reseller	fchar1	!zsreseller.b	j/n/b (b=beide)


Tabelle:	registrar
Verwendung:	Speicherung von Fakten über einen Registrar (z. B. DE-NIC)
Index:	id
Index:	nic, keyid, email, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
nic	int2	!^!nic!>nicdata.nic	Registrar
flags	int4	!*reg_flag	Zusatzinfo (signieren? nur PGP annehmen?)
keyid	char10	!-	PGP-Key-ID
email	char100	!-	Mail-Adresse
#art	int2	!-!hm_mail	für was gilt der Eintrag?


Tabelle:	acctassoc
Verwendung:	Assoziation eines Accountingeintrags mit Infotext und/oder genau einem Tarif
Index:	id, >>acct hash seq
Index:	tarifkunde, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
hash	int4	!^acct!%	Accountingdatensatz
seq	int2	!%
tarifkunde	int4	!^!-!>tarifkunde	bezogener Kundentarif
acctinfo	int2	!-!acctinfo	Text für die Rechnung
info	text2	!%ctrl!-	Zusatztext


Tabelle:	startlog
Verwendung:	Mitschreiben, wer wann welches Programm gestartet hat
Index:	id
Index:	timestamp, programmname timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
person	int4	!-!>person	User
programmname	int4	!>startlog_kram	Programmname
hostname	int4	!>startlog_kram	Name des Hosts, auf dem das Programm gestartet wurde
verzeichnis	int4	!>startlog_kram	aktuelles Verzeichnis
argumente	int4	!-!>startlog_kram	Argumente


Tabelle:	startlog_kram
Verwendung:	strings-Tabellen-Ersatz für startlog
Index:	id, daten(255)
Index:	timestamp
# zur Frage, warum beim Index maximal 767 Bytes möglich sind, s. vgl. RT#267690
Aufbau:
id	int4	!^startlog!?+	ID
timestamp	datetime	!/+	Zeitstempel
daten	char767	-	Geraffeltext


Tabelle:	wartungsvertrag
Verwendung:	Wartungsvertragstypen, die wir mit Zulieferern haben (ITIL-Jargon: "UPC")
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
name	char255	-	Name
sla	char255	-	z. B. "24/7" etc.
ansprechpartner	int4	!>person	Ansprechpartner für diesen Wartungsvertrag
beschreibung	text2	!%ctrl	weitere Details


Tabelle:	hardware
Verwendung:	Hardware (Server, Router etc.)
Index:	id, hardware_id ende, name seriennr ende, ip ende
Index:	eigentuemer gemailt, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
name	char127	-	Name
hardware_id	char15	!-	eindeutige, durch noris vergebene ID; NULL für Stromleisten etc., vgl. RT#201214
seriennr	char127	!-	SerienNummer
ivnr	char15	!-	InventarNummer (wenn das Ding uns gehört)
typ	int2	!-!hardware_typ	Typ der Hardware, z. B. "Switch", "Server" etc., vgl. RT#207798
klasse	int2	!-!hardware_klasse	Hardwareklasse, z. B. "intern", "office" etc., vgl. RT#207798
ip	int4	!-!>ipkunde	Management-IP-Adresse
enthalten_in	int4	!-!>hardware	Referenz auf andere Hardware, in der diese Hardware eingebaut ist, vgl. RT#207798-17
standort	int4	!-!>person	Standort
eigentuemer	int4	!-!>person	Eigentümer
verantwortlich	int4	!-!>person	Verantwortlicher für diese Hardware, vgl. RT#314011
kunde	int4	!^!>kunde	zugeordneter Kunde
ktarif	int4	!-!>tarifkunde	Tarif des Kunden, der zu dieser Hardware gehört (vgl. Ticket 10096055)
lieferant	int2	!-!lieferant	Lieferant, bei dem wir diese Hardware gekauft haben
status	int2	!-!hardware_status	Status der Hardware, vgl. RT#215033
info	char255	!-	optionaler Info-Text
beginn	uint4	!/	Gültigkeit
ende	uint4	!-!/	Gültigkeit
rack	int2	!^^!-!>rack	Rack, in dem diese Hardware eingebaut ist
unterste_he	uint1	!-	unterste HE des Racks, in dem diese Hardware eingebaut ist
he	uint1	!-	Höhe des Geräts in HE
console	char255	!-	(symbolischer) Port und Server für Console, vgl. RT#206285
gemailt	int4	!-	Timestamp, der beim Vermailen des Datensatz gesetzt wird, vgl. RT#219877
flags	int4	!*hardwareflags	Flags


Tabelle:	wartungsvertrag_hardware
Verwendung:	Zuordnung von Wartungsverträgen zu Hardware
Index:	id
Index:	hardware beginn, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
hardware	int4	!^!>hardware	zugeordnete Hardware
wartungsvertrag	int4	!^^!>wartungsvertrag	zugeordneter Wartungsvertrag
beginn	uint4	!/	Beginn der Laufzeit des Wartungsvertrags
ende	uint4	!/!-	Ende der Laufzeit des Wartungsvertrags


Tabelle:	hardware_ip
Verwendung:	Zuordnung zusätzlicher IP-Adressen zu einem Hardware-Objekt
Index:	id, hardware ip
Index:	ip, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
hardware	int4	!^!>hardware	Hardware, zu der das IP-Adressobjekt gehört
ip	int4	!>ipkunde	IP-Adressobjekt, das zur Hardware gehört


Tabelle:	rt_billing
Verwendung:	Verlinkung von RT-Tickets mit zugehörigen Accounting-Datensätzen, vgl. RT::AddOn::Billing
Index:	id, >acct hash seq
Index:	ticket, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
ticket	int4	!^!%ticket	Verweis auf Ticket (OTRS oder RT)
hash	int4	!^acct	Verweis auf Accounting-Datensatz, Teil 1/2
seq	int2	-	Verweis auf Accounting-Datensatz, Teil 2/2
gemailt	uint4	!/!-	Timestamp des Accounting-Datensatzes, der an den vertrieblichen Ansprechpartner gemailt wurde


Tabelle:	rt_incidents
Verwendung:	zusätzliche Felder zu RT-Tickets, bei denen es um Störungen geht, vgl. RT::AddOn::Incidents
Index:	id, ticket
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
ticket	int4	!^!>ticket	RT-Ticket
art	char255	!-	Art der Störung
ursache	text2	!%ctrl!-	Ursache der Störung
t_meldung	uint4	!-!/	Zeitpunkt der Störungsmeldung
t_reaktion	uint4	!-!/	Zeitpunkt der 1. Reaktion
t_entstoerung	uint4	!-!/	Zeitpunkt der Entstörung
flags	int4	!*rt_incidents_flags	Flags


Tabelle:	rt_antwort
Verwendung:	n:m-Zuordnung von Antworten auf Fragen zu RT-Tickets, vgl. RT#288117
Index:	id, ticket frage
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
ticket	int4	!^!>ticket	RT-Ticket
frage	int4	!rt_fragen	Frage
antwort	fchar1	-	Antwort, z. B. "j"/"n"


Tabelle:	rt_incidents_confitem
Verwendung:	n:m-Zuordnung von Conf. Items zu Störungs-RT-Tickets, vgl. RT::AddOn::Confitems
Index:	id, confitem incident
Index:	incident, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
confitem	int4	!^!>confitem	Conf. Item
incident	int4	!^!>ticket	Ticket


Tabelle:	rt_incidents_leitung
Verwendung:	n:m-Zuordnung von Leitungen zu Störungs-RT-Tickets, vgl. RT::AddOn::Confitems
Index:	id, leitung incident
Index:	incident, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
leitung	int4	!^!>leitung	Leitung
incident	int4	!^!>ticket	Ticket


Tabelle:	rz
Verwendung:	RZs und andere für die Housing-Datenbank relevante Standorte
Index:	id, name
Index:	timestamp
Aufbau:
id	int2	!?+	ID
timestamp	datetime	!/+	Zeitstempel
name	char255	-	Name des RZs
standort	int4	!>person	Standort dieses RZs, vgl. RT#207798-30


Tabelle:	rack
Verwendung:	Racks für Housing-Datenbank
Index:	id, rz name
Index:	timestamp
Aufbau:
id	int2	!?+	ID
timestamp	datetime	!/+	Zeitstempel
rz	int2	!^^!>rz	RZ, in dem das Rack steht
name	char255	-	Bezeichnung des Racks innerhalb des RZs
info	char255	!-	optionale zusätzliche Kurzbeschreibung
he	uint1	-	Anzahl der HöhenEinheiten des Racks
kunde	int4	!>kunde	Kunde, dem das Rack vermietet wurde
x	int1	-	X-Koordinate des Racks
y	int1	-	Y-Koordinate des Racks


Tabelle:	radacct
Verwendung:	Einzel-Radius-Accounting für EVNe etc., vgl. RT#206334
Index:	id
Index:	kunde datum, timestamp
Aufbau:
id	int4	!?+	eindeutige ID
timestamp	datetime	!/+	Zeitstempel
dienst	int2	!>dienst	Dienst, auf den accountet wurde
ziel	int2	!(dienst!ziel)	Ziel (für Debugging-Zwecke)
kunde	int4	!^!>kunde	Kunde, auf den accountet wurde
person	int4	!^!>person	(Verweis auf den) Einwahl-User
gegenstelle	char255	!-	anrufende Rufnummer ("Calling-Station-Id")
zielrufnr	char255	!-	angerufene Rufnummer ("Called-Station-Id")
datum	uint4	!/	Timestamp aus den Accounting-Logs
dauer	uint4	-	Verbindungsdauer in Sekunden ("Acct-Session-Time")
pakete_in	uint4	-	Anzahl eingehender Pakete
pakete_out	uint4	-	Anzahl abgehender Pakete
bytes_in	uint8	-	Anzahl eingehender Bytes
bytes_out	uint8	-	Anzahl abgehender Bytes


Tabelle:	ipassacct
Verwendung:	Einzel-iPass-Accounting für EVNe etc, vgl. RT#219895
Index:	id
Index:	kunde datum, timestamp
Aufbau:
id	int4	!?+	eindeutige ID
timestamp	datetime	!/+	Zeitstempel
kunde	int4	!^!>kunde	Kunde, auf den accountet wurde
person	int4	!^!>person	(Verweis auf den) iPass-User
transaction_id	char255	-	Transaction-ID laut iPass (keine Ahnung, wofür die gut ist)
billing_code	uint4	-	Billing Code laut iPass (gibt den Minutenpreis an, vgl. pricelist.html)
authentication_domain	char255	-	Authentication Domain, normalerweise immer "noris.net"
description	char255	-	Kurzbeschreibung des einschlägigen Tarifs
datum	int4	$/	Zeitpunkt der Einwahl
session_length	uint4	-	Länge der Einwahl-Session in Sekunden
billing_rate	uint2	-	Stundenpreis in Euro-Cent
net_billing_amount	uint4	-	Gesamtpreis der Verbindung in Euro-Cent
access_type	int2	!ipass_access_type	DIAL, WIFI oder ENET
service_type	int2	!ipass_service_type	üblicherweise "usage", ansonsten vgl. RT#219895-1


Tabelle:	ticketabo
Verwendung:	Wer hat welches RT-Ticket abonniert, vgl. RT#120901?
Index:	id, ticket person
Index:	person, timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
ticket	int4	!^!>ticket	Um welches Ticket geht es?
person	int4	!^!>person	Wer hat das abonniert?


Tabelle:	trouble_ticket
Index:	id
Index:	timestamp, rtticket id
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
rtticket	int4	!^!-	zugehöriges Ticket (RT oder OTRS)
subject	text2	-	Titel des Trouble Tickets
type	int2	!tt_type	Typ des Trouble Tickets
beginn	uint4	!/	Beginn der Störung
ende	uint4	!/!-	(ggf. voraussichtliches) Ende der Störung
priority	int2	!tt_priority	Störungsklasse
flag_kunde	int4	!-!%null!*kunde	Auswahl der TT-Empfänger nach Kunden-Flags (ODER-verknüpft)
flag_person	int8	!-!%null!*pwdomain	Auswahl der TT-Empfänger nach Personen-Flags (ODER-verknüpft)
text_description	text2	!%ctrl	Abschnitt "Problembeschreibung"
text_affected	text2	!%ctrl!-	Abschnitt "Betroffen"
text_comment	text2	!%ctrl!-	Abschnitt "Bemerkungen"
text_progress	text2	!%ctrl!-	Abschnitt "Update"
text_resolve	text2	!%ctrl!-	Abschnitt "Lösung"
additional_rcpt	text2	-	zusätzliche E-Mail-Empfänger, whitespace-getrennt
confirmer	int4	!-!>person	Person, die diese Version des Tickets bestätigt hat


Tabelle:	trouble_ticket_kunde_assoc
Verwendung:	Welcher Kunde hat welches Trouble Ticket bekommen?
Index:	id, trouble_ticket kunde, kunde trouble_ticket
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
trouble_ticket	int4	!^!>trouble_ticket	Datenbank-ID des Trouble Tickets
kunde	int4	!>kunde	Kunde, der das Trouble Ticket bekommt


Tabelle:	rt_eskalation
Verwendung:	merke, für welches Ticket es welche Eskalation schon gab (vgl. RT#294123)
Index:	id, rtticket template
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
rtticket	int4	!^	Ticket, um das es geht
template	int4	!>rt_eskalation_muster	verwendetes Template


Tabelle:	exim_cache_1
Verwendung:	Zwischenspeichern von Accounting-Zuständen beim Mailaccounting
Index:	id, exim_id
Index:	timestamp
Aufbau:
id	int4	!^exim!?+	ID
timestamp	datetime	!/+	Zeitstempel
exim_id	char40	!%ascii	die ID aus dem exim-Log
data	bin2	!%ctrl	perl-Blob des Hash-Inhalts



Tabelle:	exim_cache_2
Verwendung:	Zwischenspeichern von Accounting-Zuständen beim Mailaccounting
Index:	id, exim_id
Index:	timestamp
Aufbau:
id	int4	!^exim!?+	ID
timestamp	datetime	!/+	Zeitstempel
exim_id	char40	!%ascii	die ID aus dem exim-Log
data	bin2	!%ctrl	perl-Blob des Hash-Inhalts


Tabelle:	rechlauf
Verwendung:	Speichern von Kenndaten eines Rechnungslaufs
Index:	id, anfang
Index:	timestamp
Aufbau:
id	int4	!?+	ID
timestamp	datetime	!/+	Zeitstempel
anfang	int4	!^!>rechnungen.rnr	erste Rechnungsnummer
ende	int4	!>rechnungen.rnr	letzte Rechnungsnummer
template	int4	!-!>rech_fuss.id	Template des Fußtexts


Tabelle:	konfig_namensraum
Verwendung:	Namensräume für Konfigurationsvariablen
Index:	id, name
Index:	timestamp
Aufbau:
id	uint2	!?+	ID
timestamp	datetime	!/+	Zeitstempel
name	char32	-	Namensraum, z. B. "", "kundebunt", "kunde"


Tabelle:	konfig_variable
Verwendung:	Konfigurationsvariablen
Index:	id, name
Index:	timestamp
Aufbau:
id	uint2	!?+	ID
timestamp	datetime	!/+	Zeitstempel
name	char32	-	Variablenname


Tabelle:	konfig_wert
Verwendung:	Konfigurationswerte (Ersatz für /etc/pop.conf)
Index:	id, namensraum variable
Index:	timestamp
Aufbau:
id	uint2	!?+	ID
timestamp	datetime	!/+	Zeitstempel
namensraum	uint2	!>konfig_namensraum	Namensraum
variable	uint2	!>konfig_variable	Variable
wert	char255	-	Variableninhalt

Tabelle:	open_xchange
Verwendung:	Einstellungen der Kunden bezüglich Open XChange
Index:	id, kunde beginn, kunde log
Aufbau:
id	uint4	!?+	ID
kunde	int4	!^__!>kunde	Kunde, für den die Einstellung gilt
beginn	uint4   	!/              	Zeitpunkt, ab dem die Einstellung wirksam wird
timestamp	datetime	!/+	Zeitstempel, wann die Eingabe getätigt wurde
option	int2	!open_xchange	Gewählte Einstellung
log	uint4	!>open_xchange_log	Verweis auf die Daten des zugehörigen GET-Requests
request	text2	!%ctrl	Kompletter http-Request des POST-Requests zum Nachweis

Tabelle:	open_xchange_log
Verwendung:	Speichern der GET-Aufrufe der Open-XChange-Einstellseite zum Nachweis
Index: 	id, person timestamp
Index: 	timestamp
Aufbau:
id	uint4	!?+	ID
person	int4	!>person	Person, die die Einstellung aufgerufen hat
timestamp	datetime	!/+	Zeitstempel, wann der Aufruf erfolgte
anzeige	text2	!%ctrl	Angezeigter html-Text zum Nachweis

# Zusatz zu kunde/POP-Datenbank
# Zusätzliche Tabellen für Django

Tabelle:	auth_user
Verwendung:	Django benutzt dies während der Authentifikation;
           	letztlich wird das nur beim Testen über das
           	Admin-Modul benutzt. Einträge werden beim Einloggen
           	des Benutzers on-the-fly erzeugt. Ausschlaggebend
           	sind aber immer Passwörter und Service-Flag des
           	Eintrags in `person`
Index:	id, username
Aufbau:
id	int4	!^django!?+	eindeutige Nummer
username	char255	-	eindeutiger Benutzername (entspricht person.user)
first_name	char30	-	Wird nicht benutzt
last_name	char30	-	Wird nicht benutzt
email	char75	-	Wird nicht benutzt
password	char128	-	Wird nicht benutzt
is_staff	int1	-	Zugriff aufs Admin-Interface; hat keine Bedeutung im normalen Betrieb
is_active	int1	-	Darf sich einloggen; wird beim Login mit 1 belegt
is_superuser	int1	-	Zugriff als Superuser aufs Admin-Interface; hat keine Bedeutung im normalen Betrieb
last_login	datetime	-	Letzter Login
date_joined	datetime	- 	Erster Login
timestamp	datetime	!/+	Zeitstempel

Tabelle:	auth_permission
Verwendung:	Eigentlich keine, aber Django's Authentifizierungs-
           	modul setzt diese Tabelle voraus.
Index:	id, content_type codename
Aufbau:
id	int4	!^auth_user!?+	eindeutige Nummer
name	char50	-	Benutzerlesbarer Name
content_type	int4	!>django_content_type.id  zugehörige Tabelle
codename	char100	-	Symbolischer Name der Berechtigungsart
timestamp	datetime	!/+	Zeitstempel

Tabelle: 	auth_group
Verwendung:	Eigentlich keine, aber Django's Authentifizierungs-
           	modul setzt diese Tabelle voraus.
Index:	id, name
Aufbau:
id	int4	!^auth_user!?+	eindeutige Nummer
name	char80	-	Gruppenname
timestamp	datetime	!/+	Zeitstempel

Tabelle:	auth_message
Verwendung:	Nachrichten für den Benutzer
Index:	id
Aufbau:
id	int4	!?+	eindeutige Nummer
user_id	int4	!^!>auth_user.id	für wen die Nachricht bestimmt ist.
message	text2	-	die Nachricht
timestamp	datetime	!/+	Zeitstempel

Tabelle:	auth_group_permissions
Verwendung:	Assoziation auth_permission <-> auth_group
Index:	id, group_id permission_id
Aufbau:
id	int4	!?+	eindeutige Nummer
group_id	int4	!^!>auth_group
permission_id	int4	!^^!>auth_permission
timestamp	datetime	!/+	Zeitstempel

Tabelle:	auth_user_groups
Verwendung:	Assoziation auth_user <-> auth_group
Index:	id, user_id group_id
Aufbau:
id	int4	!?+	eindeutige Nummer
user_id	int4	!^!>auth_user
group_id	int4	!^^!>auth_group
timestamp	datetime	!/+	Zeitstempel

Tabelle:	auth_user_user_permissions
Verwendung:	Assoziation auth_user <-> auth_permission
Index:	id, user_id permission_id
Aufbau:
id	int4	!?+	eindeutige Nummer
user_id	int4	!^!>auth_user
permission_id	int4	!^^!>auth_permission
timestamp	datetime	!/+	Zeitstempel

Tabelle:	django_admin_log
Verwendung:	Django loggt hier Veränderungen über das
           	Django-Admin-Frontend (im Produktivbetrieb aus)
Index:	id
Aufbau:
id	int4	!?+	eindeutige Nummer
action_time	datetime -	Zeitpunkt
user	int4	!^!>auth_user.id	Wer es getan hat
content_type_id int4	!^^!-!>django_content_type.id  Auf welche Tabellen
object_id	text2	!-	id des Eintrags
object_repr	char200 -	repr() des Objekts
action_flag	int2	-	Art der Aktion
change_message	text2	Textuelle Beschreibung
timestamp	datetime	!/+	Zeitstempel

Tabelle:	django_content_type
Verwendung:	Von Django benutzte Liste der Tabellen für Logging
           	und Berechtigungen. Wird nicht wirklich benutzt.
Index:	id, app_label model
Aufbau:
id	int4	!?+	eindeutige Nummer
name	char100	-	Name für Benutzers
app_label	char100	-	Modulname der Applikation
model	char100	-	Modell bzw. Tabellenname
timestamp	datetime	!/+	Zeitstempel

Tabelle:	django_session
Verwendung:	Sessionverwaltung
Index:	session_key
Aufbau:
session_key	char40	!^django	Session-Key (pseudozufällige Zeichenfolge)
session_data	text3	!%ctrl	Gepickeltes Session-Objekts
expire_date	datetime	-	Wann die Session abläuft
timestamp	datetime	!/+	Zeitstempel

Tabelle:	django_site
Verwendung:	Django baut hier eine Liste der 'Sites' auf, für den
           	Fall dass eine Applikation unter mehreren URLs
           	läuft. Hat bei kundebunt nur einen Eintrag, und der
           	wird nicht wirklich benutzt, der Inhalt ist egal.
Index:	id
Aufbau:
id	int4	!^django!?+	eindeutige Nummer
domain	char100	-	Unter welcher Domain die Site läuft
name	char50 	-	Name für die Anzeige
timestamp	datetime	!/+	Zeitstempel

Tabelle:	releasenotes_note
Verwendung:	Versionshinweis zur Anzeige in kundebunt vor dem Einloggen.
Index:	id
Index:	release_beginn_id, release_behoben_id
Aufbau:
id	int4	!^kundebunt!?+	ID
modified	datetime	-	Zeitpunkt der letzten Modifikation
created	datetime	-	Zeitpunkt des Anlegens
ticket	uint4	!%ticket	Zugehöriges Ticket
kind	uint2	-	Art des Releases
release_beginn_id	int4	!>releasenotes_release!-	Ab welcher Release der Fehler besteht
release_behoben_id	int4	!>releasenotes_release!-	Ab welcher der Fehler behoben ist
last_modified_by	int4	!-	Wer den Eintrag zuletzt editiert hat (person)
timestamp	datetime	!/+	Zeitstempel

Tabelle:	releasenotes_notetext
Verwendung:	Text zu einem Versionshinweis in einer bestimmten Sprache.
Index:	id
Index:	note_id
Aufbau:
id	int4	!?+	ID
modified	datetime	-	Zeitpunkt der letzten Änderung
language	char7	-	Sprache
text	text2	!%ctrl	Zugehöriger Text
note_id	int4	!^!>releasenotes_note Zugehöriger Hinweis
timestamp	datetime	!/+	Zeitstempel

Tabelle:	releasenotes_release
Verwendung:	Eine Release, zur Anzeige der Versionshinweise in kundebunt.
Index:	id, sort_value
Aufbau:
id	int4	!^releasenotes_note!?+	ID
modified	datetime	-	Zeitpunkt der letzten Änderung
v1	uint2	-	v1.v2.v3.v4 ist die Versionsnummer
v2	uint2	-	v1.v2.v3.v4 ist die Versionsnummer
v3	uint2	-	v1.v2.v3.v4 ist die Versionsnummer
v4	uint2	!-	v1.v2.v3.v4 ist die Versionsnummer
sort_value	uint4	-	Sortierwert
timestamp	datetime	!/+	Zeitstempel

Tabelle:	otrs_import
Verwendung:	Zeitpunkt und letzter Artikel beim otrs-import
Index:	id, otrs_id
Index:	timestamp, rt_id
Aufbau:
id	int4	!?+	eindeutige Nummer
rt_id	int4	!>ticket	id in rt, also die sichtbare Ticket-Nummer
rt_maxseq	int4	-	ticket.maxseq zum Zeitpunkt des Imports; ist 0, wenn es keine Artikel gab.
otrs_id	int4	-	(interne) id in otrs
timestamp	datetime	!/+	Zeitstempel

Tabelle:	mess_typ
Verwendung:	Beschreibung einer Datenart für Messungen
Index:	id, name
Index:	collectd_typ, timestamp
Aufbau:
id	int4	!?+	ID
name	char255	-	eindeutige Bezeichnung
dienst	int2	!>dienst	Der dienst, der beim Accounting eingetragen wird
wertart	char255	Beschreibung	die Mess-Größe, nur eine Art Kommentar
einheit	int2	!einheit
collectd_typ	char255	-	Type-Attribut in collectd, bestimmt den Pfad und URL der RRDs
collectd_intervall	uint4	-	Abfrageintervall in Sekunden für collectd
rrd_typ	int2	!rrd_typ	RRD-Data-Source-Type, z.B. "GAUGE"
rrd_min	double	!-	Unteres Limit fuer RRD
rrd_max	double	!-	Oberes Limit fuer RRD
rrd_faktor	double	-	Umrechnungsfaktor von RRD -> Accounting oder Graphanzeige
snmp_faktor	double	-	Umrechnungsfaktor von SNMP -> RRD
oid_praefix	char255	!-!%ascii	Falls die Werte ueber SNMP abgefragt werden, der gemeinsame OID-Anfang
info	char255	!-	Kommentarfeld
status	int2	!mess_typ_status	Ist dieser Typ verwendbar?
timestamp	datetime	!/+	Zeitstempel

Tabelle:	mess_stelle
Verwendung:	Eine Stelle z. B. in der RZ-Stromnetzverkabelung, an der gemessen werden kann
Index:	id, snmp_host oid_suffix beginn, name snmp_host typ beginn
Index:	typ, oid_suffix, beginn, timestamp
Aufbau:
id	int4	!?+	eindeutige Nummer
name	char255	-	Bezeichnung
typ	int4	!>mess_typ	Typ der Mess-Stelle
snmp_host	int4	!-!>ipkunde	Über diese IP kann der Wert per SNMP abgefragt werden
oid_suffix	char255	!-!%ascii	Der hintere Teil der OID zur SNMP-Abfrage
modbus_slave	uint1	!-	Modbus Slave Adresse
modbus_type	int4	!-!>mess_modbus_register	Verweis auf das Modbus Register
beginn	uint4	!/	Zeitpunkt der Zuteilung der Adresse
ende	uint4	!-!/	Freigabezeitpunkt der Adresse
info	char255	-	Kommentarfeld
timestamp	datetime	!/+	Zeitstempel

Tabelle:	mess_verbraucher
Verwendung:	Gibt an, welches Gerät die gemessene Größe verbraucht, und welchem Kunde das angerechnet wird
Index:	id, rack mess_stelle beginn, hardware mess_stelle beginn
Index:	kunde, beginn, mess_stelle, timestamp
Aufbau:
id	int4	!?+	eindeutige Nummer
mess_stelle	int4	!>mess_stelle
rack	int2	!-!>rack	entweder hardware oder rack ist NULL
hardware	int4	!-!>hardware	entweder hardware oder rack ist NULL
beginn	uint4	!/	Zeitpunkt der Zuteilung der Adresse
ende	uint4	!-!/	Freigabezeitpunkt der Adresse
kunde	int4	!>kunde	Kunde, der das Ganze zu verantworten hat
acct	char	!bool.n	fuers Accounting relevant?
timestamp	datetime	!/+	Zeitstempel

Tabelle:	mess_geraet_typ
Verwendung:	Parameter fuer einen Typ von Mess-Geräten
Index:	id, name
Index:	timestamp
Aufbau:
id	int4	!?+	eindeutige Nummer
name	char255	-	eindeutige Bezeichnung
ueberlauf_wert	double	!-	Der Wert, den die Anzeige gerade nicht mehr erreicht, sondern auf 0 springt
timestamp	datetime	!/+	Zeitstempel

Tabelle:	mess_geraet
Verwendung:	Stellt ein einzelnes manuell ablesbares Mess-Gerät dar
Index:	id, mess_stelle beginn
Index:	beginn, timestamp
Aufbau:
id	int4	!?+	eindeutige Nummer
typ	int4	!>mess_geraet_typ
mess_stelle	int4	!>mess_stelle
offset	int4	!-	Differenz zwischen Zähleranzeige und Impulsen
beginn	uint4	!/	Zeitpunkt der Zuteilung der Adresse
ende	uint4	!-!/	Freigabezeitpunkt der Adresse
info	char255	!-	Kommentarfeld
timestamp	datetime	!/+	Zeitstempel

Tabelle:	mess_ablesung
Verwendung:	Ein einzelner manueller Ablesewert
Index:	id, mess_verbraucher ablesezeitpunkt
Index:	ablesezeitpunkt, timestamp
Aufbau:
id	int4	!?+	eindeutige Nummer
person	int4	!>person	die ablesende Person
mess_verbraucher	int4	!>mess_verbraucher	die abgelesene Messstelle
hash	int4	!-!^acct!%	Accountingdatensatz
seq	int2	!-!%
ablesezeitpunkt	uint4	!/	Zeitpunkt der Ablesung
wert	double	-	abgelesener Wert
timestamp	datetime	!/+	Zeitstempel

Tabelle:	mess_modbus_register
Verwendung:	Konfig für die Modbus fähigen Geräte
Index:	id, hersteller modell register instance harmonie phase timetype
Index:	timestamp
Aufbau:
id	int4	!?+	eindeutige Nummer
hersteller	char30	-	Name des Herstellers
modell	char30	-	Model des Modbus Gerätes
register	int4	-	Das Register selbst
instance	int4	!-!messtyp_instance	eigenschaft des Messtyps
harmonie	int4	!-!messtyp_harmonie	Oberschwingung der Phase
phase	int4	!-!messtyp_phase	Phase im Drehstromnetz
timetype	int4	!-!messtyp_timetype	Konsolidierungsfunktion
datatype	int4	!-!messtyp_datatype	Datentyp des jeweiligen Registers
timestamp	datetime	!/+	Zeitstempel

*** ENDE ***

# vim: ts=24
