![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Elite
![]() |
![]() hi leute
da unser vortragender unfähig ist hätt ich ein paar fragen an die db-kenner und könner. 1) was ist ein constraint 2) wie genau definiere ich foreign keys 3) was ist ein index? das sind einmal die, die akut sind, in folge kommen dann noch mehr befürcht ich. mein bestelltes sql buch dauert leider noch... |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 15.11.2000
Alter: 43
Beiträge: 7.684
|
![]() welche datenbank genau wär sicher auch noch recht nett zu wissen
![]()
____________________________________
Yeah, yo mama dresses you funny and you need a mouse to delete files. Jabber-ID: valo [at] cargal \'.\' org Infected Mushroom and Barri Saharof - Live in Eilat Desert Israel 24-10-2002 A*S*Y*S - SSL-Pickup 21-10-2002 Dj Tiesto - Forbidden Paradise 8/Mystic Swamp |
![]() |
![]() |
![]() |
#3 |
Elite
![]() |
![]() naja, hauptsächlich oracle
aber mir wär mit mysql usw auch schon sehr geholfen. so viel unterschied ist ja (zumindest beim theoretischen) nicht, was frage 1 und 3 betrifft, wenn ich mich nicht irre 2 wäre for allem für oracle und mysql gut zu wissen |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() Registriert seit: 15.11.2000
Alter: 43
Beiträge: 7.684
|
![]() stimmt, 1 und 3 sollten überall in etwa gleich sein (3 in jedem fall
![]() ad 2: keine ahnung... kurz google bemüht mit "constraint oracle db": ![]() www.orafaq.com --> sollte dir alle infos geben die du haben willst ... und "constraint mysql" www.mysql.com --> dort gibts manuals dazu, da sollte das wohl drin stehn ![]() ![]()
____________________________________
Yeah, yo mama dresses you funny and you need a mouse to delete files. Jabber-ID: valo [at] cargal \'.\' org Infected Mushroom and Barri Saharof - Live in Eilat Desert Israel 24-10-2002 A*S*Y*S - SSL-Pickup 21-10-2002 Dj Tiesto - Forbidden Paradise 8/Mystic Swamp |
![]() |
![]() |
![]() |
#5 |
Elite
![]() Registriert seit: 07.02.2001
Beiträge: 1.441
|
![]() @who-t
ad 2) ist eigentlich auch nicht so ad hoc zu beantworten ..zumindest nicht in einem kurzen posting. wo genau liegt dein prob? habt ihr die normalisierung von tabellen durchgesprochen? falls es nur um die syntax geht, ist folgendes buch eine gute anschaffung: sql in a nutshell, o'reilly, isbn 3-89721-197-1 (behandelt sql server, MySQL, oracle und postgresSQL) falls allerdings verständnisfragen hinter deiner anfrage stehn ... würd ich dir ein paar infos am we mailen ... wenn du sie dann noch brauchst. greeetz artemisias |
![]() |
![]() |
![]() |
#6 |
Elite
![]() |
![]() jo, her damit
![]() naja, wir haben normalisierung gemacht, 1 bis 3 NF zumindest, die hab ich auch verstanden. den constraint hat er mit constraint erklärt, was irgendwie irrsinnig von pädagogischen kenntnissen zeugt. nach fragerei bin ich mittlerweile soweit, dass das für fehlermeldungen wichtig ist, weil die dann besser lesbar sind und für joins unter gewissen umständen. |
![]() |
![]() |
![]() |
#7 |
Aussteiger
![]() |
![]() constraint ist wie aus dem englischen übersetzt eine einschränkung oder beschränkung.
und zwar: wenn eine column (oder mehrere columns zusammen) nicht NULL sein darf oder wenn nur bestimmte werte vorkommen dürfen (zb: bei geschlecht nur 'M' oder 'W') bzw. wenn der wert eindeutig (=unique, zb: primärschlüssel) sein muß oder sich auf einen schlüssel einer anderen tabelle bezieht (=foreign key), dann bezeichnet man das als einen constraint. gruß pc.net ps: ich hab jetzt google konsultiert und eine sehr gute beschreibung gefunden: http://www.mathematik.net/IT-Sql-oracle/sq02s8.htm (übergeordnete seite hier) edit: achja - hier das google-suchergebnis
____________________________________
Praktizierender Eristiker No hace falta ser un genio para saber quién dijo eso. Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein. |
![]() |
![]() |
![]() |
#8 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() 1. Was ist ein constraint ?
Ein constraint ist ein logischer - vom Anwender/Programmierer/SAP-Kundenbetreuer gebildeter, willkürlicher - Zusammenhang zwischen einer mehrfachen logischen Bedingung und einer im constraint definierten Aktion bei Zutreffen dieser Bedingung. Der Zweck eines constraints ist das Verhindern von bestimmten, nicht genehmen Werten in bestimmten Feldern, bzw. das gezielte Einsteuern von Werten in einzelne Recordfelder einer Tabelle bei Vorliegen von vorher (eben im constraint) definierten Bedingungen. Ein constraint sagt tatsächlicherweise folgendes aus: Falls DIES [und DIES oder DIES ...] wahr ist, dann tu DAS [und DAS und DAS] . 2. Was ist ein foreign key ? Ein foreign key ist ein Fremdkey, der aus einer anderen Tabelle stammt, im Rahmen der Normalisierung einer Datenbank zerlegt man die Daten z.B. in Artikel(nummern und -daten), Lieferanten(namen und -adressen) und benutzt diese foreign keys - also die Artikelnummer bzw. den Lieferantennamen in einer weiteren Tabelle, um eine Bestellung gespeichert in der gleichen Datenbank vorzuhalten. Wenn ich nun die Daten des Lieferanten haben möchte - ich denke hier z.B. an eine Telefonnummer oder halt an die Adressfelder wie die Straße, die Postleitzahl, den Ort oder auch andere DATEN-Felder der Tabelle Lieferant - muß ich mit dem sogenannten 'foreign key'-Feld aus der Tabelle Bestellung, eben dem Tabellenfeld Lieferantenname, lesend auf die Daten des entsprehenden Lieferanten zugreifen, und die erhaltenen Daten in eine Bildschirmmaske oder einen Druckbereich programmtechnisch einsteuern. Mit anderen Worten läßt sich sagen, daß die Tabelle Bestellung u.a. zwei Felder besitzt: Artikelnummer + Lieferantenname. Beide Felder sind nicht nur Felder der Tabelle Bestellung sondern eben in dieser Funktion parallel und zusätzlich 'foreign key'-Felder ... der ganze Witz bei einer relationalen Datenbank. Ich benutze also die Artikelnummer als Keyfeld in der Tabelle Bestellung. Kommen tut die Artikelnummer (das ist der foreign key in der Tabelle Bestellung, das Feld Lieferantenname ist übrigens ein weiterer foreign key) aber aus einer fremden (=foreign table) Tabelle - konkret aus der Tabelle Artikel. Um zu den Artikel-DATEN zu kommen, muß ich ein SELECT * FROM Artikel WHERE Artikelnummer = Artikelnummer der Bestellung ausführen und die erhaltenen Datenbankfelder des Records in die vorgesehenen Felder des Bildschirmbereichs /Druckbereichs stellen. Das gleiche muß man mit den Lieferanten-DATEN machen. Zuerst die Daten lesen, dann die Felder versorgen. 3. Was ist ein Index ? Ein Index ist eine Kurzform einer Tabelle in einer bestimmten Reihenfolge sortiert. Was heißt das ? Ich habe die Felder Nachname, Vorname, VSNR, Adresse, Beruf. Jetzt kann ich mehrere Indices erzeugen (CREATE INDEX ...) Index 1: Nachname + Vorname (nicht unique, es können duplicates bzw. auch duplicate entries also doppelte Einträge vorkommen: z.B. Müller Werner) Index 2: Nachname + Vorname + VSNR (=Sozialvers.-nummer). Dieser Index (=Schlüssel, =Key) ist eher schon - will sagen MUSS sein ... was ? ... Unique bzw. "eindeutig". Index 3: VSNR Index 4: Vorname Was ist der Zweck eines Indices ? 1. Punktgenauer Zugriff auf Daten. D.h. es ist kein komplettes Durchlesen der Datentabelle notwendig, weil man den Index benutzt um die Position des Datentabellenrecords zu erhalten und dann die Information enthält. Das Beschleunigen des Lesevorgangs passiert implizit, also automatisch, je nach Gegebenheit. Habe ich einen entsprechenden Index, muß die SQL-Datenbankengine keinen "full table scan" ausführen, sondern kann den Index benutzen um GEZIELT zu den Datenfeldern (=zum Datenrecord) zu kommen. 2. Sortiertes Lesen innerhalb einer Tabelle um alle Lieferanten von B bis Q auszudrucken, zu mahnen etc, etc ! Ich hoffe, es ist alles halbwegs verständlich gewesen. mfg Kikakater |
![]() |
![]() |
![]() |
#9 |
Inventar
![]() Registriert seit: 15.11.2000
Alter: 43
Beiträge: 7.684
|
![]() scheint ne gute erklärung zu sein, und den rest kann man dann ja in den online manuals und so nachlesen
![]()
____________________________________
Yeah, yo mama dresses you funny and you need a mouse to delete files. Jabber-ID: valo [at] cargal \'.\' org Infected Mushroom and Barri Saharof - Live in Eilat Desert Israel 24-10-2002 A*S*Y*S - SSL-Pickup 21-10-2002 Dj Tiesto - Forbidden Paradise 8/Mystic Swamp |
![]() |
![]() |
![]() |
#10 |
Elite
![]() |
![]() index = key??
da hats was, ich kann doch beide getrennt definieren, oder? |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|