Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Результаты опроса: Первый или второй?
Первый вариант 0 0%
Второй вариант 0 0%
Голосовавшие: 0. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы
Старый 02.11.2017, 19:25   #1
gantzboss
Пользователь
 
Регистрация: 02.11.2017
Сообщений: 31
Репутация: 26
По умолчанию Связи между таблицами

Здравствуйте

Как правильно поставить связи между 3 таблицами, что бы в 3-ей таблице была первая или вторая, но не две сразу

Может, что то вроде этого:

1)
Снимок.PNG
2)
Снимок2.PNG

Но оба варианта мне как то не нравятся, хоть я остановился на втором
gantzboss вне форума   Ответить с цитированием
Старый 02.11.2017, 19:58   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,358
Репутация: 6052
По умолчанию

Ни первый, ни второй способ не обеспечит на уровне внешних ссылок не две сразу. Нужно еще триггерный контроль добавлять и 1-ый способ предпочтительней, имхо. Лишнее поле пугает? А лишняя пара таблиц не?
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 02.11.2017 в 20:01.
Аватар вне форума   Ответить с цитированием
Старый 02.11.2017, 21:09   #3
gantzboss
Пользователь
 
Регистрация: 02.11.2017
Сообщений: 31
Репутация: 26
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Лишнее поле пугает? А лишняя пара таблиц не?
В каждой строке будет пустое поле. А 2 таблицы(связь n:m) меня меньше пугают, так как его там нет


Может есть иной способ реализовать данную задачу? А не только этими двумя.

Последний раз редактировалось gantzboss; 02.11.2017 в 21:11.
gantzboss вне форума   Ответить с цитированием
Старый 05.11.2017, 17:35   #4
JUDAS
фонатик DELPHI
Участник клуба
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Адрес: Украина
Сообщений: 696
Репутация: 166
По умолчанию

Цитата:
Как правильно поставить связи между 3 таблицами, что бы в 3-ей таблице была первая или вторая, но не две сразу
я бы сделал вот так

Код:

CREATE SEQUENCE global   INCREMENT 1  MINVALUE 1  MAXVALUE 999999  START 1;

а теперь вот так

Код:

create table TABLE1
(
  id integer PRIMARY KEY nextval(global),
  data1 xxxx,
  data2 yyyy,
  и так далееее
)

create table TABLE2
(
  id integer PRIMARY KEY nextval(global),
  data1 xxxx,
  data2 yyyy,
  и так далееее
)

а теперь таблица 3

create table TABLE3
(
  id integer PRIMARY KEY,
ref integer, 
  data1 xxxx,
  data2 yyyy,
  и так далееее
)


при корректном наполнении таблиц 1 и 2, значение REF в таблице 3 всегда будет уникальным, а id первой и второй таблицы никогда не будут повторятся.
__________________
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума   Ответить с цитированием
Старый 08.11.2017, 11:07   #5
gantzboss
Пользователь
 
Регистрация: 02.11.2017
Сообщений: 31
Репутация: 26
По умолчанию

Хм. Я даже не думал, что так можно. Спасибо.

Но я делаю на mysql. Этот вариант будет аналогом

Код:

create table global1(
glob bigint auto_increment primary key
);

create table TABLE1
(
  id bigint PRIMARY KEY,
  foreign key fk1(id) references global1(glob)
);

create table TABLE2
(
  id bigint PRIMARY KEY,
  foreign key fk2(id) references global1(glob)
);

create table TABLE3
(
  id integer PRIMARY KEY,
  ref bigint,
  foreign key fk3(ref) references global1(glob)
)

или есть аналог SEQUENCE ?

Последний раз редактировалось gantzboss; 08.11.2017 в 15:53.
gantzboss вне форума   Ответить с цитированием
Старый 08.11.2017, 23:54   #6
xxbesoxx
Профессионал
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Адрес: Грузия Рустави
Сообщений: 1,238
Репутация: 628
Отправить сообщение для xxbesoxx с помощью Yahoo
По умолчанию

Цитата:
Сообщение от gantzboss Посмотреть сообщение
Но я делаю на mysql. Этот вариант будет аналогом
1) Для понятия типы связей между таблицами http://www.online-academy.ru/demo/ac...teor/teor4.htm
2) Почитайте про on cascade delete и on cascade update http://www.mysqltutorial.org/mysql-on-delete-cascade/
__________________
E_MAIL: rijgvina7@yahoo.com
xxbesoxx вне форума   Ответить с цитированием
Старый 09.11.2017, 11:18   #7
gantzboss
Пользователь
 
Регистрация: 02.11.2017
Сообщений: 31
Репутация: 26
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
1) Для понятия типы связей между таблицами http://www.online-academy.ru/demo/ac...teor/teor4.htm
2) Почитайте про on cascade delete и on cascade update http://www.mysqltutorial.org/mysql-on-delete-cascade/
не до конца понимаю как каскадность повлияет на мой аналог замены SEQUENCE, я не собираюсь строку из глобала(global1) подсоединять сразу в две таблицы(TABLE1, TABLE2)
и по сути не вижу ничего противозаконного в связях

Последний раз редактировалось gantzboss; 09.11.2017 в 11:21.
gantzboss вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связи между таблицами Вероника99 PHP 1 09.03.2016 13:21
Access связи между таблицами DoGFoX Microsoft Office Access 4 16.11.2012 10:04
Связи между таблицами. AntiKaspersky Общие вопросы .NET 1 19.11.2010 15:40
связи между таблицами new_here Microsoft Office Access 8 06.10.2010 12:13
Связи между таблицами! Alexij БД в Delphi 1 10.06.2008 18:11


17:14.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru