|
|
|
связь один к одному
|
|||
|---|---|---|---|
|
#18+
Кто знает, как решить задачу связи один-к-одному для таблиц SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 00:22 |
|
||
|
связь один к одному
|
|||
|---|---|---|---|
|
#18+
Если у двух таблиц связь 1х1 - надо сделать из них одну Я так думаю (с)МиминО Жизнь коротка - потерпи немного :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 09:00 |
|
||
|
связь один к одному
|
|||
|---|---|---|---|
|
#18+
Marat_LЕсли у двух таблиц связь 1х1 - надо сделать из них одну Я так думаю (с)МиминО Это круто!!! А если при множестве реляционных связей от одной таблицы выделяется таблица свойств объектов этой таблицы, нужна связь один-к-одному. Я так думаю! Ж;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 11:12 |
|
||
|
связь один к одному
|
|||
|---|---|---|---|
|
#18+
Ape Это круто!!! А если при множестве реляционных связей от одной таблицы выделяется таблица свойств объектов этой таблицы, нужна связь один-к-одному. Это ирония? Вопрос? Или утверждение? Буду предполагать, что последнее. Если просто отделить от таблицы колонку просто сохранив ключ для связи с исходной таблицей - да. Получится связь 1х1. Вот только зачем это? Чтобы потом объединять каждый раз две таблицы по ключу, заставляя сервер перебирать их декартово произведение? Зачем сложно, когда можно просто. Совсем другая ситуация, когда некоторое свойство объекта принимает фиксированное множество значений. Тогда, конечно, стоит создать справочник возможных значений, на который будет ссылаться исходная таблица. Но тогда будет связь один ко многим. Или я не понял тонкой мысли? PS: Кстати есть форум "Проектирование БД". Уместнее задать этот вопрос там. Там сидят такие крокодилы, что решат все Ваши сомнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 12:46 |
|
||
|
связь один к одному
|
|||
|---|---|---|---|
|
#18+
Marat_L могу привести пример когда связь "один к одному" может быть полезной. В алгоритме Nested Sets (алгоритм хранения деревьев в таблице). Цитата из статьи : авторопыт показывает, что структуру с обходом дерева лучше хранить отдельно от данных, т.к. в этом случае при обновлении таблицы очень долго обновляются индексы, да и данные могут сделать невозможным формат записи фиксированной длины, что тоже кардинально скажется на скорости. Самой оптимальной структурой по-моему будет: CREATE TABLE categories ( cat_id INT UNSIGNED NOT NULL AUTO_INCREMENT, cat_left INT UNSIGNED NOT NULL, cat_right INT UNSIGNED NOT NULL, cat_level INT UNSIGNED NOT NULL, PRIMARY KEY(cat_id) KEY (cat_left, cat_right, cat_level) ); В итоге MySQL за многими запросами даже не будет обращаться к файлу с данными. Ему будет хватать файла с индексами. А когда уже пройдёт всё фильтрование в таблице с деревом, по примари-кею быстро произойдёт линкование с остальными данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 13:01 |
|
||
|
связь один к одному
|
|||
|---|---|---|---|
|
#18+
Пожалуй да. Иногда наверное надо. Например в случаях когда 1) Часть полей по логическому содержанию можно объединить в отдельную группу 2) Эта часть полей очень часто модифицируется 3) В таблице много других полей с индексами, которые обновляются значительно реже 4) А самое главное вычислительные издержки на 2) ощутимо превосходят издержки на объединение (хотя это трудно оценить) Да. В принципе я был не прав. Жизнь коротка - потерпи немного :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2004, 14:02 |
|
||
|
связь один к одному
|
|||
|---|---|---|---|
|
#18+
Макс М. могу привести пример когда связь "один к одному" может быть полезной. В алгоритме Nested Sets (алгоритм хранения деревьев в таблице). Цитата из статьи : . . . В итоге MySQL за многими запросами даже не будет обращаться к файлу с данными. Ему будет хватать файла с индексами. А когда уже пройдёт всё фильтрование в таблице с деревом, по примари-кею быстро произойдёт линкование с остальными данными. Вот это совершенно верное представление проблемы. Именно для этого мне оно и надо. Но вот вопрос КАК??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2004, 15:13 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=682&tid=1855003]: |
0ms |
get settings: |
17ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 373ms |

| 0 / 0 |
