Welcome to Sign in | Help
in Search

relationare intre tabele in SQL

Last post 04-23-2008, 3:52 PM by B_gd_n[ ]Sahlean. 6 replies.
Sort Posts: Previous Next
  •  04-21-2008, 7:03 PM 4697

    relationare intre tabele in SQL

    exista vreun script in SQL care sa faca asa ceva?
  •  04-21-2008, 10:40 PM 4698 in reply to 4697

    Re: relationare intre tabele in SQL

    In script se poate folosi ALTER TABLE table_name cu  , citez din Books Online "< column_constraint > ::=
       [ NULL | NOT NULL ]
       [ CONSTRAINT constraint_name ]
       {
          | { PRIMARY KEY | UNIQUE }
          | REFERENCES ref_table [ (ref_column) ]
          [ ON DELETE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ]
          [ ON UPDATE { CASCADE | NO ACTION | SET DEFAULT |SET NULL } ] "

    altfel, daca va referiti la aspectul crearii automate a relatiilor intre tabele se poate folosi "Database Diagrams" unde legati cheile potrivite dintre tabele.
    Gheorghe Ciubuc,SQL Server Influencer, MCP(SQL 2000), MCTS (SQL Server 2005) , OCA(Oracle 9i), Sybase(Brainbench)
  •  04-22-2008, 4:19 PM 4729 in reply to 4698

    Re: relationare intre tabele in SQL

    sa fiu sincera nu prea am inteles mare lucru. se poate un exemplu concret sau link-ul de la asta?
  •  04-22-2008, 4:58 PM 4731 in reply to 4729

    Re: relationare intre tabele in SQL

    cam asa ar fi in SQL Server 2005

    /* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
    BEGIN TRANSACTION
    SET QUOTED_IDENTIFIER ON
    SET ARITHABORT ON
    SET NUMERIC_ROUNDABORT OFF
    SET CONCAT_NULL_YIELDS_NULL ON
    SET ANSI_NULLS ON
    SET ANSI_PADDING ON
    SET ANSI_WARNINGS ON
    COMMIT
    BEGIN TRANSACTION
    GO
    COMMIT
    BEGIN TRANSACTION
    GO
    ALTER TABLE dbo.Table1 ADD CONSTRAINT
      FK_Table1_Table2 FOREIGN KEY
      (
      t2_id
      ) REFERENCES dbo.Table2
      (
      id_t2
      ) ON UPDATE NO ACTION
       ON DELETE NO ACTION
      
    GO
    COMMIT


    Am tabelul Table1 cu chiea primara id_t1 (int) si coloana t2_id - nchar(10) si tabelul Table2 care are ca si cheie primara coloana id_t2 - nchar(10) iar scriptul de mai sus face legatura intre id_t2 si t2_id .

    Eu am obtinut scriptul facand legatura intre tabele pe diagrama si folosind optiunea "Generate Change Script" din meniul "Table Designer" inainte sa dau save
  •  04-22-2008, 6:14 PM 4732 in reply to 4731

    Re: relationare intre tabele in SQL

    Sau în momentul în care se creează tabelele:
    Tabela1(cp11 - cheie primară, câmp12, câmp13)
    Tabela2(cp21 - cheie primară, camp22, câmp23, cp11 - cheie externă)

    În concluzie avem o legătură de la Tabela1 la Tabela2 dată de corespondenţa dintre cheia externă Tabel2.cp11 şi cheia primară Tabel1.cp11 !

    Scriptul pentru crearea tabelei care conţine cheia primară:
    CREATE TABLE Tabela1
    (
    cp11 INT PRIMARY KEY,
    camp11 INT,
    camp13 INT
    );
    GO


    Scriptul pentru crearea tabelei care conţine cheia externă:
    CREATE TABLE Tabela2
    (
    cp21 INT PRIMARY KEY,
    camp21 INT,
    camp23 INT,
    cp11 INT NOT NULL REFERENCES Tabela1(cp11)
    );
    GO

    Linia
    cp11 INT NOT NULL REFERENCES Tabela1(cp11)
    defineşte legătura de la câmpul cp11 (cheia externă din Tabela2)  la câmpul cp11 (cheie primară din Tabela1).

    Cheile pot fi compuse.
  •  04-23-2008, 3:43 PM 4743 in reply to 4732

    Re: relationare intre tabele in SQL

    ultima varianta e mai pe intelesul meu. o ultima intrebare totusi. merge pe SQL-ul din Acces2003? eu pe asta il folosesc.
  •  04-23-2008, 3:52 PM 4744 in reply to 4743

    Re: relationare intre tabele in SQL

    Merge si in Access dar trebuie sa executi cele 2 interogari CREATE TABLE separat si fara GO.
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems