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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связи таблиц в БД, Зачем? 
:(
    Опции темы
rcdimon
Дата 5.7.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет. Читал статью, где говорилось что таблицы в БД надо связывать между собой в самой БД, а не только логикой программы. В универе нас тоже учили связывать их в БД.

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

Но что-то я не вижу чтобы так и было. MYSQL 5

Код

CREATE TABLE PARENT
(
 ID INT NOT NULL,
 PRIMARY KEY (ID)
);

CREATE TABLE CHILD
(
 ID INT,
 PARENT_ID INT,
 FOREIGN KEY (PARENT_ID) REFERENCES PARENT(ID)
);


Создаются таблицы со связью. Но мне удается вставить запись в таблицу CHILD, с полем  PARENT_ID таким, какого нет в PARENT. Почему? Я что-то не понимаю?  smile 
PM MAIL ICQ   Вверх
Feldmarschall
Дата 5.7.2008, 22:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 3
Всего: 32



Я читал, что в автомобиле должна быть АБС. Купил жигули. В них АБС нету. Значит, АБС не нужна.
PM   Вверх
rcdimon
Дата 5.7.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ближе к теме, если можно.
PM MAIL ICQ   Вверх
Feldmarschall
Дата 5.7.2008, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 3
Всего: 32



Так темы-то нету.
В чем вопрос? Зачем нужны связи или почему пример не работает? Или надо объяснить, что написано в неизвестной статье?

PM   Вверх
rcdimon
Дата 5.7.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Почему не работает. Или может работает как надо... Тогда так и скажите ) Только в таком случае будет еще интересно узнать почему так надо )
PM MAIL ICQ   Вверх
Feldmarschall
Дата 5.7.2008, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 3
Всего: 32



Ну никто ж не знает, как ты вставляешь.
В документации написано, что не должно вставлять:
Цитата

InnoDB rejects any INSERT  or UPDATE operation that attempts to create a foreign key value in a child table if there is no a matching candidate key value in the parent table.

PM   Вверх
rcdimon
Дата 5.7.2008, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Открываю PHPmyAdmin, нажимаю вставить и  заполняю форму ) после чего данные действительно оказываются в таблице  smile 
PM MAIL ICQ   Вверх
Feldmarschall
Дата 5.7.2008, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 3
Всего: 32



а тип-то таблиц у тебя какой? innodb?
PM   Вверх
rcdimon
Дата 5.7.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MyISAM
PM MAIL ICQ   Вверх
Feldmarschall
Дата 5.7.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 3
Всего: 32



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


Опытный
**


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

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



А что-то InnoDB не ставится! Явно указываю ему ENGINE = InnoDB, а создаются все равно MyISAM

В переменных MySQL нашел такое 

have innodb    DISABLED

 smile 

Я на денвере эксперементирую... 

Это сообщение отредактировал(а) rcdimon - 5.7.2008, 23:32
PM MAIL ICQ   Вверх
MuToGeN
Дата 14.7.2008, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

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



Цитата(rcdimon @  5.7.2008,  23:28 Найти цитируемый пост)
Я на денвере эксперементирую... 

Там InnoDB по дефолту отрублен в конфиге.

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


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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