Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
ВнизОбясните связи 1<->1 , 1<->n , n<->n Найти похожие ветки
← →
Saracin (2003-02-04 07:53) [0]Не понимаю, либо добовляется FK либо не добовляется, причем тут n или 1?
← →
Suntechnic (2003-02-04 09:00) [1]Почитал бы что ли книжку какую-нибудь умную.
← →
jocko (2003-02-04 10:49) [2]все очень просто,
Имеешь 2 обьекта, у кот. атрибуты имеют соответсвие
напр. Т1 - фамилия(id - PK), Т2 - телефоны
1. у каждой фамилии есть телефон обязательно и только один
1-1 с обязательной принадлежностью.
создаешь 2 таблицы Т1(idфамилии -PK), Т2(idфамилии - FK)
2. в любом другом случае понадобится 3 таблицы:
Т1, Т2 и еще Т3 для связи, в ней поля (idФамилии - FK, idТелефон-FK), соотв. Т1(idфамилии -PK), Т2(idтелефона - PK)
PS:
вообще это написано в любой книжке, даже не умной
← →
BlockCode (2003-02-04 12:06) [3]В некоторый момент времени у тебя официально может быть только одна жена, а ты у нее единственным мужем (1 <--> 1). У тебя может быть n детей, а у них только 1 отец (1 <--> n). Но это может не мешать тебе вступать в отношение с n женщинами, да и ты у них можешь быть не единственным (n <--> n). Вот и все отношения, осталось только описать на уровне таблиц.
← →
Saracin (2003-02-04 12:35) [4]2 jocko:
"Т1, Т2 и еще Т3 для связи, в ней поля (idФамилии - FK, idТелефон-FK), соотв. Т1(idфамилии -PK), Т2(idтелефона - PK)"
насколько я понял надо добавить в T3(t3_id - PK) и T1,T2 (t3_id - FK). Но причем тут много ко многим если в T1 и T2 только одно поле t3_id - FK => таже связь 1<->1 но связь транзитивная.
2 BlockCode:
:) в некоторый момент - возможно, но смотря где и матря кто ты, может ты это
class Я: public Шейх_c_горемом. Вопрос: Наследник Шейха с горемом, горем тоже наследует? :)
← →
DarkGreen (2003-02-04 16:45) [5]2 Saracin © (04.02.03 12:35)
В реляционных СУБД свзять типа n <--> n (мнокие-ко-многим) может быть реализована только с помощью промежуточной таблицы
Таблица1 1-->N Промежуточная_таблица N-->1 Таблица2
Хотя... Может в MS SQL это возможно, но я его не знаю.
← →
jocko (2003-02-04 17:14) [6]насчет жен и детей втему...
Сарацин, ты не внимателен
Т3 для связи, в ней поля (idФамилии - FK, idТелефон- FK)
см пример из области социологии, случай №1 Это когда, ты точно знаешь что женат (т.е. держишь в руках пасспорт), страдаешь импотенцией, и твоя жена фригидна.
остальное случай №2
PS в жизни всегда №2 (Это я о программировании)
← →
jocko (2003-02-04 17:35) [7]Виноват...
Если для каждой фамилии имеется несколько телефонов, и нет номеров без хозяина, для описания хватает двух таблиц.(1-n)
← →
Saracin (2003-02-04 20:19) [8]Почему нельзя n<->n реализовать через две таблицы?
таблМуж(Муж_ID - PK,Жена_ID - FK)
таблЖена(Муж_ID - FK,Жена_ID - FK)
выбераем всех моих жен:
select жена_ID from таблЖена where муж_ID="Saracin"
выбераем всех мужей какой-нибудь жены
select муж_ID from таблМуж where жена_ID="Дуня"
Почему это плохо или почему вы считаете это некоректно?
← →
Johnmen (2003-02-04 23:28) [9]Если имелось в виду
(Муж_ID - PK,Жена_ID - FK)
(Муж_ID - FK,Жена_ID - PK)
то в случае обязательного наличия F-ключей имеем взаимную рекурсивную ссылку, а это ошибка или, по-житейски, парадокс, типа :
"В городе N живет единственный брадобрей, который бреет всех, кто не бреется сам. Вопрос : бреется ли он ?"
← →
jocko (2003-02-04 23:36) [10]А ты пробовал так сделать? Получилось?
добавить нечего...
1. Любая книжка по MS SQL, то что нужно по своему вопросу скорее всего найдещь во введении.
( http://shop.piter.com/display.phtml?library=yes&web_ok=all- можно скачать или прочитать серт. экз 70-029)
2. К.Дж.Дейт "Ведение в системы баз данных"
Книжка толстая, не стоит заморачиваться на все что там написано, но прочитай все сначала до конца, лишним не будет
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c