Автор Тема: REFERENCES с использованием varchar  (Прочитано 5594 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
REFERENCES с использованием varchar
« : 27 Ноября 2003, 16:17:59 »
Господа.
Скажите пожалуйста, можно сделать связь между таблицами, через поля varchar?
Или можно только через числовые типы полей делать связи?

Т.е. примерно такая конструкция прокатит?

CREATE TABLE person (
    id varchar(10) NOT NULL,
    name char(60) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE shirt (
    id int NOT NULL AUTO_INCREMENT,
    style enum(\'t-shirt\', \'polo\', \'dress\') NOT NULL,
    color enum(\'red\', \'blue\', \'orange\', \'white\', \'black\') NOT NULL,
    owner varchar(10) NOT NULL REFERENCES person(id),
    PRIMARY KEY (id)
);
Поздравления с днем Святого Валентина

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
REFERENCES с использованием varchar
« Ответ #1 : 27 Ноября 2003, 17:29:42 »
если СУБД MySQL, то там references для MyISAM только парсится, но ничего не делает.
На Машине Тьюринга далеко не уедешь.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
REFERENCES с использованием varchar
« Ответ #2 : 27 Ноября 2003, 17:35:10 »
Да, MySQL. А как это понять "парсится"?
Поздравления с днем Святого Валентина

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
REFERENCES с использованием varchar
« Ответ #3 : 27 Ноября 2003, 19:16:43 »
Цитировать
Nicki:
Да, MySQL. А как это понять "парсится"?

Это значит, что ошибок не выдает.
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
REFERENCES с использованием varchar
« Ответ #4 : 27 Ноября 2003, 19:44:37 »
Т.е. может принять значение, которого нет в "главной" таблице? Или не принимает не верного значения, но не выдает сообщение об ошибке?
Поздравления с днем Святого Валентина

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
REFERENCES с использованием varchar
« Ответ #5 : 27 Ноября 2003, 19:49:38 »
> Т.е. может принять значение, которого нет в "главной" таблице?

угу. именно.

Если тебе нужны внешние ключи, то они поддерживаются только для таблиц InnoDB:
http://www.mysql.com/doc/en/InnoDB.html
http://www.mysql.com/doc/en/InnoDB_foreign_key_constraints.html
На Машине Тьюринга далеко не уедешь.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
REFERENCES с использованием varchar
« Ответ #6 : 28 Ноября 2003, 11:57:58 »
Тогда как используется references в myisam?
Какую функцию он выполняет?

И так что, можно или нет делать связь через varchar?
Поздравления с днем Святого Валентина

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
REFERENCES с использованием varchar
« Ответ #7 : 28 Ноября 2003, 14:15:25 »
> Какую функцию он выполняет?

пока никакую, в будущем планируют поддерживать для MyISAM таблиц тоже.
На Машине Тьюринга далеко не уедешь.

Оффлайн Nicki

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 107
  • +0/-0
  • 0
    • Просмотр профиля
    • http://cprazdnikom.ru
REFERENCES с использованием varchar
« Ответ #8 : 28 Ноября 2003, 16:37:26 »
Так, что вы мне посоветуете, ребят?
InnoDB наверное не каждый хостинг поддерживает, а в myisam пока нет поддержки целостности данных, т.е. для операций удаления и обновления данных в "главной" таблице.

А в SELECT\'ах используется references в myisam?
Может хоть в запросах будет от этой фишки толк? У меня примерно 5-7 таблиц и все должны быть связаны.

Пока приходится следить за целостностью данных средствами php.

Что скажете?
Поздравления с днем Святого Валентина

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
REFERENCES с использованием varchar
« Ответ #9 : 28 Ноября 2003, 17:20:25 »
Цитировать
Так, что вы мне посоветуете, ребят?
PostgreSQL ;)
Цитировать
Так, что вы мне посоветуете, ребят?
Ничего страшного и предосудительного в этом нет. Если СУБД не поддерживает целостность данных в том объеме в котором она (целостность) необходима для решения задачи - целостность поддерживается программными средствами. Это нормальный подход ибо третий вариант - вообще не отслеживать целостность
AS IS...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
REFERENCES с использованием varchar
« Ответ #10 : 28 Ноября 2003, 17:57:15 »
Nicki, или отслеживаешь все ручками, или переходишь на InnoDB или выбираешь другую СУБД.
На Машине Тьюринга далеко не уедешь.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28