Das muss als falsch bezeichnet werden. Es gibt niemals einen Grund dafür, dass eine VARCHAR-Spalte zum Primärschlüssel wird. Fast immer wird dafür eine Spalte vom Typ GUID oder vom Typ INTEGER (vorzugsweise als Auto-Wert) gewählt.:Sleepy: hat geschrieben:Beide haben jeweils das Attribut CDTitel (wobei es bei der CD der Primärschlüssel ist).
Das dürfte nur dann möglich sein, wenn das betreffende Feld (Spalte, Attribut) auch in der Tabelle Lied den Primärschlüssel darstellt. Dann wird Base das vermutlich von sich aus als 1:1-Beziehung anzeigen.1. Kann man daraus irgendwie eine 1:1 Beziehung machen?
Nein, das geht nicht. Jede Tabellendefinition steht für sich. Die Beziehungen bauen darauf auf. Eine Beziehung kann nur dann definiert werden, wenn die beteiligten Spalten vom Typ her zusammenpassen (z.B. INTEGER mit INTEGER, CHAR(n) mit CHAR(n)) oder zumindest hinreichend ähnlich sind.2. Nun hätte ich gedacht, dass wenn ich den Primärschlüssel in meiner Klasse CD ändere, auch automatisch das Attribut in Lied geändert wird.
Als "Datensatz" ist in diesem Fall die Beziehung gemeint. (Die wird intern in einer Systemtabelle Relationen gespeichert.)Stattdessen bekomme ich eine Fehlermeldung, dass der Datensatz nicht geändert werden kann, weil ja das Attribut auch in Lied verwendet wird. Wie funktioniert also das ändern?
Eigentlich kann sie überhaupt nicht geändert werden: Die vorhandene Beziehung muss gelöscht werden; dann können die Spalten geändert werden; dann kann die Beziehung neu angelegt werden.
Ich verstehe sowieso nicht, wieso du bei den Tabellen CD und Lied eine 1:1-Beziehung anstrebst. Eine CD enthält fast immer mehrere Lieder; also ist zwangsläufig nur eine 1:n-Beziehung möglich (eine CD mit n Liedern). Vielleicht könntest du dich mit der Einführung in SQL befassen.
Viel Erfolg! Jürgen