Table of Contents
Part Database
Die PartDatabase (im folgenden PartDB) soll eine einfache Möglichkeit zur Verwaltung von Bauteilen (elektrisch, mechanisch, optisch, etc.) sein.
Als Grundfunktion stellt sie ein Inventar von Teilen zur Verfügung. Erweiterte Funktionen wie Baugruppenverwaltung und Bestellungserzeugung folgen.
Struktur
Die Struktur der Datenbank lässt sich wie folgt zusammenfassen: Gruppen von Dingen mit Eigenschaften.
Eigenschaften mit ihren Einheiten und Werten werden über die attributes__-Tabellen definiert.
Die Bezugsquelle hat eine Sonderrolle und wird nicht in Attributen sondern in einer eigenen Tabelle (distributors) abgelegt.
Die äussere Form der Teile erhält ebenfalls eine Sonderrolle und wird über die shape__-Tabellen detailliert.
Die Zuordnung von Attributen, Distributoren und der Form erfolgt über Relationstabellen mit Fremdschlüsseln.
Benennungskonventionen
Die folgenden Konventionen zur Bennenung von Tabellen und Schlüsseln dienen der Übersichtlichkeit. Sie sind, soweit möglich, strikt einzuhalten.
Tabellen
In Tabellennamen werden die Worte mit Unterstrichen getrennt. Der Gruppenname von Tabellen wird mit zwei Unterstrichen vom Rest des Namens getrennt um in phpMyAdmin die Ordnerdarstellung zu ermöglichen.
Z.B.:
part
part__variant
part__variant_alternative
Schlüssel
Keys:
key:tablename.field
Unique Keys:
idx:tablename.field1,field2,…,fieldN
Foreign Keys:
fk:referencingTable.referencingField>referencedTable.referencedField
(Die > zwischen referencingField und referencedTable beachten.)
Eigenschaften (Attribute)
Die Eigenschaften der Teile werden über Attribute definiert.
Attribut Einheiten
Attribute-Einheiten (Tabelle attribute__units) haben die folgenden Felder:
- Name (
name): Ausgeschriebener Name der Einheit (z.B. Ampere) - Symbol (
symbol): (Physikalisches) Symbol für die Einheit (z.B. A)
Attribute
Attribute (Tabelle attributes) haben die folgenden Felder:
- Name (
name) : Ausgeschriebener Name des Attributs (z.B. Ausgangsstrom) - Symbol (
symbol) : Symbol bzw. Abkürzung für das Attribut (z.B. Iout) - Art (
value_type) : Art des Attributs (s. Attributarten) - Einheit (
unit): Einheit des Attributs (Fremdschlüssel aus Tabelleattribute__units)
Attributarten
Die Art des Attributs kann eine der folgenden sein:
NUMBER: Eine Zahl (int oder float)TEXT: Eine ZeichenketteENUM: Ein Wert aus einer Liste (s. Attributwertlisten)IMAGE: Ein Bild (Falls nur Dateiname: lokal abgelegtes Bild in einem Ordner mit Namen des Attributs)FILE: Eine Datei (Falls nur Dateiname: lokal abgelegte Datei in einem Ordner mit Namen des Attributs)URL: Eine URL
Je nach Art des Attributs kann die Darstellung in der GUI gewählt werden (Formatierung, Icon, etc.)
Attributwertlisten
Für jedes Attribut der Art ENUM gibt es in der Tabelle attribute__values einen oder mehrere Einträge, die die Auswahlmöglichkeiten definieren.
Jeder Eintrag dieser Tabelle hat die Felder:
- Attribut (
attribute): Attribut zu dem der Wert gehört (z.B. Farbe) - Wert (
value): Einer der Werte für dieses Attribut (z.B. Blau)
Bei Attributen mit (einigermaßem) kleinem Wertebereich ist es sinnvoll, die möglichen Werte fest zu hinterlegen. So werden doppelte Einträge durch Unterschiede in der Schreibweise vermieden.
Typgruppen & Typen
Um die Einträge zu kategorisieren und die Navigierbarkeit der Datenbank zu verbessern werden die Teile Typen zugeordnet. Die Typen sind in Typgruppen zusammengefasst.
Typgruppen
Typgruppen (Tabelle part__type_groups) haben die folgenden Felder:
- Name (
name): Name der Typgruppe
Typen
Typen (Tabelle part__type) haben die folgenden Felder:
- Name (
name): Name des Typs - Gruppe (
group): Name einer Typgruppe.(Fremdschlüssel auf Tabellepart__type_groups). - Formgruppe (
shape_type_group): Name einer Formtypgruppe.
Die Referenz auf ein Formtypgruppe ordnet einem Teiletypen eine Gruppe von Formtypen zu. Die Auswahlmöglichkeiten in der GUI können so auf sinnvolle Werte beschränkt werden.
Z.B. wird dem Typ Schraube die Formtypgruppe Mechanische Bauteile zugeordnet. Bei der Auswahl des Formtyps für eine Schraube werden so keine Elektronikbauteilformen angezeigt.
Distributoren
In der Tabelle distributors werden die Bezugsquellen der Teile abgelegt. Über die Relationstabelle part__variant_distributors werden jeder Teilvariante einer oder mehrere Distributoren zugeordnet.
Die Distributoren haben folgende Felder:
- Name (
name): Name des Lieferanten (z.B. Farnell) - Versandkosten (
shipping_cost): Versandkostenbetrag (z.B. 4,95€) - Freiversandgrenze (
free_shipping_limit): Betrag, ab dem der Versand kostenlos ist (z.B. 50€) - Webseite (
website): URL der Lieferantenwebsite (z.B. http://de.farnell.com) - Produkturlmuster (
product_url_pattern): URL-Muster zur Erzeugung von Produktlinks (z.B. http://de.farnell.com/{part_id}
Formtypen & Formtypgruppen
Allen Bauteilen muss eine Form zugeordnet werden. Die Form repräsentiert das physische Erscheinungsbild dieses Teils. Formen sind untergliedert in Formtypen und Formtypgruppen.
Teiletypen referenzieren eine Formtypgruppe (s. Typen)
Teil & Form Anzeigenamen
Die Anzeige von Teil- und Formtypen definieren wie die Bezeichnungen des Teils bzw. der Form in der GUI dargestellt werden. Sie können aus den Namensfeldern und Attributen der jeweiligen Tabellen (Teil/Form) zusammengebaut werden.
Anzeigenamen sind hierarchisch aufgebaut. Eine Ebene kann jeweils nur die Felder der darunterliegenden Ebene benutzen. Attribute können aus allen Ebenen genutzt werden.
Syntax
Felder {'field':'<feldname>'} : z.B: {'field':'shape-variant-shortname'}
Wird durch den Wert des entsprechenden Feldes ersetzt.
Attribute {'attr':'<attribut-name>'} : z.B. {'attr':'Durchmesser'}
Wird durch den Wert des entsprechenden Attributes inkl. Einheit ersetzt.
Attribute mit Formatierung {'attr':'<attribut-name>','format':'<formatstring>,'factor':<factor>} : z.B. {'attr':'Durchmesser','format':'<min>','factor':1000}
Wird durch den Wert des Formatstrings ersetzt. Der Formatstring kann die folgenden Platzhalter enthalten:
- <min> : Minimum des Attributs, Multipliziert mit dem <factor>, sofern angegeben
- <max> : Maximum des Attributs (sofern vorhanden), Multipliziert mit dem <factor>, sofern angegeben)
- <unit>: Einheit des Attributs (sofern vorhanden)
- <symbol>: Einheitensymbol des Attributs (sofern vorhanden)
Falls ein Feld oder Attribut nicht vorhanden ist, wird nichts angezeigt.
Teil Anzeigenamen
Beispiel:
Anzeigename des Teiletyps Widerstand : {'field':'value'} {'attr':'Widerstand'} ({'attr':'Toleranz'})
PartTypeGroup: Passive Elemente
PartType : Widerstand
Part : Kohleschichtwiderstand
Variante : 10kΩ
Attribute : Widerstand=10kΩ, Art=Dickschicht, Toleranz=5%, etc.
Anzeigeergebniss ⇒ Kohleschichtwiderstand 10kΩ (5%)
Form Anzeigenamen
Formtyp hat
- Name : Name des Formtyps (zum Referenzieren)
- Rendername : Labeldefinition für Formen dieses Typs
Form hat
- Longname : Kann Formvariante-long/shortname und Form/Formvariante-Attribute benutzen
- Shortname : Kann Formvariante-long/shortname und Form/Formvariante-Attribute benutzen
Formvariante hat
- Longname : Kann Form/Formvariante-Attribute benutzen
- Shortname : Kann Form/Formvariante-Attribute benutzen
