Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Achso ich dachte eigentlich, dass nur allgemein drin steht, wer welche Rechte auf die Dateien hat. Also nur irgendeine Datei oder alle Dateien. Aber warum kann er das keinem Nutzer zuordnen? Da steht doch die Nutzer ID bei. Oder muss ich dann eine Tabelle machen, in der die Datei ID und die Nutzer ID steht damit er das zuordnet? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 Also die N_ID, die Du dort für Zugriff definierst, ist kein Fremdschlüssel auf die User-Tabelle. Es wurden Dir jetzt schon diverse Male die nötigen Stichworte genannt. Zeig doch ein wenig Eigeninitiative und informier Dich mal zu den Themen referentielle Integrität, Primär- und Fremdschlüssel und den evtl. anderen genannten Themen. Peter Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Tut mir leid aber irgendwie versteh ich immernoch nicht wie das mit den Fremdschlüsseln geht... Ich habe schon recherchiert aber ich versteh das nicht ganz. Also man muss einen Fremdschlüssel für einen Primärschlüssel erstellen damit dieser auf einen anderen Primärschlüssel zugreifen kann. Stimmt das? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Hab schon einiges versucht... Z.B dieses: ALTER TABLE zugriff ADD CONSTRAINT FOREIGN KEY (N_ID) REFERENCES nutzer (N_ID)); das bei create table zugriff Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
karl-heinz Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 Na das ist doch schon was! Allerdings vergibst du auch in der Tabelle Zugriff, die Werte für N_ID automatisch. Macht das Sinn? Was tut den deine Foreign Key Constraint? Sie stellt doch sicher, dass der Fremdschlüssel auch als Primärschlüssel bereits existiert. Wie kommt ein solcher Fremdschlüssel also zustande? Da er auch als Primärschlüssel existieren muss, kann er erst danach manuell angelegt werden, oder? Kleiner Tipp, geh' hier doch mal etwas strukturierter vor, und dokumentiere das auch für uns: Erzeuge z.B. ein kleines Datenbeispiel,welche Attribute sind Primärschlüssel und welche sind Fremdschlüssel oderschreib' auf was du darunter bis jetzt verstehst. Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Primär- und Fremdschlüssel sind doch im Prinzip das gleiche. Das sind doch meistens IDs oder? Und wenn man dann z.B in einer zweiten Tabelle auch eine ID hat, die praktisch der ersten Tabelle sagen soll, dass es sich um die und die Datei handelt, dann muss man doch einfach noch eine Fremdschlüsselsyntax zur Primärschlüsselsyntax dazu packen, damit der weiß, dass der Primärschlüssel gleichzeitig auch der Fremdschlüssel sein soll oder so? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Oh man ich glaub ich weiß es wirklich nicht xD Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
karl-heinz Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 Na dann mach jetzt erstmal ein Beispiel (SQL) mit zwei Tabellen Dokument und Link. Beide haben einen Namen, und bei Link wird zusätzlich angeben, auf welches Dokument er 'zeigt'. Für beide sollst du einen künstlichen Primärschlüssel verwenden. Und am Ende bitte noch drei Inserts: Ein Dokument 'Foo' und 'Bar' und ein Link 'Foolink', der auf 'Foo' zeigt. Los geht's und vergiss die Kommentare nicht . Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Okay ich werds gleich versuchen weil es gerade ein bisschen knapp wird mit der Zeit. ;D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Ich habe jetzt schon Probleme xD Ich versteh bloß grad nicht warum. CREATE DATABASE Beispiel; USE Beispiel; CREATE Table Dokument(Dokumentname INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Dokumentname varchar(25) Not Null, D_ID varchar(25) Not Null); CREATE Table Link (Linkname INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Linkname varchar(25) Not Null, L_ID varchar(25) NOT NULL); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Ah schon erledigt nur wie meinst du das mit "worauf der Link zeigt"? Was muss ich da denn machen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
karl-heinz Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 Unabhängig von deiner letzten Frage, poste bitte noch mal die korrigierte Version :cool:. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Hier: DROP DATABASE Beispiel; CREATE DATABASE Beispiel; USE Beispiel; CREATE TABLE Dokument(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nickname VARCHAR(25) NOT NULL); CREATE TABLE Link (L_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nickname VARCHAR(25) NOT NULL); INSERT INTO Dokument (Nickname) VALUES ("Foo"), ("Bar"); INSERT INTO Link (Nickname) VALUES ("Foolink"); Willst du überhaupt IDs haben? oder andere Frage: Geht das überhaupt ohne ID? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Erstmal der Anfang... Ich weiß nicht wirklich wie ich jetzt weiter machen muss. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
karl-heinz Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 Sehr Gut! Einzig der Attributname 'Nickname' stört mich ein wenig, aber mit Ausnahme, der letzten Forderung hast du allet richtig gemacht . Zu der Frage ob ich IDs möchte: Jep ich wollte welche (künstlicher Primärschlüssel). Ob man dis auch anders machen könnte? Ja, angenommen der Name eines Dokumentes muss eindeutig sein, so könntest du stattdessen auch 'Name' verwenden (natürlicher Primärschlüssel) und 'D_ID' weglassen, da es ja dann nicht mehr gebraucht werden würde. Was hab' ich nun mit 'zeigt auf' gemeint? Wat hat denn ein Html-Link für ein Attribut? Richtig 'href'. Und wat steht drin? Na die Adresse der Webseite auf die 'verlinkt' wird. Was wäre also die Dokumentadresse in deinem Fall? Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Okay gut ;D Aber das href bringt mich jetzt voll raus :/ Was muss ich denn jetzt damit machen? Ich glaub solangsam sitz ich da schon zu lange vor Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Also ich hab noch nie was mit Fremdschlüsseln gemacht. Weiß überhaupt nicht wie das geht und wo ich weiter machen muss^^. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
karl-heinz Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 (bearbeitet) Hm okay... Wie bekomm ich folgendes hin: "Foolink"->"Foo"? Anders gesagt wie bekomme ich es hin, dass wenn ich "Foolink" kenne, dass ich auch "Foo" kenne? Nach deinen Inserts sollte ja ungefähr Folgendes in der DB stehen: Dokument: (1,'Foo') (2,'Bar') Link: (1,'Foolink') Du musst jetzt nur noch Link ändern, so das folgendes in der DB wäre: (1,'Foolink',1) Bearbeitet 24. Februar 2010 von karl-heinz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Genau. Das versteh ich nicht. Wo muss die 1 hin? Noch eine neue Spalte in der Tabelle? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 CREATE DATABASE Beispiel; USE Beispiel; CREATE TABLE Dokument(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nickname VARCHAR(25) NOT NULL); CREATE TABLE Link (L_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nickname VARCHAR(25) NOT NULL, D_ID VARCHAR(25) NOT NULL); INSERT INTO Dokument (Nickname) VALUES ("Foo"), ("Bar"); INSERT INTO Link (Nickname, D_ID) VALUES ("Foolink", "1"); so is es nicht gemeint oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
karl-heinz Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 Ja! Und zwar in der Link-Tabelle (z.B. Link.D_ID oder Link.Dokument als int). D.h. also, du 'nimmst' dir den Primärschlüssel der betreffenden Tabelle (hier Dokument.D_ID) und 'verwendest' ihn in der anderen Tabelle (Link) als Fremdschlüssel, indem du ihn dort als Spalte anlegst (beide Datentypen müssen übereinstimmen!). Und dann kannst du noch eine CONSTRAINT für Link definieren, die sicherstellt, dass wenn du einen Wert in Link.D_ID reinschreibst, dieser auch in Dokument.D_ID existiert. Aber du kannst kein AUTO_INCREMENT für den Fremdschlüssel verwenden! Und wenn du jut bist, sachste mir noch kurz warum ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
karl-heinz Geschrieben 24. Februar 2010 Teilen Geschrieben 24. Februar 2010 CREATE DATABASE Beispiel; USE Beispiel; CREATE TABLE Dokument(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nickname VARCHAR(25) NOT NULL); CREATE TABLE Link (L_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nickname VARCHAR(25) NOT NULL, D_ID VARCHAR(25) NOT NULL); INSERT INTO Dokument (Nickname) VALUES ("Foo"), ("Bar"); INSERT INTO Link (Nickname, D_ID) VALUES ("Foolink", "1"); so is es nicht gemeint oder? Doch fast, aber du hast nicht denselben Datentypen für den Fremdschlüssel verwendet, und dat ist weshalb problematisch? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Sry schreib später... Hab im Moment keine Zeit mehr :/ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 Es muss ja gleich sein, weil er das sonst nicht zuordnen könnte oder? Das mit dem Auto_Increment weiß ich nicht. Ich kenn eigentlich die ganze Bezeichnung gar nicht wenn ich ehrlich bin, ich weiß nur dass das dahin muss^^. Ähm okay dafür brauch ich aber noch bisschen Zeit Ich schreib gleich nochmal Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Will_Malecken Geschrieben 24. Februar 2010 Autor Teilen Geschrieben 24. Februar 2010 DROP DATABASE Beispiel; CREATE DATABASE Beispiel; USE Beispiel; CREATE TABLE Dokument(D_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nickname VARCHAR(25) NOT NULL); CREATE TABLE Link (L_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nickname VARCHAR(25) NOT NULL, D_ID VARCHAR(25) NOT NULL); INSERT INTO Dokument (Nickname) VALUES ("Foo"), ("Bar"); INSERT INTO Link (Nickname, Link.D_ID) VALUES ("Foolink", "1"); Also ganz leicht einfach so? Fehler sind schonmal nicht drin ;D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.