Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как связать 2 таблицы на PARADOX BDE 
V
    Опции темы
Diless
Дата 10.3.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.3.2006

Репутация: нет
Всего: нет



В общем в этом суть: есть в приложении 2 таблицы, хотелось бы связать.
В DataBase Desktop, когда пытаюсь связать отображается только левая колонка с полями, где правая?
Чего делать?
PM MAIL   Вверх
307450614
Дата 10.3.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.2.2006

Репутация: нет
Всего: нет



DataBase Desktop хорошо связывает таблицы в том случае, когда связываемые поля имеют одинаковое название и являются индексными...
PM MAIL ICQ   Вверх
Diless
Дата 10.3.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.3.2006

Репутация: нет
Всего: нет



Надо связать по Значению Project_Number. В первой таблице он во всех строках разный, а во второй может в нескольких строках быть одинаковым. Мне кажется в этом проблема.
Добавлено @ 13:45
может быть такие таблицы надо решать как нибудь по-другому? чтобы не возникало конфликта при привязывании одному полю нескольких?
как это делается?
PM MAIL   Вверх
StranikS
Дата 11.3.2006, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.2.2006

Репутация: нет
Всего: 2



Почитай литературу на тему "Создание БД формата PARADOX", в любом толстом учебнике про Delphi есть таковой раздельчик.
Если коротко, то:
1. Все структуры БД классифицируются на следующие категории по взаимосвязи таблиц БД:
- отношение "один ко многим":

Таб№1 поле А
|_________________ Табл№2 поле B
|_________________ Табл№3 поле B
|_________________ Табл№4 поле B
...


- остальные "один к одному", "многие ко многим" и т.д. (посмотришь сам);

2. Для создание связи ("отношения") двух таблиц необходимо:
- в главной таблице (таб№1) выбрать (создать) поле которую будет обеспечиать связь (поле А) и сделать его ключевым (*);
- в дочерней таблице (табл№2) создать поле, задача которого связывание с первой таблицей и более ничего (поле В). Как правило его даже называют тем же именем что и поле А;
- формат полей А и B должен быть однотипен, т.е. "Целые и целые", "автоинк и целые", "строковая и строковая" и ...
- при задании связи в DataBase Desktop указываются эти поля (А и В);
- в табл№2 поле В большей своей функцией является служебным и не показывается пользователю в DBGrid;
- входе работе приложения при добавлении записи в табл№2 в поле В будут авт. заноситься значение поля А активной записии табл№1;
- перед удалением записи в табл№1 нужно удалить соотв. ей все записи в табл№2.
Добавлено @ 10:00
Забыл сделать вывод:

У тебя во всех остальных таблицах нельзя использовать Project_Number для связи с главной таблицей, а надо создать новое поле например T_Pro_Num и вот ТОЛЬКО его использовать для связи с главной таблицей.
PM MAIL   Вверх
Diless
Дата 13.3.2006, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.3.2006

Репутация: нет
Всего: нет



Цитата

У тебя во всех остальных таблицах нельзя использовать Project_Number для связи с главной таблицей, а надо создать новое поле например T_Pro_Num и вот ТОЛЬКО его использовать для связи с главной таблицей.

Я так сделала, но тогда при сохранении данных Project_Number второй таблицы затирает Project_Number первой, потому что в 1 таблице Ключевому полю ID=2 соответствует Project_Number = например 201, а во второй 200 (там две записи с Project_Number =200).
ЧЕГО ДЕЛАТЬ??????????
Неужели никто не сталкивался с такой проблеммой? Неужели мне теперь для каждого Project_Number делать отдельную таблицу? это ж повеситься можно!
PM MAIL   Вверх
StranikS
Дата 14.3.2006, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.2.2006

Репутация: нет
Всего: 2



Я не хочу показаться заумным но твоя БД не соответствует трем формам нормализации. Коротко: в литературе для тех кто создает БД есть три правила (три нормальные формы БД) при соблюдении, которых такие вот проблемы не случаются. Это вот на будущее.

Теперь что делать:
Не понятно зачем у тебя дублируются просто так поля в таблица. Зачем Project_Number в первой и во второй таблице одновременно, понятно что теперь там каша и как я понял Project_Number второй таблицы может не соответ. Project_Number первой (это кстати ошибка второй нормальной формы или первой - вот уже не помню). Удали Project_Number из второй таблицы, его функцию выполняет T_Pro_Num. Значения Project_Number должны задаваться только в одной таблице в главной, а в дочерней они только отображаются в T_Pro_Num.
PM MAIL   Вверх
Diless
Дата 17.3.2006, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 6.3.2006

Репутация: нет
Всего: нет



Спасибо. Действительно таблицы неправильно составила.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0897 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.