Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Primary Key & Foreign Key, Различие между ними 
V
    Опции темы
Berliner
Дата 9.3.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Встал вопрос о работе с базой. Хотелось бы узнать в чем разница между
работой с Primary Key и Foreign Key. Primary вроде как ключ уникальный для связи с другими таблицами? А Foreign Key зачем тогда? Пояните пожалуста.

Это сообщение отредактировал(а) Berliner - 9.3.2006, 12:34
PM   Вверх
batigoal
Дата 9.3.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 1
Всего: 151



Primary Key - уникальное значение в твоей таблице, по которому ты сможешь однозначно идентифицировать запись.
Foreign Key - значение, с помощью которого ты сможешь сослаться на запись другой таблицы (это значение не обязано быть уникальным).
Добавлено @ 12:53
Часто Foreign Key одной таблицы ссылается на Primary Key другой.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Berliner
Дата 9.3.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Насколько я понял под ForeignKey понимается взаимосвязь между таблицами например у себя Sybase ASA я клацаю по ForeignKey(ht1 например) и две колонки PrimaryKey s_name и ForeignKey s_name(если я че-то не перепутал). Как это понимать - получается ForeignKey єто взаимосвязь? Внутри ForignKey нужно прописывать поля таблиц?
PM   Вверх
Akina
Дата 9.3.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



Внешний ключ - это просто указание на поле, часть поля или комбинацию (частей) нескольких полей, которые дают некое содержимое. Это содержимое используется для связи с другой таблицей, где также из поля или нескольких полей составляется точно того же содержания значение. Связанными являются те записи этих таблиц, у которых эти значения совпадают.

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Vit
Дата 9.3.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Пример:

Таблица 1 - ставки
ID Должность
------------------
1 Лаборант
2 Секретарь
3 Инженер


Таблица 2 - Сотрудники
ID Ставка ФИО
1 1 Иванов
2 1 Петров
3 2 Сидоров
4 3 Федоров
4 3 Смирнов


Поля ID однозначно определяют запись - и по ним надо ставить первичный ключ
А вот поле ставка реально соединяет 2 таблицы, и Foreign Key Надо ставить на
ставки.ID+Сотрудники.Ставка





--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Berliner
Дата 13.3.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



Спасиб за пример. Подскажите пожалуста а что такое ссылки(References)

и какое основное отличие ссылки от внешнего ключа?

Создавать таблицы примерно нужно так
Код
create table wages (
  id  numeric not null pimary key refernces workers(salary ),  -- тут делаю ссылку на salary из таблицы workers
  position varchar(30) not null
)


Код
create table workers (
  id numeric not null,
  salary  money not null,  -- вот тут не знаю правильно ли тут ничего не надо ставить? или надо увязать?
  Name varchar(50) not null  
)

PM   Вверх
chief39
Дата 13.3.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 8
Всего: 77



Цитата(Berliner @ 13.3.2006, 18:22 Найти цитируемый пост)
и какое основное отличие ссылки от внешнего ключа?

Это одно и то же smile

Код

create table wages(
   id numeric not null pimary key , 
   position varchar(30) not null
)

create table workers(
   id numeric not null,
   salary numeric not null, 
   Name varchar(50) not null,
   foreign key salary refernces wages(id )



Ссылается воркерс на зарплату. Причём свои внешним ключом на праймари ки зарплаты.
Добавлено @ 18:29
Ты почему Дэйта и прочих дядек не читаешь, а? smile


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Berliner
Дата 13.3.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 18.5.2005

Репутация: нет
Всего: 2



ок спасиб


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0764 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.