powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли связать две таблицы 1 к 1 в обе стороны?
39 сообщений из 39, показаны все 2 страниц
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040686
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица категории и таблица подкатегории, идентифицирующая связь один к одному.
Категория имеет внешний ключ в одну сторону (типа CASCADE),
подкатегория - внешний ключ в другую сторону (тоже CASCADE).
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE `cargo_card` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `contract_cargo_sub_id` int(11) unsigned NOT NULL,
  `object_type` enum('auto',' wagon',' vessel',' placement') NOT NULL,
  PRIMARY KEY (`id`),
  KEY `contract_cargo_sub_id` (`contract_cargo_sub_id`),
  CONSTRAINT `cargo_card_fk1` FOREIGN KEY (`contract_cargo_sub_id`) REFERENCES `contract_cargo_sub` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;

CREATE TABLE `auto_cargo_card` (
  `id` int(11) unsigned NOT NULL,
  `auto_card_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `auto_card_id` (`auto_card_id`),
  CONSTRAINT `auto_cargo_card_fk2` FOREIGN KEY (`id`) REFERENCES `cargo_card` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `auto_cargo_card_fk1` FOREIGN KEY (`auto_card_id`) REFERENCES `auto_card` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;


Если удаляем категорию, каскадно удаляется подкатегория.
Если удаляем внешний родительскую запись категории, удаляется каскадно категория и подкатегория. Тут все нормально.
Проблема в том, что если удалить запись auto_card, то подкатегория тоже удалится каскадно, а категория не удалится. Но категория без подкатегории не имеет смысла. Надо чтобы тоже удалялась.
Можно ли сделать колцевую зависимость в обе стороны? В нижней таблице внешний ключ на верхнюю, в верхней - внешний ключ на нижнюю?


Если удаляется запись по внешнему ключу категории, то удаляется
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040690
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь тоже каскадный ключ.
Код: sql
1.
CONSTRAINT `auto_cargo_card_fk1` FOREIGN KEY (`auto_card_id`) REFERENCES `auto_card` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040698
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтоб проще понять: можно ли сделать вот так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE `cargo_card` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `contract_cargo_sub_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `cargo_card_fk2` FOREIGN KEY (`id`) REFERENCES `auto_cargo_card` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;

CREATE TABLE `auto_cargo_card` (
  `id` int(11) unsigned NOT NULL,
  `auto_card_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `auto_cargo_card_fk2` FOREIGN KEY (`id`) REFERENCES `cargo_card` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040700
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или еще проще, чтоб понятно было:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE `cargo_card` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`),
  CONSTRAINT `cargo_card_fk2` FOREIGN KEY (`id`) REFERENCES `auto_cargo_card` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;

CREATE TABLE `auto_cargo_card` (
  `id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `auto_cargo_card_fk2` FOREIGN KEY (`id`) REFERENCES `cargo_card` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040703
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladНо категория без подкатегории не имеет смысла.Это почему это?
Не знаю, что у вас за предметная область, но обычно в категории может быть несколько категорий, включая ноль.

И если так, то зачем две таблицы? Почему не объединить в одну?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040712
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

есть карточка груза, который может быть связан с автомобилем и с вагоном. если удаляется автомобиль, в котром лежал груз, то нет смысла и в этой карточке груза. так же и с вагоном. А верхняя таблица содержит общие поля, и на нее может быть в других таблицах одна ссылка, а не разные (№ вагона, № авто).
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040720
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladесли удаляется автомобиль, в котром лежал грузЯ спрашивал про обратное направление. Если удалили груз, то зачем удалять весь автомобиль?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040725
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

в общем вот:
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040733
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftsvnvladесли удаляется автомобиль, в котром лежал грузЯ спрашивал про обратное направление. Если удалили груз, то зачем удалять весь автомобиль?
вы не понимаете, автомобиль никто не удаляет. автомобиля на схеме не видно, так же как и сам груз.
вот этот кортеж card_cargo - auto_card_cargo связывает груз и автомобиль. груз это по ссылке contract_cargo_sub_id, автомобиль по ссылке auto_card_id.
Если удаляется груз, то обе вот эти таблицы должны удалиться, а если удаляется автомобиль, то тоже обе этих должны удалиться, потому что это как бы одна таблица.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040738
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cargo_card и auto_cargo_card имеют общий id.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040740
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автомобили находятся справа от правой таблицы, грузы - сверху от левой таблицы.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040744
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы обращаться одинаково и к карточкам груза автомобиля, и к карточкам груза вагона, была сделана объединяющая их категория. теперь понятно?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040745
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladвы не понимаетеНе понимаю, поэтому и задаю дурацкие вопросы. Имхо, правильно спроектировать таблицы можно только зная предметную область и поставленную задачу.

svnvladавтомобиля на схеме не видно, так же как и сам груз.Т.е. "карточка груза" - это не груз? Логично, да...

svnvladЕсли удаляется груз, то обе вот эти таблицы должны удалиться, а если удаляется автомобиль, то тоже обе этих должны удалиться, потому что это как бы одна таблица.Тогда повторю вопрос - зачем две таблицы? Почему не объединить в одну?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040751
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladчтобы обращаться одинаково и к карточкам груза автомобиля, и к карточкам груза вагона, была сделана объединяющая их категория. теперь понятно?А зачем разделены таблицы автомобилей и вагонов?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040752
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftТогда повторю вопрос - зачем две таблицы? Почему не объединить в одну?
Потому что есть еще карточка вагона. А надо обращаться и к карточке автомобиля, и к карточке вагона одним способом, по одному полю.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040756
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не знакомы, что такое идентифицирующее отношение, категоризация.
Это не про "группа товара" и "товар".
А про Человек - женщина, человек - мужчина.
У женщины есть поле "Размер матки", у мужчины - "Размер простаты" ))
А обращаться к ним хочется по одному полю Id_человека.
так вот если вы удалите запись из поля мужчина, то запись в поле человек тоже надо удалять.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040758
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из таблицы вернее.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040762
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladЭто не про "группа товара" и "товар".
А про Человек - женщина, человек - мужчина.
У женщины есть поле "Размер матки", у мужчины - "Размер простаты" ))
А обращаться к ним хочется по одному полю Id_человека.
так вот если вы удалите запись из поля мужчина, то запись в поле человек тоже надо удалять.Это не мешает сделать одну таблицу и заполнять только те поля, которые нужны/возможны для данного типа человека.
В других СУБД можно даже констрейнт соответствующий наложить. В MySQL можно сделать аналог такого констрейнта триггером.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040765
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladmiksoftТогда повторю вопрос - зачем две таблицы? Почему не объединить в одну?
Потому что есть еще карточка вагона. А надо обращаться и к карточке автомобиля, и к карточке вагона одним способом, по одному полю.А когда появятся самолеты и воздушные шары, будете еще таблицы создавать?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040768
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft
svnvladавтомобиля на схеме не видно, так же как и сам груз.Т.е. "карточка груза" - это не груз? Логично, да...

Карточка груза - это маленькая партия (большого конкретного груза) в данном транспортном средстве.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040778
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftsvnvladпропущено...

Потому что есть еще карточка вагона. А надо обращаться и к карточке автомобиля, и к карточке вагона одним способом, по одному полю.А когда появятся самолеты и воздушные шары, будете еще таблицы создавать?
А вы предлагаете сделать так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE `cargo_card` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `contract_cargo_sub_id` int(11) unsigned NOT NULL,
  `auto_card_id: integer,
  `wagon_card_id: integer,
  `самолет_id: integer`,
  `воздушный_шар_id: integer,
  `пароход_id: integer,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;


При том, что ненулевое значение будет только в одном из полей?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040790
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или еще веселей:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE `человек` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `ФИО,
  `№ карты пациента`, // Иванов Иннокентий Петрович
  `размер матки`,
  `сколько раз рожала`,
  .............
  ........
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040796
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladmiksoftпропущено...
Т.е. "карточка груза" - это не груз? Логично, да...

Карточка груза - это маленькая партия (большого конкретного груза) в данном транспортном средстве.Если это партия, неделимая в процессе транспортировки, то у нас это называется "тарное место".
Физически это обычно либо палетта, либо небольшой контейнер.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040803
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladmiksoftпропущено...
А когда появятся самолеты и воздушные шары, будете еще таблицы создавать?
А вы предлагаете сделать так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE `cargo_card` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `contract_cargo_sub_id` int(11) unsigned NOT NULL,
  `auto_card_id: integer,
  `wagon_card_id: integer,
  `самолет_id: integer`,
  `воздушный_шар_id: integer,
  `пароход_id: integer,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;



При том, что ненулевое значение будет только в одном из полей?Нет, вот так:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE `cargo_card` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `contract_cargo_sub_id` int(11) unsigned NOT NULL,
  `траспортное_средство_card_id: integer,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;

Кстати, необходимость поля id тут тоже под вопросом.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040805
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladИли еще веселей:Список полов человека, кстати, тоже непостоянен. В зависимости от предметной области, насколько я в курсе, их может быть от 2 до 6.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040810
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть предложение перенести топик в подфорум "Проектирование БД".
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040811
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladЕсть таблица категории и таблица подкатегории, идентифицирующая связь один к одному.


Уже неверно. Связь эта -- один-ко-многим. Одна категория может иметь одну или несколько подкатегорий.
Точнее, от нуля до бесконечного числа подкатегорий.

svnvladЕсли удаляем категорию, каскадно удаляется подкатегория.


Ну я бы на твоём месте вообще бы с каскадными удалениями не баловался. Опасная и вредная вещь...

svnvladЕсли удаляем внешний родительскую запись категории, удаляется каскадно категория и подкатегория. Тут все нормально.
Проблема в том, что если удалить запись auto_card, то подкатегория тоже удалится каскадно, а категория не удалится. Но категория без подкатегории не имеет смысла. Надо чтобы тоже удалялась.
Можно ли сделать колцевую зависимость в обе стороны? В нижней таблице внешний ключ на верхнюю, в верхней - внешний ключ на нижнюю?


Нет, нельзя, и не нужно, но ты этого пока ещё не понимаешь...
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040813
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftНет, вот так:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TABLE `cargo_card` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `contract_cargo_sub_id` int(11) unsigned NOT NULL,
  `траспортное_средство_card_id: integer,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;



Т.е. предлагаете транспорт объединить категорией. Такой вариант уже рассматривал. Но дело в том еще, что у карточки авто, карточки вагона и др. есть еще дополнительные свои поля, отличающиеся друг от друга, кроме id тр.средства.

Кстати, необходимость поля id тут тоже под вопросом.
Так уж повелось, что у всех таблиц должен быть обязательно id. Это связано с техническими особенностями библиотеки работы со БД.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040821
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivsvnvladЕсть таблица категории и таблица подкатегории, идентифицирующая связь один к одному.

Уже неверно. Связь эта -- один-ко-многим. Одна категория может иметь одну или несколько подкатегорий.
Точнее, от нуля до бесконечного числа подкатегорий.

Это жесткая категоризация, у карточки груза не может быть одновременно автомобиля и вагона. может быть только что-то одно.
Кроме того, один ко многим это бы означала, что могут существовать много auto_cargo_card, ссылающиеся на одну cargo_card. А это не так. Там только одна auto_cargo_card для каждой cargo_card.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040824
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как написать триггер?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040825
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladНо дело в том еще, что у карточки авто, карточки вагона и др. есть еще дополнительные свои поля, отличающиеся друг от друга, кроме id тр.средства.Их можно либо добавить в основную таблицу транспортных средств (но заполнять только нужные), либо выделить в отдельную EAV-таблицу.

Кстати, а какая задача у всей системы?
Это заявки (т.е. план на будущее), текущее состояние (настоящее) или исторические данные (прошлое) ?
Если третье, то откуда вообще взялась операция удаления?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040826
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу я бы на твоём месте вообще бы с каскадными удалениями не баловался. Опасная и вредная вещь...

Это почему? Если аккуратно и внимательно ключи писать, то все нормально. MySQL глючит?
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040828
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladкак написать триггер? CREATE TRIGGER
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040830
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladMasterZivНу я бы на твоём месте вообще бы с каскадными удалениями не баловался. Опасная и вредная вещь...

Это почему? Если аккуратно и внимательно ключи писать, то все нормально. MySQL глючит?Не то чтобы глючит, но имеет особенности. Например, при каскадном удалении не срабатывают триггера.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040831
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftКстати, а какая задача у всей системы?
Это заявки (т.е. план на будущее), текущее состояние (настоящее) или исторические данные (прошлое) ?
Если третье, то откуда вообще взялась операция удаления?
Текущее состояние.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39040856
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftКстати, а какая задача у всей системы?

Глобальная задача - показать процессы перегрузки грузов из одного транспортного средства в другое.
Причем погрузиться они могут не за 1 шаг, а за несколько, например, чтобы погрузить вагон, нужно взять грузы с 3-х автомобилей. И отобразить эти процессы во времени...
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39042320
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,

я незнаю сможешь ли ты в мускле настроить так внешние ключи, но то что не сможешь вставить данные это факт, при вставке в таблицу А она потребует наличия записи в Б, а в Б не сможешь вставить, ибо требуется наличие А

можно конечно на момент вставки отключать проверку по внешнему ключу, и таки вставишь.
но каскадное удаление опять вызовет ошибку.

удаляешь запись в таблице А, мускл не дурак, видит, каскадно подготовить удаление из Б, но и тут мускл не дурак, понимает, что для удаления из Б надо каскадно из А и тут уже даже не будет смотреть что из А надо удалять то что он и так собирался, он сразу выдаст ошибку про зацикленность(про цикл)

тоесть даже если у тебя А (id, fk_idb) B(id,fk_ida)

и записи
А
1, 2
2,3

Б
2,2

то при попытке удалиь записи из А с айди=1, получиться логический цикл, для удаления А, надо удалять из Б, а для удаления из Б приходиться удалять из А ...чисто изза этого мускл уже выдаст ошибку.несмотря даже на отсутсвие цикла в структуре данных(ссылках)

так что ответ на твой вопрос - не сможешь.

одна таблица обяза 1 - допускать значение нулл, дабы не приходилось постоянно отключать проверку по ключу. а то ведь как тогда контролировать целостность данных -ведь включение проверки не изменит того факта что уже могли навставлять лишние данные нарушив требование один к одному.

и эта таблица каскадно не удаляеться. она и будет как бы чучуть главнее

если говорить о парах

человек - женщина
человек - мущина
то таблицей главнее должен стать человек.
при удалении человека - мущина или женщина удаляеться каскадно, при удаленни мущины или женщины, удаление человека тригером(триге на после удаления)...думается на до если поставить, возникнет цикл - ибо удаление породит каскадное удаление в таблице где уже запущен тригер удаления.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39042890
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

Точно, точно. Была похожая задача и нарвался именно на этот момент. А надо было разделить одну таблицу, как и топик стартера на "общие поля зписи" и две и больше "специальных уточнений"... в конце концов ушел на EAV.
...
Рейтинг: 0 / 0
Можно ли связать две таблицы 1 к 1 в обе стороны?
    #39047569
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109 в конце концов ушел на EAV.
Что такое EAV?

В общем решил проблему без триггера, а просто запросом на удаление из нескольких таблиц:
Код: sql
1.
2.
3.
4.
5.
DELETE auto_card, auto_cargo_card, cargo_card
FROM auto_card
LEFT JOIN auto_cargo_card ON auto_cargo_card.auto_card_id = auto_card.id
LEFT JOIN cargo_card ON cargo_card.id = auto_cargo_card.id
WHERE auto_card.id = :auto_card_id
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли связать две таблицы 1 к 1 в обе стороны?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]