![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() Habe folgende Aufgabenstellung:
2 Tabellen anlegen, Angestellte und Abteilung; Beziehungen dazwischen: Ein Angestellter muss zu einer Abteilung gehören, eine Abteilung hat n Angestellte --> ergo kann ich bei Angestellte ein Feld Abteilung als Fremdkey machen Eine Abteilung wird genau von einem Angestelltem geleitet, ein Angesteller kann eine oder keine Abteilung leiten --> ergo mache ich bei Abteilung ein Feld Abteilungsvorstand Soweit die Theorie, nur bei dem praktischen SQL-Code (ich muss über sql database, tabellen usw. anlegen) geht zwar mit dem sql query analyzer, aber ich kriege bei der ausführung einen runtimeerror. außerdem legt er mir die db nur an, sofern nach dem anlegebefehl nachher keine zeilen mehr kommen :/ Code:
CREATE DATABASE [h03-10-sqluebung] ON (NAME = N'h03-10-sqluebung_Data', FILENAME = N'C:\Programme\Microsoft SQL Server\MSSQL\data\h03-10-sqluebung_Data.MDF' , SIZE = 4, FILEGROWTH = 10%) LOG ON (NAME = N'h03-10-sqluebung_Log', FILENAME = N'C:\Programme\Microsoft SQL Server\MSSQL\data\h03-10-sqluebung_Log.LDF' , SIZE = 2, FILEGROWTH = 10%); CREATE TABLE [h03-10-sqluebung].dbo.Abt( Abtid UNIQUEIDENTIFIER, CONSTRAINT Abtid PRIMARY KEY(Abtid), Abtname CHAR(50) NOT NULL, Abtvstd INTEGER NOT NULL, CONSTRAINT Abtvstd FOREIGN KEY (Angid) REFERENCES [h3-10-sqluebung].dbo.Ang(Angid) ); CREATE TABLE [h03-10-sqluebung].dbo.Ang( Angid UNIQUEIDENTIFIER, CONSTRAINT Angid PRIMARY KEY(Angid), Angname CHAR(50) NOT NULL, FOREIGN KEY (Abtid) REFERENCES [h03-10-sqluebung].dbo.Abt ); Code:
Server: Nachr.-Nr. 1769, Schweregrad 16, Status 1, Zeile 4 Der Abtvstd-Fremdschlüssel verweist auf die ungültige Angid-Spalte in der verweisenden Abt-Tabelle. Server: Nachr.-Nr. 1750, Schweregrad 16, Status 1, Zeile 4 Einschränkung konnte nicht erstellt werden. Siehe vorherige Fehler. |
![]() |
![]() |
![]() |
#2 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Bin mir zwar ned ganz sicher, glaube aber das es an der zeile
CONSTRAINT Abtvstd FOREIGN KEY (Angid) REFERENCES [h3-10-sqluebung].dbo.Ang(Angid) scheitert, da er nicht auf eine Tabelle referenzieren kann, die es noch nicht gibt (afaik). Versuch einfach mal die Tabellen ohne references und wenn das nix nutzt ohne keys zu erstellen, dann kannst vielleicht den fehler ein wenig eingrenzen. mfg Thomas ![]() |
![]() |
![]() |
![]() |
#3 |
Elite
![]() Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429
|
![]() wie kann ich die referenzen dann erstellen?
sie müssen ja da sein ![]() aja, und wie kann ich (für ein anderes beispiel dann) eine angestellter-(0,1)-betreut-(1,3)-projekt beziehung realisieren? (ok, mit einer zwischentabelle, aber wie? |
![]() |
![]() |
![]() |
#4 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() es sollte eigentlich möglich sein, die referezen im nachhinein über alter table-xyz zu ändern, frag mich aber nicht nach der syntax, hab das über sql am ms server nie gemacht, frag am besten mal google oder msdn
du kannst dir aber auch im enterprise manager vom sql-server ein diagramm deiner db erstellen lassen und dann dort die beziehungen herstellen. ad zwischentabelle mach einfach eine tabelle wo die angestellen_id und die projekt_id drinnsteht schon hast du eine zwischentabelle. brauchst dann nurmehr die werte eintragen (lassen) zb ang_id 1, proj_id 1 ang_id 1, proj_id 2 ang_id 1, proj_id 3 ang_id 2, proj_id 2 ang_id 3, proj_id 1 etc. mfg Thomas |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|