powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Схема данных. Связь таблицы сама с собою.
17 сообщений из 17, страница 1 из 1
Схема данных. Связь таблицы сама с собою.
    #32192807
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Существует таблица.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Таблица1
Код	Name	ParentId
 1 	Первая	
 2 	Вторая	
 3 	Третья	
 4 	Четвертая	    1 
 5 	Пятая	
 6 	Шестая	
 7 	Седьмая	    4 
 8 	Восьмая	
 9 	Девятая	
 10 	Десятая	


Является ли правильным, с учетом возможного переноса базы в будущем в MS SQL SERVER 2000, организация связи этой таблицы с собою в схеме данных ACCESS. Нет ли здесь, каких то подводных камней?

Описание связи, взятое из конструктора ACCESS:

Объединение ВСЕХ записей из Таблица1 (поле Код) и только тех записей из Таблица1_1 (поле ParentId), в которых связанные поля совпадают.

Связь предполагает:
Код: plaintext
1.
2.
 1 .	Обеспечение целостности данных
 2 .	Каскадное обновление связанных полей
 3 .	Каскадное удаление связанных полей

Тип отношения: один-ко-многим.
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32192857
arTimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в sql 2000 не выйдет увидеть такую связь на диаграмме, ибо справка говорит:You can only have one copy of any table on a diagram.
но функционально все это можно (и нужно) организовать (в sql server'е) используя триггеры.
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32192917
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Не зря я задал это вопрос, чуя неладное. Спасибо за совет.
А есть ли еще мнения насчет присутствия такой связи в ACCESS?
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32192931
xthn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>в sql 2000 не выйдет увидеть такую связь на диаграмме

А разве самообъединение в MS SQL не показывается линией к самому себе?

>Является ли правильным, с учетом возможного переноса базы в будущем в MS SQL SERVER 2000

Да. Обычный способ создания деревьев/иерархий. На форуме (этом) и MS SQL не мало копий сломано по поводу улучшайзинга. По ищи поиском по форумам, найдешь массу ссылок на терорию и практику.

Каскадное обновление - лишнее коль идет связка по ID.

З.Ы.
Единственное, что не замкни элемент сам на себя - а то он не сможет никогда удалиться.
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32192959
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно рекомендовать - сними каскадное удаление.
Ибо удаленив Родителя (случайно) удалишь все свою иерархию по нему. Лучше пусть юзеры делают это сознательно и начиная с последней ветки.
IMHO.
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193224
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Код: plaintext
1.
2.
3.
4.
Еще можно рекомендовать - сними каскадное удаление. 
Ибо удаленив Родителя (случайно) удалишь все свою иерархию по нему.
Лучше пусть юзеры делают это сознательно и начиная с последней ветки. 
IMHO.

Также, спасибо автору этого совета.
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193231
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
>xthn. Вы писали.
>Каскадное обновление - лишнее коль идет связка по ID.

Все дело в том что, в книге "Разработка корпоративных приложений в Access 2002 " авторы Гетц, Гунделой, Литвин, говорится об ошибке которая существует со времен ACCESS 2.0 и до сих пор не исправлена.

Книга сейчас не под рукой, но я обязательно напишу сюда фрагмент и мы его обсудим.
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193289
arTimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
распните меня... пусть я подавлюсь своими вышесказанными словами... делал ведь же сам такое и так лоханулся... справка мастдай. :(
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193307
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2cab

про ошибку, связанную с каскадным обновлением, у Гетца я что-то не помню. Какой у нее смысл?
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193308
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2cab

про ошибку, связанную с каскадным обновлением, у Гетца я что-то не помню. Какой у нее смысл?
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193585
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Все дело в том что, в книге "Разработка корпоративных приложений в Access 2002 " авторы Гетц, Гунделой, Литвин, говорится об ошибке которая существует со времен ACCESS 2.0 и до сих пор не исправлена.

Из-за этого, как я понимаю желательно указание каскадного обновления.
Или это не так?


Вот описание этой ошибки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Глава № 2 .

Блокировка и формы. Оптимистическая блокировка в формах.

На странице  54 .

В ACCESS  2002  имеется одна ошибка (и уже давно, еще с версии ACCESS  2 . 0  – некоторые ошибки исправить очень непросто).
Она наблюдается, когда для двух таблиц определено отношение «один-ко-многим» без каскадного обновления и в
диалоговом окне Write Conflict для записи со стороны  «один» вы выбираете команду Save Record. В ответ ACCESS выдает
сообщение о нарушении реляционной целостности, даже если вы не меняли значение первичного ключа (рис.  2 . 3 ).
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193655
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Почему так происходит:
Если имя таблицы такое:

Код: plaintext
tbl_ПриходКонтейнеровГрузВКонтейнере


то связь этой таблицы сама с собой (описанным выше, в этом обсуждении, образом) не проходит.

ACCESS выдает сообщение о недопустимой длине имени таблицы.

Но когда я усекаю имя таблицы до

Код: plaintext
tbl_ПриходКонтейнеровГруз


то связь осуществляется успешно.

Более того, я обнаружил, что если таблицу tbl_ПриходКонтейнеровГруз добавить в схему данных, потом организовать ее связь сама с собою (такая связь осуществляется успешно), потом вернуться в окно базы данных и дать ей новое имя, например такое tbl_ПриходКонтейнеровГрузВКонтейнере , потом вернуться снова в схему базы данных и добавить снова таблицу tbl_ПриходКонтейнеровГрузВКонтейнере , то все прежние связи (таблицы tbl_ПриходКонтейнеровГруз ) появляются автоматически, но уже в качестве связей таблицы tbl_ПриходКонтейнеровГрузВКонтейнере .

Получается, что если таблица имеет слишком длинное имя, то ACCESS не может создать связь этой таблицы сама с собою.
Получается, что описанными выше выкрутасами, все таки можно установить связь таблицы сама с собою.

Как все это понимать? И может ли связь, установленная через такие выкрутасы, давать сбой где-либо и сыграть с автором программы злую шутку в будущем.

Какая все-таки должна быть оптимальная длина имени таблицы?
Стоит ли давать таблицам исключительно английские имена. Кстати не мешало бы проверить установление связи сама с собою для таблицы с длинным английским именем.
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193948
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Ответьте, пожалуйста кто-нибудь на мой последний вопрос.
P.S. Может быть нужно назвать все таблицы по английски, да покороче?
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193964
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Число символов в имени объекта любого объекта БД не более 64
Когда создаешь связь, она получает имя по-умолчанию равное имени одной таблице плюс имя другой.
Твой случай - 36 символов плюс опять 36 =72 что больше 64.
Задавай имена таблиц не более 30 символов и будет тебе счастье /либо создавай связи программно./
З.Ы.
Счастье может быть и на русском языке, но право я лично задолбался раскладку переключать. Есть еще минусы, но не значительные (типа сторонних утилит, непонимающих другую раскладку акроме англицкой)
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193973
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправка: не более 32 символов. а не более 31 (вроде MS SQL 7 имел такое ограничение на длину имени таблицы - вдруг когда-либо прийдектся переходить на столь древнюю версию :) )
З.Ы.
Да и еще: Краткость - сестра таланта. :)
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32193996
cab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cab
Гость
Магическое число - 64. Откуда же об этом будешь знать, как не из форума.
Спасибо Вам Виктор большое.
...
Рейтинг: 0 / 0
Схема данных. Связь таблицы сама с собою.
    #32194070
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Магическое число - 64. Откуда же об этом будешь знать, как не из форума.

Подобную информацию лучше получать из справки.
Например, я использовал справку из Акеса2000, если бы у тебя был 97/95,
то /возможно/ ты сел бы в лужу (или я :) )
Поэтому, набери в поиске справке слово "спецификация"
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Схема данных. Связь таблицы сама с собою.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]