Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Если у меня есть две таблицы, в которых есть одинаковое поле char(10) Я хочу сделать связь таблиц. Но не получается - пишет, что в первичной таблице поле не является IDENTITY. Но на тип char IDENTITY не устанавливается. Не подскажите ли чайнику, в чем тут дело? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2001, 14:05 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Связать можно! А вот char не может быть IDENTITY, только decimal, int, numeric, smallint, bigint, или tinyint ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2001, 14:13 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Может быть вы путаете - поле в родительской таблицы толжно быть PRIMARY KEY-ем и UNIQUE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2001, 14:21 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Неправильная постановка задачи. Когдв вяжуться две таблицы, покрайней мере у одной из них,поле должно быть первичным ключем. Если у обеих таблиц эти поля первичные ключи, тогда заводиться специальная связная таблица, которая реализует связь многие-ко-многим. В принципе, использование поля типа char, в качестве первичного ключа - дурной тон, обычно как следствие непродуманного перехода с dbf формата. Правильнее запись в таблице идентифицировать с помощью двоичного ID, который и использовать для организации связи. Ну и при необходимости его и IDENTITY можно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2001, 02:27 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Я что такое СВЯЗЬ таблиц??? И при запуске какого скрипта сервер рагуется на отсутсвие Identity. Что-то я не помню чтобы это свойство где-нибудь требовалось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2001, 09:15 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
TO petr13: И еще один вопрос, если не сложно - что такое двоичный ID и как на него ставится Identity? Может не совсем по теме, но очень хочется получить ответ, а про такую штуку раньше не слышал . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2001, 09:20 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Однозначно можно. Сергей, чтобы было проще тебе помочь, приведи код, которым ты пытаешься создать Foreign Key и результаты sp_help для обеих таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2001, 21:44 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Общая схема такая (могут быть вариации): CREATE TABLE MyTable ( -- Создаем таблицу - справочник, например ID int IDENTITY(1,1), -- это знаменитый, двоичный ID, еще и -- IDENTITY ShortName varchar(10) NULL, -- это пользовательское имя Notes varchar(120) NULL -- это например коментарий ) go ALTER TABLE MyTable ADD PRIMARY KEY (ID) -- делаем ID - первичным ключем go CREATE TABLE List ( -- а это таблица, которая будет связана со справочником,- -- отношением 1 ко многим IDRecord int NOT NULL, -- а это ID, для идентификации записей в этой- -- таблице ID int NOT NULL, -- это будущая связь Filed1 int NULL ) go ALTER TABLE List ADD PRIMARY KEY (IDRecord) -- делаем первичный ключ go ALTER TABLE List ADD FOREIGN KEY (ID) REFERENCES MyTable -- вяжем таблицы go Уффф !!! вроде все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2001, 00:17 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
2 Petr13 В принципе, использование поля типа char, в качестве первичного ключа - дурной тон, обычно как следствие непродуманного перехода с dbf формата. Причем здесь дурной тон и dbf формат? Спор "Естественные ключи vs Сурогатные ключи" продолжается до сих пор, и понятное дело, что у приверженцев естественных ключей тип ключевого поля может быть каким угодно. ID int IDENTITY(1,1), -- это знаменитый, двоичный ID, еще и -- IDENTITY Что такое "Знаменитый двоичный ID" я например так и не понял, в Вашем коде я вижу лишь обычный инт объявленный как identity с автоинкрементом. 2 Сергей С Ваша ситуация непонятна, identity никак не должно влиять на возможность связывания двух таблиц, приведите хотя бы скрипты создания Ваших таблиц (я имею в виду их структуру) скрипты можно снят в ЕМ по правой кнопке мыши. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2001, 03:30 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Genady По поводу dbf, использование сурогатных ключей идет оттуда. Решительно нет никакой причины, при использовании SQL технологии к их использованию. Это менее эффективно, например при кластеризации индекса он будет занимать большее место. Кроме того это идеологически неправильно. В свое время мне пришлось разгребать, последствия такого непродуманнго шага. В таблице контрагентов был принят первияный ключ char(4), после того, как оказалось, что 9999 значений мало, ситуация стала тупиковой. Если бы использовался ID, и таким образом физический и логический ключ были разделены, то этой бы проблеммы просто не возникло. Я бы расматривал этот атрибут как пользовательский номер, и задал бы ему размер чуть побольше, и в сущности мне было всеравно, какую семантику вкладывали в структуру этого ключа пользователи. Скажем по таблице договоров было приянто именно такое решение, пользовательский номер договора был объявлен как varchar(16) и за полгода 3 раза менял структуру, размер и семантику, что практически никак не сказалось на БД. Кореекировалось через один update. Насчет знаменитого ID, ну да, это оно и есть. Юмор у меня такой. И написано было в контексте разговора, мне забавным показалось, что ID воспринялось как некая внутрисистемная возможность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2001, 00:23 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
2 petr13 Ну, уважаемый Вы меня так совсем запутаете >По поводу dbf, использование сурогатных ключей идет оттуда. Да причем здесь dbf?? >Решительно нет никакой причины, при использовании SQL технологии к их использованию. Тем не менее Вы предлагаете именно суррогатный ключ, разве нет? Я например сторонник суррогатных ключей, но данный спор к вопросу не имеет никакого отношения. >бы использовался ID, и таким образом физический и логический ключ были разделены, то этой бы проблеммы просто не возникло. Уж объясните мне глупому, что такое этот Ваш ID? И чем отличается логический ключ от физического. Приведенный Вами пример это всего лишь ошибка проектирования, которая не имеет никакого отношения к тому какой ключ выбирать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2001, 05:19 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, (причем дико),произошла путаница в терминалогии. Мне термин "суррогатный ключ" не нравиться, я под ним понимал другое. Давайте, что бы быть точнее я изложу терминологию к которой я привык. Физический ключ - это ключевое поле, которое однозначно идентифицирует запись в таблице, т.е. это primary key. Логический ключ - это атрибут с помощью которого осуществляется прикладная идентификация моделируемого объекта. Например моделируется объект "Договор", и есть такая прикладная идентификация договора как "Номер договора" (кстати прикладная идентификация не обязательно уникальна, и возможно несколько систем прикладной идентификации для того, или иного прикладного объекта. Например входной и выходной номер документа. В принципе понятие договор может моделироваться несколькими таблицами, и это правильно, ну например как последствие нормализации. Схема такая, любой моделируемый объект мы идентифицируем физическим ключем ID, который есть двоичное число (не обязательно целое, могут быть и урезанные варианты). Его можно сделать Identity, хотя я не сторонник этого. Такие ключи, логично применять в журналах прикладной аудитентификации. Этот ID есть внутри системная фишка, посягать на которую прикладники не могут, через нее мы вяжем прикладные объекты. Для пользовательской идентификации существуют логические ключи, их можно делать char, они могут иметь сложную структуру, разбиты на зоны, их можно индексировать, они не обязательно уникальны, их может быть несколько. Это и есть разделение физического ключа, на который мы возлагаем функции обеспечения целосности и физической идентификации. И логического ключа, на который мы возлагаем задачу прикладной идентификации и все. Насчет dbf, это моя старая головная боль, извиняюсь, что выплескнул. Совсем недавний пример - делают таблице пользователей, в качестве первичного ключа - используют его login. И в журналы его пихают, естественно. Ну не зная я почему фоксисты так делают. Может быть и dbf здесь не причем, но исключения попадаются крайне редко. Как только бывший dbf-ник начинает проектировать базу данных, так и понеслось. иметь внутреннюю структуру, быть инддексированны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2001, 09:45 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
2 petr13 Нда, довольно странная у Вас терминология Вобще, когда говорят о проектировании БД используют обычно термины реляционной теории, все кто знаком с этой теорией в этом случае хорошо понимают друг друга и у них не возникает путаницы в терминах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2001, 10:35 |
|
||
|
Можно ли связать две таблицы по полю типа char?
|
|||
|---|---|---|---|
|
#18+
Genady Вспомнил я эту дискуссию по поводу суррогатных и интелектуальных ключей. Ну не нравится мне термины суррогатный и интелектуальный ключ. По моему они суть дела затеняют. Получается что суррогатный, это какой то не настоящий, плохой, а интелектуальный он ого го, крутой в общем. Мне кажется термины логический и физический ключ более точно отражают существо дела. Во всяком случае исчезает противопоставление этих механизмлв. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2001, 01:04 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32013513&tid=1825635]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 437ms |

| 0 / 0 |
