Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2010, 17:46   #1
darknezz
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 16
Вопрос Помогите связать таблицы

Привет всем! У меня возникло очень сильная проблема, не могу связать таблицы: Бд в Access , язык программирования Delphi
Имеются следующие таблицы

Tab1 - личные данные владельца
Tab2 - Данные о земле

Каждый человек может иметь несколько земель, и земля в свою очередь может иметь несколько владельцев!!!

Извините меня если этот вопрос для кого то тривиальный, я просто недавно с базами данных столкнулся, вот на этом затормозился
darknezz вне форума Ответить с цитированием
Старый 04.08.2010, 03:35   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Хорошо

Да все просто делается. Во вложении предлагаю Вам в качестве примера простеньку структуру БД. Таблица Tab2 связаная с таблицей Tab1 по полю ID_FIO куда заносится айдишник клиента. В таблице Tab2 создаете нужные Вам поля, в которых заносите информацию о земле. А таблицы между собой связываете в запросах (самый надежный вариант). Например:
Код:
select <Значение из какого-то поля из таблицы Tab2> from Tab2 where Фамилия='+QuotedStr(Form1.Edit1.Text) + ' and Имя=' + QuotedStr(Form1.Edit2.Text);
Где в Edit1 и Edit2 соотвественно фамилия и имя нужного человека. Запрос писал не проверял, хотел донести мысль просто.
Изображения
Тип файла: png Безымянный.PNG (3.9 Кб, 70 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.08.2010, 06:18   #3
darknezz
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 16
По умолчанию

Спс, сейчас опробую!!!!!!!!!!

Попробывал, но получается так, когда добавляешь во вторую таблицу запись добавляю, запись добавляется и соответствует что 1 запись в Nf,1 соответствует несколько записей в Таб2 но у земли может быть несколько владельцевпоэтому когда добавляешь запись в первую во второй автоматически создаётся новая пустая запись!!!!!!

Последний раз редактировалось artemavd; 04.08.2010 в 07:58.
darknezz вне форума Ответить с цитированием
Старый 04.08.2010, 08:01   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Перед вставкой записи во вторую таблицу, делайте запрос на получение ID из первой таблицы человека, для которого добавляете информацию о земле. И потом одновременно со вставкой записи во вторую таблицу, добавляйте ID-шник полученный в поле ID_FIO.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.08.2010, 08:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ребят, ну это ж классика.
Связь многие ко многим организуется через промежуточную таблицу.
Допустим таблица Tab1 (личные данные владельца) ID Фамилия
Tab2 - (Данные о земле) ID ДанныеОЗемле

тогда создаём таблицу LandOwner
В ней обязательны поля:
ID (уникальный ключ)
ID_FIO (данные владельца ) - это foreign key - ссылка на Tab1
ID_LAND (данные о земле) - это foreign key - ссылка на Tab2
ну и возможны поля (по желанию) определяющие какие-то аттрибуты, принадлежности земли с ID_Land владельцу ID_FIO (например, номер и дата регистрирующего документа, срок действия (если это аренда), когда внесена запись в БД, доля принадлежности, ну и т.д. и т.п. - это Вам, как разработчику решать.

и потом уже, очевидно, что элементарно может быть несколько владельцев у одной земли, а у одного владельца может быть несколько земель...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.08.2010, 09:36   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

А я разве не об этом?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 04.08.2010, 11:37   #7
darknezz
Пользователь
 
Регистрация: 03.08.2010
Сообщений: 16
По умолчанию

Спс, сейчас попробую!!!:

Получается, спасибо огромное!!!!!!!!!!!!

Последний раз редактировалось artemavd; 05.08.2010 в 03:26.
darknezz вне форума Ответить с цитированием
Старый 05.08.2010, 03:27   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Поздравляем
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу связать 3 таблицы SweetLan Общие вопросы C/C++ 0 22.04.2010 16:30
Связать таблицы (mysql) aisthetes SQL, базы данных 0 28.03.2010 14:45
Как связать таблицы ksmspb Microsoft Office Excel 3 24.10.2009 19:35
Связать таблицы Access tarakan1983 БД в Delphi 4 29.10.2008 05:25
Программно связать таблицы Таня84 БД в Delphi 0 20.03.2007 18:43