IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   связи между таблицами в mysql (http://www.imho.ws/showthread.php?t=22802)

dthnth 19.02.2003 23:19

связи между таблицами в mysql
 
народ, подскажите пожалуйста такую вещь.
для того, чтобы сделать в mysql связь между двумя таблицами по уникальному идентификатору id, достаточно ли в одной таблице сделать id полем primary key, а в другой таблицу просто занести поле id ? станет ли он автоматически полем foreign key, ? или же если я хочу связь один-к-одному, можно ли сделать в двух этих таблицах поле id - primary key, и будет ли это сразу внешней связью ?
или как можно сделать эту самую связь, а то mysql ругается постоянно на слово foreign key ?

dimonk 20.02.2003 00:15

сразу ничего не делается :biggrin: в принципе, даже не обязательно объявлять поле ключом, связь можно сделать на уровне sql-запроса.

dthnth 20.02.2003 01:48

ну это мне понятно.
но это же связь всего лишь на тот момент, на который выполняется этот sql запрос. а дальше переменная обнуляется, и все. опять таблицы все просто разные.
а мне бы хотелось чтобы эти связи были на веки вечные как бы, так как это делается в Access. можно ли сделать так ? или все таки этих sql запросов в принципе будет достаточно для связи одномоментной ?

RaZEr 20.02.2003 04:24

Это ты нас спрашиваешь ? Ты бы еще нас спросил хорошо ли у тебя плита вписывается в кухонный гарнитур .

dthnth 20.02.2003 04:42

вообще то я спрашиваю, как сделать внешний ключ в таблицах mysql. непосредственно синтаксисом sql. и помоему ничего лишнего другого.
извините, если кто обиделся.

RaZEr 20.02.2003 04:50

Какой еще внешний ключ ;) В MySQL единственный способ связать две таблицы это LEFT JOIN .

dimonk 20.02.2003 05:40

или перейти на sybase или там ms :gigi:

RaZEr 22.02.2003 04:10

Ага ... или Oracle ... чего размениваться то ;)

Gike 23.02.2003 02:11

RaZEr
Можно краткую информацию о LEFT JOIN?
И если нетрудно пример.....

RaZEr 23.02.2003 03:08

RTFM

Gike 23.02.2003 03:32

RaZEr
Извини, не понял....

RaZEr 23.02.2003 03:49

Read The Functions Manual

Aeon 23.02.2003 16:28

<offtopic>
а, так F теперь расшифровывается как Function? надо-же :biggrin: в моё время это расшифровывалось гораздо грубее :)
</offtopic>

Gike 23.02.2003 22:33

спасибо....

TheSig 27.02.2003 18:21

Цитата:

Как писал RaZEr
Какой еще внешний ключ ;) В MySQL единственный способ связать две таблицы это LEFT JOIN .
Нмм.. Проще делать таблици типа InnoDB там какраз есть воможность FOREIGN KEY. И соответственно никакого гимора - пущай сама DB заботится далее :)

Bek 10.03.2003 01:04

TheSig
точно :up:

http://www.mysql.com/doc/en/SEC457.html

FractalizeR 14.03.2003 17:02

Постараюсь обобщить все вышесказанное.
1. Объединение таблиц по JOIN - действует только на результирующий набор оператора SQL SELECT. Это, если можно так выразиться, виртуальное объединение.
2. Для физического объединения нужно использовать FOREIGN KEY. Документацию по синтаксису можно найти на сайте www.mysql.com. Кажется выше была указана ссылка на соответствующий раздел.
3. FOREIGN KEY в MySQL работатает только в таблицах типа InnoDB. Для работы с этим типом таблиц нужно иметь конфигурацию MySQL Max. Для запуска InnoDB нужно добавить некоторые параметры в конфигурационный файл my.ini (или в my.cnf).
4. Таблицу можно преобразовать в InnoDB оператором ALTER TABLE xxx TYPE=INNODB.


Часовой пояс GMT +4, время: 11:48.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.