WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 17.11.2004, 10:50   #1
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429


Standard [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.
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 17.11.2004, 10:54   #2
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

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
T.dot ist offline   Mit Zitat antworten
Alt 17.11.2004, 11:25   #3
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 39
Beiträge: 1.429


Standard

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?
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 17.11.2004, 11:31   #4
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

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
T.dot ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:44 Uhr.


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