За последние 24 часа нас посетили 16216 программистов и 1666 роботов. Сейчас ищут 935 программистов ...

Вопрос по PRIMARY

Тема в разделе "MySQL", создана пользователем bizovo, 25 мар 2009.

  1. bizovo

    bizovo Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    Есть таблица "А" с полем id - это поле имеет ип primary (первичный ключ)
    Есть таблица "В" c полем name - это поле является внешним ключем поля id таблицы А
    Назначение первичного ключа нужно для связанности.
    Если я правильно понимаю, то если я привяжу два поля из разных таблиц так как я описал выше, то изменив id у меня должны поменяться все name
    Вопрос:
    как в phpmyadmin мне связать поля id и name ?

    версия phpMyAdmin 2.6.0-rc1
     
  2. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Ответ: нет
     
  3. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Версия phpmyadmin ни какой роли не играет, просто нужно выполнить запрос к MySql серверу.
    И простой пример
    [sql]CREATE TABLE `qq1` (
    `id` int(38) NOT NULL,
    PRIMARY KEY (`id`)
    );

    CREATE TABLE `qq2` (
    `name` int(38) NOT NULL,
    FOREIGN KEY (name) REFERENCES qq1(id)
    )[/sql]
     
  4. bizovo

    bizovo Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    Спасибо за пример.
    Тогда у меня возникает вопрос следом, смысл мне привязывать поля как показано в примере.
    Ведь я могу и без этой привязки вытащить поле name по условию where.
    вот на примере:

    таблица qq1 (два поля: id(PK) и mark) - набор марок авто:
    id mark
    1 toyota
    2 nissan
    ...............
    9 honda

    таблица qq2 (три пля: id, id_mark(FK), model) - набор моделей
    id id_mark model
    1 1 Allex
    2 2 AD
    ..................................
    6 9 Civic

    Вопрос: Для чего мне создавать PK и FK? Просто не могу понять что мне это даст, ускорит работу?
    Ведь зная id_mark и id таблицы qq2 я спокойно могу вытащить model вот таким запросом:
    SELECT model
    FROM qq2
    WHERE id=1 AND id_mark=1
    Естественно зная id_mark я могу вытащить буквенное значание марки из таблицы qq1

    Вот так я размышляю и не могу понять зачем мне создавать первичные и внешние ключи.
    Назначение индексов и уникальных полей мне ясно. Вот осталось разобраться как правильно пользоваться PK и FK
     
  5. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    :shock:
    Читаем литературу и думаем!!! Курс лекций я здесь читать не намерен.
     
  6. bizovo

    bizovo Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    Доброго времени суток!
    каким запросом можно создать внешний ключ в уже существующей таблице?
    Как его создавать при создании таблицы уже написали.
     
  7. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  8. bizovo

    bizovo Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    спасибо, будем грызть гранит науки
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Там его недолго грызть.

    внешний ключ называется FOREIGN KEY
     
  10. bizovo

    bizovo Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    да енто я в курсе, главное зацепку дали на ALTER, тут уже выведаю с чем едят.
    Я это, с английским не совсем. По русски парой долго перевариваю. Ну да ладно, вы на самом деле мне помогли.
     
  11. bizovo

    bizovo Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    да гранит мне чуть чуть поддался
    ALTER TABLE tablename ADD FOREIGN KEY (mark) REFERENCES tablename ( id )
     
  12. bizovo

    bizovo Активный пользователь

    С нами с:
    25 мар 2009
    Сообщения:
    42
    Симпатии:
    0
    Запрос выполнился успешно, смотрю в пхпмайадмин результаты запроса не могу найти.
    Я так понимаю это должно быть там где располагаются индексы а там поля mark не вижу.
    Как теперя узнать, что поле mark дествительно внешний ключ ?
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    SHOW CREATE TABLE tablename