Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-63786
БИС
2003-02-03 10:39
2003.02.20
Есть ли программисты, которые не пьют пива или это нонсенс ?


14-63818
Сатир
2003-02-03 22:55
2003.02.20
Помогите с Юниксом


3-63569
Dik
2003-02-04 01:50
2003.02.20
DBComboBox


14-63811
vajo
2003-02-04 13:05
2003.02.20
SMTP


14-63828
Praco
2003-02-04 15:23
2003.02.20
Документация по компонентам на страничке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский