none
помогите разобраться с ключами RRS feed

  • Вопрос

  •  

    вот написала составление таблиц,а ключи никак не могу правильно написать,вечно ошибки выдает. помогите разобраться с ключами,пожалуйста. вот мой код таблиц:

    Образец кода

        /*
          ACTION is CREATE Table Поставщики
          */

    CREATE TABLE Поставщики(
           идентификатор_пост   int  NOT NULL,
           название             nchar(20) NULL,
           адрес                nchar(50) NULL
    )
    go
    ALTER TABLE Поставщики
           ADD  PRIMARY KEY (идентификатор_пост)
                REFERENCES Товары (идентификатор_тов)
    go

          /*
          ACTION is CREATE Table Товары
          */

    CREATE TABLE Товары (
           идентификатор_тов     int NOT NULL,
           Название              nchar(20)  NULL,
           категория_товара      nchar(20)  NULL
    )
    go


    ALTER TABLE Товары
           ADD  PRIMARY KEY (идентификатор_тов)
                       REFERENCES Поставщики (идентификатор_пост)
    go

         
          /*
          ACTION is CREATE Table Поставки
          */

    CREATE TABLE Поставки (
           шифр_поставки         numeric(6,0) NOT NULL,
           индекс_поставщика     char(6)  NULL,
           индекс_товара         char(8)  NULL,
           единица_измерения     char (3) NULL,
           количество_товара     numeric (7,2)  NULL,
           цена_единицы_товара   numeric (8,2) NULL,
           дата_поставки         smalldatetime  NULL
    )
    go

     ALTER TABLE Поставки
           ADD  PRIMARY KEY (шифр_поставки)
                 REFERENCES Товары (название)
    go    
     
    ALTER TABLE Поставки
           ADD FOREIGN KEY (индекс_поставщика)
          REFERENCES Поставщики (идентификатор_пост)
    go

    ALTER TABLE Поставки
           ADD FOREIGN KEY (индекс_товара)
     REFERENCES  Товары (идентификатор_тов)
    go                 

     

    вот ссылка на задание,по которому у меня возникли проблемы: http://webfile.ru/1603340

    помогите пожалуйста написать правильно ключи

    20 ноября 2007 г. 17:00

Ответы

  • Формат ALTER TABLE хорошо описан в BOL, вот ссылка на формат CONSTAINTов

    http://msdn2.microsoft.com/ru-ru/library/ms188066.aspx

     

    В "PRIMARY KEY" "REFERENCES" не указывается, к тому же их проще создавать при создании таблице (по крайней мере в Вашем случае)

     

    Еще проще - создать таблицы в графической оболочке, а затем сгенерить SQL.

     

    Я бы написал примерно так:

     

    Образец кода

    /*     ACTION is CREATE Table Поставщики      */

    CREATE TABLE Поставщики(
           идентификатор_пост   int  NOT NULL PRIMARY KEY,
           название             nchar(20) NULL,
           адрес                nchar(50) NULL
    )
    go

    /*       ACTION is CREATE Table Товары      */

    CREATE TABLE Товары (
           идентификатор_тов     int NOT NULL PRIMARY KEY,
           Название              nchar(20)  NULL,
           категория_товара      nchar(20)  NULL
    )
    go

          
    /*      ACTION is CREATE Table Поставки      */

    CREATE TABLE Поставки (
           шифр_поставки         numeric(6,0) NOT NULL PRIMARY KEY ,
           индекс_поставщика     char(6)  NULL,
           индекс_товара         char(8)  NULL,
           единица_измерения     char (3) NULL,
           количество_товара     numeric (7,2)  NULL,
           цена_единицы_товара   numeric (8,2) NULL,
           дата_поставки         smalldatetime  NULL
    )
    go


    ALTER TABLE Поставки
           ADD CONSTRAINT fk_1 FOREIGN KEY (индекс_поставщика)
          REFERENCES Поставщики (идентификатор_пост)
    go

    ALTER TABLE Поставки
           ADD CONSTRAINT fk_2 FOREIGN KEY (индекс_товара)
     REFERENCES  Товары (идентификатор_тов)
    go    

     

     

    21 ноября 2007 г. 11:26

Все ответы

  • 21 ноября 2007 г. 9:24
  • Формат ALTER TABLE хорошо описан в BOL, вот ссылка на формат CONSTAINTов

    http://msdn2.microsoft.com/ru-ru/library/ms188066.aspx

     

    В "PRIMARY KEY" "REFERENCES" не указывается, к тому же их проще создавать при создании таблице (по крайней мере в Вашем случае)

     

    Еще проще - создать таблицы в графической оболочке, а затем сгенерить SQL.

     

    Я бы написал примерно так:

     

    Образец кода

    /*     ACTION is CREATE Table Поставщики      */

    CREATE TABLE Поставщики(
           идентификатор_пост   int  NOT NULL PRIMARY KEY,
           название             nchar(20) NULL,
           адрес                nchar(50) NULL
    )
    go

    /*       ACTION is CREATE Table Товары      */

    CREATE TABLE Товары (
           идентификатор_тов     int NOT NULL PRIMARY KEY,
           Название              nchar(20)  NULL,
           категория_товара      nchar(20)  NULL
    )
    go

          
    /*      ACTION is CREATE Table Поставки      */

    CREATE TABLE Поставки (
           шифр_поставки         numeric(6,0) NOT NULL PRIMARY KEY ,
           индекс_поставщика     char(6)  NULL,
           индекс_товара         char(8)  NULL,
           единица_измерения     char (3) NULL,
           количество_товара     numeric (7,2)  NULL,
           цена_единицы_товара   numeric (8,2) NULL,
           дата_поставки         smalldatetime  NULL
    )
    go


    ALTER TABLE Поставки
           ADD CONSTRAINT fk_1 FOREIGN KEY (индекс_поставщика)
          REFERENCES Поставщики (идентификатор_пост)
    go

    ALTER TABLE Поставки
           ADD CONSTRAINT fk_2 FOREIGN KEY (индекс_товара)
     REFERENCES  Товары (идентификатор_тов)
    go    

     

     

    21 ноября 2007 г. 11:26