User Tools

Site Tools


part_db

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
part_db [2015/10/13 22:25] konstantinpart_db [2017/07/27 10:52] (current) konstantin
Line 1: Line 1:
-===== Part & Shape =====+====== Part Database ======
  
-Parttypen referenzieren eine ShapetypegroupDamit wird die Auswahl der Shapetypes für diesen Parttypen begrenzt.+Die PartDatabase (im folgenden PartDB) soll eine einfache Möglichkeit zur Verwaltung von Bauteilen (elektrisch, mechanisch, optisch, etc.) sein.
  
-===== Part & Shape Rendernames =====+Als Grundfunktion stellt sie ein Inventar von Teilen zur Verfügung. Erweiterte Funktionen wie Baugruppenverwaltung und Bestellungserzeugung folgen.
  
-Die Rendernames von Part- und Shapetypen definieren wie die Bezeichnungen der Parts bzw. Shapes gerendert werden. +===== Struktur =====
  
-==== Part Rendernames ====+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. I<sub>out</sub>
 +  * Art (''value_type'') : Art des Attributs (s. [[part_db#attributarten|Attributarten]]) 
 +  * Einheit (''unit''): Einheit des Attributs (Fremdschlüssel aus Tabelle ''%%attribute__units%%''
 + 
 +== Attributarten == 
 + 
 +Die Art des Attributs kann eine der folgenden sein: 
 + 
 +  * ''NUMBER'' : Eine Zahl (int oder float) 
 +  * ''TEXT''   : Eine Zeichenkette 
 +  * ''ENUM''   : Ein Wert aus einer Liste (s. [[part_db#Attributwertlisten|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 Tabelle ''%%part__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. [[part_db#Typen|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: Beispiel:
  
-Rendername des Parttyps ''Widerstand'' : {partname} {attr:'Widerstand'} ({attr:'Toleranz'})+Anzeigename des Teiletyps ''Widerstand'' : {'field':'value'} {'attr':'Widerstand'} ({'attr':'Toleranz'})
  
 **PartTypeGroup**: Passive Elemente\\ **PartTypeGroup**: Passive Elemente\\
Line 19: Line 167:
 **Attribute**    : Widerstand=10kΩ, Art=Dickschicht, Toleranz=5%, etc.\\ **Attribute**    : Widerstand=10kΩ, Art=Dickschicht, Toleranz=5%, etc.\\
  
-Renderergebnis => Kohleschichtwiderstand 10kΩ (5%)+Anzeigeergebniss => Kohleschichtwiderstand 10kΩ (5%)
  
-==== Shape Rendernames ====+==== Form Anzeigenamen ====
  
-**Shapetype** hat  +**Formtyp** hat  
-  * //Name//       : Name des Shapetypes (zum Referenzieren) +  * //Name//       : Name des Formtyps (zum Referenzieren) 
-  * //Rendername// : Labeldefinition für Shapes dieses Typs (kann Shape-long/shortname und Shape/Shapevariant-Attribute benutzen)+  * //Rendername// : Labeldefinition für Formen dieses Typs
  
-**Shape** hat +**Form** hat 
-  * //Longname//  : Kann Shapevariant-long/shortname und Shape/Shapevariant-Attribute benutzen  +  * //Longname//  : Kann Formvariante-long/shortname und Form/Formvariante-Attribute benutzen  
-  * //Shortname// : Kann Shapevariant-long/shortname und Shape/Shapevariant-Attribute benutzen +  * //Shortname// : Kann Formvariante-long/shortname und Form/Formvariante-Attribute benutzen 
  
-**Shapevariant** hat +**Formvariante** hat 
-  * //Longname // : Kann Shape/Shapevariant-Attribute benutzen  +  * //Longname // : Kann Form/Formvariante-Attribute benutzen  
-  * //Shortname// : Kann Shape/Shapevariant-Attribute benutzen+  * //Shortname// : Kann Form/Formvariante-Attribute benutzen
  
  
-==== Syntax ==== 
-**Felder** {<feldname>} : z.B: {var-shortname}\\ 
-**Attribute** {attr:'<attribut-name>'} : z.B. {attr:'Durchmesser'} 
  
-Falls Attribut nicht vorhanden, nichts anzeigen. 
part_db.1444767947.txt.gz · Last modified: by konstantin