|
Foreign Key может быть Primary Key?
|
|||
---|---|---|---|
#18+
Всем привет! Подскажите, пожалуйста, правильно ли я понимаю понятия внешнего и внутреннего ключа. И если да, может ли быть внешний ключ в одной таблице первичным ключом в другой таблице? Приведу пример двух таблиц: 1. таблица с заказами, в которой есть 2 столбца: order_id (id заказа, он же primary key) и имя человека (firstname) 2. таблица с продуктами, которые купили, в которой есть 5 столбцов: order_product_id (id заказов продукта, он же primary key), order_id (id заказа), product_id (id продукта), name (наименование товара) и price (цена товара). И получается я могу объединить данные двух таблиц по ключу order_id (id заказа), только в данном случае в таблице №2 он является Foreign Key, а в первой - это Primary Key. Верны ли рассуждения и не запутался ли я в терминологии? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 00:00 |
|
Foreign Key может быть Primary Key?
|
|||
---|---|---|---|
#18+
karnager, все верно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 00:04 |
|
Foreign Key может быть Primary Key?
|
|||
---|---|---|---|
#18+
Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 00:05 |
|
Foreign Key может быть Primary Key?
|
|||
---|---|---|---|
#18+
karnager получается я могу объединить данные двух таблиц по ключу order_id (id заказа), только в данном случае в таблице №2 он является Foreign Key, а в первой - это Primary Key. Primary key - это структура внутри структуры таблицы, плюс дополнительные правила для подсистемы контроля данных. Foreign key - это вообще не структура, а только правило для подсистемы контроля данных. Для эффективной работы подсистемы контроля требуется, чтобы выражение во внешней таблице, на которую ссылается Foreign key, было префиксом какого-то индекса. При создании FK наличие такого индекса проверяется, и при отсутствии FK не создаётся. Хотя после создания индекс можно удалить без последствий, если не считать резкого замедления процесса контроля, ведь теперь для проверки придётся шерстить всю таблицу. Так что 1) Связи между тем, что где чем является, и тем, чем оно может быть, тут у Вас вообще никакой нет. Кроме факта, что FK будет успешно создан по причине наличия подходящего индекса в таблице, на которую создаётся ссылка (при пустой таблице заказов или при валидных данных в ней). 2) Никакого фактического объединения данных не происходит - при создании FK Вы просто создаёте немедленно и безусловно применяемое правило автоматической проверки данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 07:53 |
|
Foreign Key может быть Primary Key?
|
|||
---|---|---|---|
#18+
karnager Всем привет! Подскажите, пожалуйста, правильно ли я понимаю понятия внешнего и внутреннего ключа. Нет внутренних ключей. Это называется "первичный ключ". автор И если да, может ли быть внешний ключ в одной таблице первичным ключом в другой таблице? Внешний ключ в дочерней таблице всегда является первичным ключём в родительской таблице . (ну, почти всегда, может быть ещё альтернативным ключём, unique, но так делают очень-очень редко.) Внешний ключ в дочерней таблице может является первичным ключём в дочерней таблице , может является частью первичного ключа в дочерней таблице , может может быть просто атрибутом в дочерней таблице , ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 12:35 |
|
Foreign Key может быть Primary Key?
|
|||
---|---|---|---|
#18+
MasterZiv Внешний ключ в дочерней таблице может является первичным ключём в дочерней таблице , может является частью первичного ключа в дочерней таблице , может может быть просто атрибутом в дочерней таблице , Внешний ключ - это, блин, правило !!! так что он в принципе не может быть частью первичного ключа или атрибутом. MasterZiv всегда является первичным ключём в родительской таблице . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2021, 18:17 |
|
|
start [/forum/topic.php?fid=47&msg=40064593&tid=1828102]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 237ms |
total: | 505ms |
0 / 0 |