Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30


К сообщению приложен файл. Размер - 61Kb
18 янв 18, 00:12    [21115161]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
belu4ano-kg,

Джедаи туманят восприятие Темной Стороны Силы. Холокроны Темной Стороны помогут восстановить баланс в Силе, юная падаванша. Внешние ключи принесут мир, покой и справедливость в Галактику.
18 янв 18, 00:47    [21115184]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36972
belu4ano-kg
ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?
Исправить можно включив режим адекватности: предоставить выполняемый скрипт (а не какой-то левый скриншот) и достоверный, а не сочиненный или пересказанный, текст ошибки.
18 янв 18, 01:08    [21115195]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
Гавриленко Сергей Алексеевич,

+
create database test
go 
use [ts2]
go



	   --4--


		     create table education

   ( id_education int not null primary key,
     level_of_education varchar (500) not null,
	 qualification_improvement varchar (500) not null,
	  specialization varchar (500) not null,

	  )

	  --3.1--
	   create table Surcharge
   (    id_surcharge int not null primary key ,
        name_surcharge varchar (500) not null,
	      amount_surcharge varchar (500) not null,
	       ) ;

	 --3--
   create table salary (
   id_salary int not null primary key ,
   id_surcharge int not null foreign key references Surcharge (id_surcharge)  ,
   id_position int not null foreign key references Position (id_position), 
    id_employee int not null foreign key references personal_information (id_employee),		
   number_card int not null,
     secondment int not null,
	   vacation int not null,
	     grace int not null,
		   bonus int not null,
		    amendment_to_act varchar (100) not null,
                
     ); 

	 --2.3--

	  create table vacancy
   (   id_vacancy int not null primary key,
        Duties varchar (500) not null,
		 requirements varchar (500) not null,
	     open_position  varchar (500) not null,
	      ) 	

		--2.2.1-- 

		create table work_expirience
		(
		id_work_experience  int  not null primary key,
		 seniority int not null, 
		 general_expirience int not null
		)

 --2.2-- 

 
  create table working_activity
   ( id_work_activity int not null primary key,
     number_decree varchar (500) not null,
	id_work_experience  int  not null foreign key references work_expirience (id_work_experience) ,
	date_of_admission date  not null,
	date_of_dismissal date not null,
    promotion varchar (500) not null,
	 )

--2.1--

	 create table position
   ( id_position int not null primary key,
     id_salary int not null foreign key references salary(id_salary),

    position_name varchar (500) not null,
	 )

--2--
   create table department
  ( id_department INT NOT NULL primary key,
    id_position int not null foreign key references position (id_position) , 
	id_work_activity int not null foreign key references working_activity (id_work_activity) ,
	id_vacancy int  not null foreign key references vacancy(id_vacancy),
    department_name varchar (500) not null,
	 department_phone varchar (500) not null,
	 department_head varchar (500) not null,
	  )

create table employee

(    id_employee INT NOT NULL primary key, 
     id_department INT NOT NULL foreign key references  department (id_department),
     id_salary int not null foreign key references salary (id_salary) ,
     id_education INT NOT NULL foreign key references education (id_education) ,
    

  ) ;

	  --1--
	 
    create table personal_information 

   ( id_employee int not null foreign key references employee (id_employee) ,
     id_presence_of_children int not null Primary key,
     Surname varchar (500) not null,
	 Name varchar (500) not null,
	 Patronymic varchar (100) not null,
	 Age date  not null,
	 Home_address varchar (500) not null,
	 Phone_number int  not null,
	 marital_status varchar (500) not null,
	 passport_data varchar (500) not null,
	 education varchar (500) not null,
	 citizenship varchar (500) not null,
	 gender varchar (500) not null,

    )

  --1.1--
    create table presence_of_children 
   ( id_presence_of_children  int not null foreign key references personal_information (id_presence_of_children), 
    amount_of_adult int not null,
	number_of_minor_child int not null,
	total_quantity int not null,
	)


Сообщение было отредактировано: 18 янв 18, 13:24
18 янв 18, 11:03    [21115825]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
Кусочек
Guest
create database test go  use [ts2] go


Вы сначала пытаетесь создать базу test, затем переключаете контекст на базу ts2 и начинаете в ней что-то делать.

Вы уверены, что Вам именно это и нужно?

Где оригинал текста ошибки?
18 янв 18, 11:10    [21115853]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
belu4ano-kg,
копи-паста зло.

-- сравни
create table work_expirience
(
id_work_experience int not null primary key,
seniority int not null, 
general_expirience int not null
)
-- и
create table work_expirience
(
d_work_experience int not null foreign key references work_expirience (id_work_experience) ,
seniority int not null, 
general_expirience int not null
)
18 янв 18, 11:10    [21115854]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
belu4ano-kg
create database test
go
use [ts2]
go

Ничего, что вы создаете одну базу, а переходите для выполнения скриптов в другую?
18 янв 18, 11:10    [21115858]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
Кусочек,

Сообщение 1767, уровень 16, состояние 0, строка 27
Внешний ключ "FK__salary__id_posit__15502E78" ссылается на недопустимую таблицу "Position"
18 янв 18, 11:18    [21115885]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
belu4ano-kg
Кусочек,

Сообщение 1767, уровень 16, состояние 0, строка 27
Внешний ключ "FK__salary__id_posit__15502E78" ссылается на недопустимую таблицу "Position"
Вас это удивляет?
Вы создаёте таблицу salary с ссылкой на таблицу Position, а таблицы Position в этот момент ещё нет, она в скрипте создаётся позже.
Просто читайте сообщения об ошибках, там эе всё написано простым английским языком.

Я уж не говорю про разные регистры - Position и position, некрасиво, и может приводить к ошибкам.
18 янв 18, 11:26    [21115908]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
Minamoto,

плохо конешн .
изменено
18 янв 18, 11:28    [21115914]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
alexeyvg
belu4ano-kg
Кусочек,

Сообщение 1767, уровень 16, состояние 0, строка 27
Внешний ключ "FK__salary__id_posit__15502E78" ссылается на недопустимую таблицу "Position"
Вас это удивляет?
Вы создаёте таблицу salary с ссылкой на таблицу Position, а таблицы Position в этот момент ещё нет, она в скрипте создаётся позже.
Просто читайте сообщения об ошибках, там эе всё написано простым английским языком.

Я уж не говорю про разные регистры - Position и position, некрасиво, и может приводить к ошибкам.

Мало того, Position еще сама по себе ссылается на Salary, т.е. мы тут видим циклические внешние ключи.
Имхо, проблема в плохо спроектированной базе, нужно переделывать структуру, а не подсказывать, как такое выполнить. Если уж очень хочется - нужно вынести код создания внешних ключей в отдельные запросы, и создавать их после того, как обе таблицы существуют. Код для создания внешнего ключа:

alter table dbo.working_activity add constraint FK_working_activity foreign key (id_work_experience) references dbo.work_expirience (id_work_experience);
18 янв 18, 11:36    [21115944]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
Minamoto,
тем не менее спасибо за подсказку.
18 янв 18, 11:55    [21116002]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7757
belu4ano-kg,

автор не понимает, что такое ключ и внешний ключ... Учить тему до просветления.
18 янв 18, 12:12    [21116053]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Minamoto
Мало того, Position еще сама по себе ссылается на Salary, т.е. мы тут видим циклические внешние ключи
В чём заключается "цикличность"?
И в чём криминал показанных FOREIGN KEY в Position и Salary?
Если туда прописать каскадные удаления, например, то да, сервер скорее всего отругается и не разрешит.
А так - какое ему дело до какой-то "цикличности"! Лишь бы констрейнт выполнялся.

Другое дело, что ссылающиеся поля в обеих объявлены NOT NULL.
Из-за этого вставить записи в эти таблицы никогда не получится.
18 янв 18, 12:40    [21116143]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
iap
Minamoto
Мало того, Position еще сама по себе ссылается на Salary, т.е. мы тут видим циклические внешние ключи
В чём заключается "цикличность"?
И в чём криминал показанных FOREIGN KEY в Position и Salary?
Если туда прописать каскадные удаления, например, то да, сервер скорее всего отругается и не разрешит.
А так - какое ему дело до какой-то "цикличности"! Лишь бы констрейнт выполнялся.

Другое дело, что ссылающиеся поля в обеих объявлены NOT NULL.
Из-за этого вставить записи в эти таблицы никогда не получится.
Цикличность как раз в "Position ссылается на Salary, а Salary на Position"

Никто не говорит, что это недопустимо, но, во первых, нужно хотя бы одно поле делать NOT NULL, во вторых, создавать констрейны отдельно.

Ну и я бы посмотрел на модель и бизнес-логику, для которой она создана.

Циклические ссылки хоть и возможны, но должны вызывать подозрения, так сказать, повод остановиться и подумать, в этом Minamoto совершенно прав.
18 янв 18, 12:47    [21116172]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
iap,

Лог-ая модель построено чтобы на position могли ссылаться таблица surcharge так и vacancy

К сообщению приложен файл. Размер - 87Kb
18 янв 18, 15:37    [21117018]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
belu4ano-kg
Member

Откуда:
Сообщений: 30
belu4ano-kg,

по идеи * но как результат показывает что нужно доработки
18 янв 18, 15:41    [21117032]     Ответить | Цитировать Сообщить модератору
 Re: ошибка : отсутствует первичные ключи ссылающих на внешние. Как можно исправить ?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4727
Andy_OLAP
belu4ano-kg,

Джедаи туманят восприятие Темной Стороны Силы. Холокроны Темной Стороны помогут восстановить баланс в Силе, юная падаванша. Внешние ключи принесут мир, покой и справедливость в Галактику.


Лишь настоящий мастер джедай с благословения магистра разрабатывает базы без внешних ключей. Ибо в таких базах кроется скорость и мощь темной силы.
18 янв 18, 16:47    [21117410]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить