WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [MS SQL Server] Datenbanken und Tabellen anlegen (http://www.wcm.at/forum/showthread.php?t=150594)

3of4 17.11.2004 10:50

[MS SQL Server] Datenbanken und Tabellen anlegen
 
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
);

Fehlermeldung:
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.


T.dot 17.11.2004 10:54

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 :)

3of4 17.11.2004 11:25

wie kann ich die referenzen dann erstellen?
sie müssen ja da sein :mad:
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?

T.dot 17.11.2004 11:31

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag