AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Relationale DB anlegen & mit Daten füllen, SQL Skript
Thema durchsuchen
Ansicht
Themen-Optionen

Relationale DB anlegen & mit Daten füllen, SQL Skript

Ein Thema von Salomon · begonnen am 7. Mär 2007 · letzter Beitrag vom 7. Mär 2007
Antwort Antwort
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

Relationale DB anlegen & mit Daten füllen, SQL Skript

  Alt 7. Mär 2007, 11:01
Datenbank: MS SQL Server Express • Zugriff über: ADO
Hi,
ich habe per Skript zwei Tabellen erstellt. Diese sind miteinander verknüpft. Nun möchte ich mit dem SQl Skript gleich nach dem Anlegen der Tabellen einige Daten in die DB mittels Insert Befehls aufnehmen.


SQL-Code:
CREATE TABLE "TB_Teams"
(
  "TeamID"       INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
  "Name"         VARCHAR(50),
  "Leader"       VARCHAR(50),
  "Description"  VARCHAR(50),
);


CREATE TABLE "TB_Users"
(
  "UserID"       INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
  "LoginName"    VARCHAR(50),
  "FirstName"    VARCHAR(50),
  "LastName"     VARCHAR(50),
  "Phone"        VARCHAR(50),
  "EMail"        VARCHAR(50),
  "Password"     VARCHAR(50),
  "FK_TeamID"    INT,
  FOREIGN KEY(FK_TeamID) REFERENCES TB_Teams(TeamID),
);
Die User befinden sich in einem Team, daher ist die Tabelle mit der Team Tabelle vernüpft. Sind die Datensätze automatisch verknüpft wenn ich als "FK_TeamID" die TeamID des jeweiligen Teams mitgebe?

Das erste Team -> Team1 bekommt durch das autoincrement automatisch die TeamID1.

Befindet sich der folgende User dann im Team 1 wenn ich ihn wie folgt anlege. Das ganze ist ehr eine Verständisfrage...

SQL-Code:
INSERT INTO TB_User("LoginName", "FirstName", "LastName", .... "FK_TeamID")
  VALUES ('LoginName','Max', 'Mustermann' ... '1');
MfG
Marcus
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Relationale DB anlegen & mit Daten füllen, SQL Skrip

  Alt 7. Mär 2007, 11:07
Was meinst du mit automatisch? Die Verknüpfung ist ja nur logisch durch den wert des FKs. Das FOREIGN KEY im CREATE-Statement weißt den Server ja nur an, zu überprüfen, ob der wert in der anderen Tabelle überhaupt existiert.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#3

Re: Relationale DB anlegen & mit Daten füllen, SQL Skrip

  Alt 7. Mär 2007, 11:14
Das heißt also wenn das FK_TeamID Feld der User Tabelle und das TeamID Feld der Teams Tabelle den selben Wert haben sind die Datensätze miteinander verknüpft?
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Relationale DB anlegen & mit Daten füllen, SQL Skrip

  Alt 7. Mär 2007, 11:39
Ja, das ist das Prinzip von relationalen Datenbanken.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#5

Re: Relationale DB anlegen & mit Daten füllen, SQL Skrip

  Alt 7. Mär 2007, 11:48
Wußte ich doch das ich das soweit verstanden habe

Im Programm werde ich dann mit DBLookup Komponenten arbeiten, um z.B. bei einem User anzuzeigen in welchem Team er ist? Das Anzeigen der Team ID macht ja nicht so viel Sinn...
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Relationale DB anlegen & mit Daten füllen, SQL Skrip

  Alt 7. Mär 2007, 11:59
Du kannst ja in der Abfrage den Namen des Teams hinzujoinen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#7

Re: Relationale DB anlegen & mit Daten füllen, SQL Skrip

  Alt 7. Mär 2007, 12:16
Du meinst sowas wie:

SQL-Code:
SELECT TB_Users.FirstName, TB_Users.LastName, TB_Teams.Name
FROM TB_Users, TB_Teams
WHERE TB_Users.FK_TeamID = TB_Teams.TeamID
?

Mit dem Code in einer ADOQuery Komponente sollten man meine ich einen User mit dem Team zu dem er gehört anzeigen können...
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
NormanNG

Registriert seit: 1. Feb 2006
294 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Relationale DB anlegen & mit Daten füllen, SQL Skrip

  Alt 7. Mär 2007, 12:31
Hi,

SQL-Code:
INSERT INTO TB_User("LoginName", "FirstName", "LastName", .... "FK_TeamID")
  VALUES ('LoginName','Max', 'Mustermann' ... '1');
Mal abgesehen davon, das die TeamID eigendlich ein Integer ist und das Insert nur durch "Server-Magic" (autom. Konvertierung) funktioniert:

Auf die "1" als ID für das erste eingefügte Team kann man sich nur verlassen, wenn die Tabelle gerade angelegt wurde. Wurden bereits andere Team-Datensätze eingefügt und dann wieder gelöscht, wird - auch bei leerer Tabelle - das nächste eingefügte Team *nicht* die ID=1 bekommen!

SQL-Code:
INSERT INTO TB_User("LoginName", "FirstName", "LastName", .... "FK_TeamID")
  SELECT 'LoginName', 'Max', 'Mustermann' ... , t.TeamID
  FROM TB_Teams t where Name = 'XYZ'
...liefert für das Team XYZ immer die richtige TeamID.

Dabei sollte natürlich TB_Teams.Name eindeutig sein (evtl. mit unique key).
Gruß
Norman
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz