Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 677
1

Не привязывается внешний ключ при одинаковых по типу столбиках

19.12.2017, 11:31. Просмотров 952. Ответов 16
Метки нет (Все метки)

Как хорошо видно на большом скриншоте, у столбиков которые я хочу соединить одинаковый по всем параметрам тип. Но операция завершается ошибкой.
Что-то я не так делаю?
0
Миниатюры
Не привязывается внешний ключ при одинаковых по типу столбиках   Не привязывается внешний ключ при одинаковых по типу столбиках   Не привязывается внешний ключ при одинаковых по типу столбиках  

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2017, 11:31
Ответы с готовыми решениями:

Внешний ключ - это простой ключ?
Что это такое? Я не понимать. Как простой ключ в тоже время является простым. Что за магия?

Не привязывается сокет при создании сервера
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h>...

внешний ключ
есть две таблицы CREATE TABLE STAFF (ID integer NOT NULL PRIMARY KEY, lastName varchar...

Внешний ключ
Не могу создать внешней ключ, помогите решить проблему: CREATE TABLE STAFF (staff_no int...

16
2758 / 1740 / 607
Регистрация: 02.06.2013
Сообщений: 4,304
19.12.2017, 11:38 2
Цитата Сообщение от SrgKord Посмотреть сообщение
у столбиков которые я хочу соединить одинаковый по всем параметрам тип
Угу. У одного nchar(50), у другого nchar(30).
0
24 / 23 / 7
Регистрация: 22.08.2017
Сообщений: 130
19.12.2017, 16:09 3
И очень, конечно, мудро делать ключ на nchar(50)...
0
1470 / 1039 / 146
Регистрация: 23.07.2010
Сообщений: 5,752
19.12.2017, 16:34 4
Цитата Сообщение от AsTerra Посмотреть сообщение
И очень, конечно, мудро делать ключ на nchar(50)...
и что благородный дон имеет против такого типа ключа?
0
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 677
21.12.2017, 09:33  [ТС] 5
Цитата Сообщение от invm Посмотреть сообщение
Угу. У одного nchar(50), у другого nchar(30).
Не согласен, в обоих случаях явно указано nchar(50)

Цитата Сообщение от AsTerra Посмотреть сообщение
И очень, конечно, мудро делать ключ на nchar(50)...
Расскажите, как правильно делать тогда?
Название организации просто не предполагается повторять, вот я и решил ключем сделать
0
2758 / 1740 / 607
Регистрация: 02.06.2013
Сообщений: 4,304
21.12.2017, 11:04 6
Цитата Сообщение от SrgKord Посмотреть сообщение
Не согласен, в обоих случаях явно указано nchar(50)
Попробуйте еще раз внимательно изучить собственную картинку на предмет выяснения где указано nchar(50), а где nchar(30).
0
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 677
22.12.2017, 05:12  [ТС] 7
Цитата Сообщение от invm Посмотреть сообщение
Попробуйте еще раз внимательно изучить собственную картинку на предмет выяснения где указано nchar(50), а где nchar(30).
Точно, сам запутался. В обоих случаях, где красная точка стоит nchar(50), но в одном случае может быть Null, в другом - нет.

Добавлено через 1 минуту
Да и вообще, не там я точку поставил в нижней картинке, надо было на ключе CompID сделать, сразу бы заметил
0
19 / 34 / 11
Регистрация: 09.10.2010
Сообщений: 421
24.12.2017, 12:28 8
Расскажите, как правильно делать тогда?
Ежели у вас есть таблица Companies, не логично ли вместо PersonCompany сделать PersonCompanyId? И индексы будут легче, если понадобятся.
0
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 677
26.12.2017, 09:38  [ТС] 9
Цитата Сообщение от ai-zer Посмотреть сообщение
Ежели у вас есть таблица Companies, не логично ли вместо PersonCompany сделать PersonCompanyId? И индексы будут легче, если понадобятся.
Для меня пока загадка, какое значение будет возвращаться, если внешний ключ таблицы А будет ссылаться на первичный ключ таблицы Б. Я боюсь, что получится в запросе нечно вроде:

Добавлено через 9 минут
PersonIDPersonLoginPersonNamePersonCompanyID
1ManchinLNМанчин12
2SveridovLPСверидов25
3SahipovBVСахипов34
0
85 / 67 / 25
Регистрация: 09.10.2017
Сообщений: 199
26.12.2017, 13:22 10
Здравствуйте!

У выделенных столбцов на большом скриншоте один тип и одна длина:
dbo.Persons.PersonCompany
dbo.Companies.CompAddr
nchar(50)

но ошибка выдаётся по поводу другого столбца (первый скриншот):
dbo.Companies.CompName

и там длина действительно 30
это видно на большом скриншоте
0
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 677
26.12.2017, 13:26  [ТС] 11
TinSemenova, благодарю, я заметил, что сам накосячил. Если разбираетесь, подскажите, внешний ключ должен ссылаться на первичный ключ или на то поле, из которого данные нам нужны?
0
1470 / 1039 / 146
Регистрация: 23.07.2010
Сообщений: 5,752
26.12.2017, 13:29 12
Цитата Сообщение от SrgKord Посмотреть сообщение
внешний ключ должен ссылаться на первичный ключ или на то поле, из которого данные нам нужны?
переведите

Добавлено через 37 секунд
есть подозрение что есть полное непонимание FK
0
987 / 687 / 157
Регистрация: 27.11.2009
Сообщений: 2,081
26.12.2017, 14:12 13
Цитата Сообщение от SrgKord Посмотреть сообщение
TinSemenova, благодарю, я заметил, что сам накосячил. Если разбираетесь, подскажите, внешний ключ должен ссылаться на первичный ключ или на то поле, из которого данные нам нужны?
Он должен ссылаться на поле или группу полей, по которым построен уникальный индекс.
Создание первичного ключа или уникального констрейнта приводит к созданию уникального индекса автоматически.
0
85 / 67 / 25
Регистрация: 09.10.2017
Сообщений: 199
26.12.2017, 20:49 14
Здравствуйте!

"Внешний ключ (FK) — это столбец или сочетание столбцов, которое применяется для принудительного установления связи между данными в двух таблицах. Внешний ключ можно создать, определив ограничение FOREIGN KEY при создании или изменении таблицы.Ограничение FOREIGN KEY не обязательно должно быть связано с ограничением PRIMARY KEY в другой таблице."
0
1470 / 1039 / 146
Регистрация: 23.07.2010
Сообщений: 5,752
27.12.2017, 08:55 15
а я-то глюпый всегда свято верил в то, что FK нужен для обеспечения ссылочной целостности. Фу мне..
0
19 / 34 / 11
Регистрация: 09.10.2010
Сообщений: 421
27.12.2017, 11:20 16
Цитата Сообщение от SrgKord Посмотреть сообщение
Я боюсь, что получится в запросе нечно вроде:
SrgKord, не бойтесь, почитайте про join, представления.
0
47 / 29 / 2
Регистрация: 14.02.2013
Сообщений: 677
28.12.2017, 05:07  [ТС] 17
pincet, iap, TinSemenova, я, пожалуй, ещё теорию почитаю.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2017, 05:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Внешний ключ
Здравствуйте. Существует некоторая база данных по учету запасов товаров. Возникла проблема со...

Внешний ключ
Есть две таблицы User и Konsultachii <?php include_once "connection.php"; session_start();...

Внешний ключ
Имеются 3 таблицы: CREATE TABLE usr ( usr_id int AUTO_INCREMENT NOT NULL, ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.