|
Тест связи один к одному
|
|||
---|---|---|---|
#18+
Access10, W7 или W10. Ни когда не возникало необходимости в связи 1-1. Надо проверить, как работает.(Ну например разделить широкую таблицу на поля нужные и не очень). 2 таблицы- таб1(поля ID и f1-текст)(и создана первой) и таб2(поля ID-ключ и f2 -текст). Связываем по ключу. Начинаем заполнять. Заполняем строку f1 в Таб1. Ok-Запись создана. Заполняем строку f2 в Таб2 -ОК -появилось 2 первых записи. Теперь наоборот, делаем вставку записи в Таб2. Ругается -"Требуется связанная запись в Таб1". Без 'Esc' переходим в Таб1 и делаем вторую запись. ОК - в обеих таблицах 2 записи. Т.е. Таб1 ведёт себя как главная. Далее. Из Таб2 можно удалять запись. После этого можно и Тав1 соответствующую запись, наоборот -НЕТ. Ставим в связи каскадное удаление. При удалении из Таб1 происходит каскадное удаление, из Таб2 -запись удаляется, а каскадно из Таб1 -НЕТ. Тоже получается какая-то неравнозначность таблиц. Где-нибудь описано поведение 1-1? В форуме от 10года нашёл обсуждение "один в один", но там конкретное обсуждение чьей-то ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 17:35 |
|
Тест связи один к одному
|
|||
---|---|---|---|
#18+
vgrafinТоже получается какая-то неравнозначность таблиц. так и задумано И не важно какое отношение : 1:М или 1:1, - всегда есть "внешняя таблица" (главная), на которую создается "внешний ключ" зависимой таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 18:14 |
|
Тест связи один к одному
|
|||
---|---|---|---|
#18+
vgrafin, Если у вас одна таблица содержит <255 столбцов ,то смысла использовать связь 1:1 нет. Единственное практическое применение данного отношения в аксессе ,это если у вас безумное количество столбцов, которое нужно выводить на одном уровне. Так как максимальное число столбцов в одной аксесовской таблице не может быть >255 , то такую таблицу как правило делят на две, с одинаковым названием и типом индекса в обеих таблицах. Чтобы в случае чего собрать по быстрому в запрос данные из обеих. И да, по поводу добавлений,изменений. Изменения нужно делать синхронно в обеих таблицах, и ключевые поля типа счетчик вообще не использовать . Просто юзать индексированные поля. Которые программно нужно обновлять для обеих таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 19:40 |
|
Тест связи один к одному
|
|||
---|---|---|---|
#18+
Сергей ЛаловЕсли у вас одна таблица содержит <255 столбцов ,то смысла использовать связь 1:1 нет.Не был бы столь критичен, поскольку практическое применение все же бывает. Навскидку могу привести пару случаев: 1. На размер одной записи накладывается ограничение 4кб, если не ошибаюсь, поэтому вместить в одну запись больше 8-10 полей "Короткий текст" с 255 символами не получится. Тут на помощь приходят либо Мемо-поля, либо дополнительные таблицы 1:1 2. Если таблица содержит часто используемые данные и данные, используемые крайне редко, то из соображений производительности редко используемые данные лучше вынести в отдельную таблицу со связью 1:1 - работа с часто используемыми данными будет выполняться быстрее, поскольку данных в таблице меньше (дисковые операции, сетевой трафик, пропускаемый через движок объем данных и т.п.) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 21:29 |
|
Тест связи один к одному
|
|||
---|---|---|---|
#18+
ЧотакактаСергей ЛаловЕсли у вас одна таблица содержит <255 столбцов ,то смысла использовать связь 1:1 нет.Не был бы столь критичен, поскольку практическое применение все же бывает. Навскидку могу привести пару случаев: 1. На размер одной записи накладывается ограничение 4кб, если не ошибаюсь, поэтому вместить в одну запись больше 8-10 полей "Короткий текст" с 255 символами не получится. Тут на помощь приходят либо Мемо-поля, либо дополнительные таблицы 1:1 2. Если таблица содержит часто используемые данные и данные, используемые крайне редко, то из соображений производительности редко используемые данные лучше вынести в отдельную таблицу со связью 1:1 - работа с часто используемыми данными будет выполняться быстрее, поскольку данных в таблице меньше (дисковые операции, сетевой трафик, пропускаемый через движок объем данных и т.п.) Да,вы правы. Но по второму пункту с оговоркой наверное- это в случае вывода данных всех полей из таблицы. Можно представить таблицу с полями [key],[поле_часто_выводимое1],[поле_часто_выводимое2],[поле_редко_выводимое1],[поле_редко_выводимое2] И просто при запросе не указывать поля,которые редко выводятся: Код: sql 1.
В этом случае скорость выборки и передачи норм) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2019, 21:47 |
|
Тест связи один к одному
|
|||
---|---|---|---|
#18+
Да практической задачи и не было. Аксом пользуюсь давно, но про 1:1 информация попадалась только в смысле, что есть такая и как бы можно использовать. Таблица связываются по ключу - ну связал, попробовал. Придётся согласиться , что одна главная. Какая? Наверное та, которую первой забросили в схему? Для >256 скорее всего надо переходить другие базы. Но получился довольно неожиданный результат. Попробую просто с индексированными. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2019, 18:34 |
|
Тест связи один к одному
|
|||
---|---|---|---|
#18+
vgrafinПридётся согласиться , что одна главная. Какая? Наверное та, которую первой забросили в схему?Что значит "какая" ? Та на которую REFERENCES Код: vbnet 1. 2. 3.
Если FK создается через интерфейс, то там "зависимая" таблица обзывается "связанной", и "главной" Access предлагает сделать ту, с которой "тянут" связь, а "подчиненной" - в которую "притянули" связь ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 09:54 |
|
Тест связи один к одному
|
|||
---|---|---|---|
#18+
тестирую первый вариант связи (For Each Tab For Each Ind In T.Indexes). Действительно для обеих таб. PK: True, FK: False, индекс на 2й таб. Ind: Таблица1Таблица2 Поля: +id PK: False, FK: True. Далее: Таблица3 и Таблица 4. Поля id - сняты первичный ключ(и счётчик заодно) и установлены в УникальныйИнд, Обязательное. Связываею(через интерфейс - тащим от Т3 к Т4) Пробуем вводить данные. В Таблицу3 можно вводить первой-затем в Таблиицу4. Наоборот нельзя. Проверяем. На обеих по полю id PK: False, FK: False, на Таблице 4 Ind: Таблица3Таблица4 PK: False; FK: True Тащим связь в другую сторону - на Таблице 3 Ind: Таблица4Таблица3 PK: False; FK: True. Действительно, всегда "2я" "подчинённая". Спасибо, что напомнили про REFERENCES. Программно создавать и связывать таблицы, необходимости не было, тем более 1-1, а из граф. интерфейса(Индексы) этого не просматривается. ВЫВОД: ну никак без начальников. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2019, 11:52 |
|
|
start [/forum/topic.php?fid=45&msg=39864473&tid=1610470]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 304ms |
total: | 434ms |
0 / 0 |