2015-04-20 5 views
0

Извините за такой неопределенный заголовок - не знал, как назвать его лучше.Связь между двумя таблицами

Моя проблема заключается в следующем. У меня есть 2 таблицы, tbl1, tbl2.

tbl1: 
tbl1ID 
tbl1SomeInf 

tbl2: 
tbl2ID 
tbl1ID (linked by FK) 
tbl1SomeInf (copied from tbl1 based on the FK of tbl1ID, basically same row but different column) 
tbl2SomeInf 

То, что я хочу, чтобы добиться того, что я знаю, что tbl1SomeInf всегда будет ассоциироваться с tbl1ID и при создании tbl2 я бы вручную продолжать добавлять значения tbl1SomeInf, где могут быть сделаны ошибки.

Вопрос: Как мне установить связь между столбцом tbl1SomeInf от tbl1 и tbl1SomeInf от tbl2. В принципе уже существует связь, связывающая tbl1ID (tbl1) с tbl1ID в tbl2, и MS Access не позволит мне создать вторую взаимосвязь. Логически для меня это не отношения, просто беря tlb1SomeInf из tbl1, который связан с tbl1ID и копирует его в tbl2 в поле tbl1SomeInf, которое связано с Fcl tbl1ID.

Если какая-либо дополнительная информация требуется, пожалуйста, спросите^_ ^.

Редактировать: Позвольте мне привести пример. Скажем, эти записи в tbl1:

tbl1ID tbl1SomeInf 
9017  ABC 
9016  DEF 
1140  ABC 
1144  KJF 
1000  KJF 

Теперь tbl2 записи:

tbl2ID tbl1ID tbl1SomeInf tbl2SomeInf 
AutoID 9017  ABC   irrelevant 
.   9017  ABC   irrelevant2 
.   9016  DEF   irrelevant3 

В основном делают tbl1SomeInf заполнится автоматически на основе FK из tbl1ID.

P.S .: Все это в MS Access.

+0

Куда/и что у вас на сайте? –

+0

Мой плохой, объяснил реальный вопрос немного более indepth. Сожалею. – emihir0

+0

Я не уверен, что это из-за обфускации или нет, но я спрашиваю «Почему?». Какова точка tbl1, если вся информация уже содержится в tbl2? Я могу понять, было ли это только tbl1ID в tbl2, и у вас было отношение 1 к многим между обоими таблетками, но это не так. Этот тип поражения даже имеет tbl1. – Newd

ответ

0

Вы не сохраняете поле table1SomeInfo во второй таблице вообще. Поскольку ваши таблицы1 и 2 уже имеют отношения, вы всегда можете получить доступ к таблице1 из таблицы2. обеспечивая правильный внешний/связующий ключ. Просто удалите ненужное поле table1SomeInf из таблицы2.

для получения результата, как это:

tbl2ID tbl1ID tbl1SomeInf tbl2SomeInf 
AutoID 9017  ABC   irrelevant 
.   9017  ABC   irrelevant2 
.   9016  DEF   irrelevant3 

Ваш запрос будет что-то Линке это:

SELECT tbl2.autoid, tb1.tbl1ID, tbl1.tbl1someinf, tbl2.tbl2someinf 
from tb1 inner join tbl2 on tb1.tbl1id= tbl2.tbl1id; 
+0

Спасибо за ответ. Я, однако, хотел бы иметь tbl1.someinf в tbl2, потому что tbl1.someinf влияет на вход tbl2.someinf. Есть ли способ найти значение tbl1.someinf на основе FK tbl1.ID? Так что, когда я заполняю данные tbl2, я бы заполнил tbl1ID (скажем, 9017), он автоматически заполнил бы «ABC» в tbl1someinf, а затем я запишу значение tbl2SomeInf вручную. – emihir0

+0

Я думаю, вам нужно изучить самые основы программирования баз данных, это может не только помочь вам преодолеть эту проблему, но и в целом улучшить ваши знания относительно «рациональной базы данных» и того, как они работают. удачи. –

+0

Не могли бы вы порекомендовать какой-нибудь источник, пожалуйста? – emihir0

0

@krish правильно. Реляционная база данных полезна, потому что они уменьшают избыточность данных, что и есть то, что вы делаете. Если tbl1SomeInf влияет на tbl2SomeInf, тогда это бизнес-логика - не делайте свою базу данных связанной с чем-то подобным.

Я думаю, вы использовали оба поля от tbl1 и первые три от tbl2 (или все 4), вы можете создать отношения, чтобы отразить это, однако я не уверен, насколько он будет полезен.

enter image description here

Смежные вопросы