0

Я не профессионал (и не очень хорошо говорю по-английски), но я пытаюсь создать связь между таблицей и 5 другими таблицами, используя первичный ключ из двух полей.Создание отношений между таблицами и таблицами с использованием первичного ключа с двумя полями

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

Это то, что я подумал:

TabA TabB TabC TabD TabE 
Id   Id   Id   Id   Id 
....... ....... ....... ....... ....... (other fields) 

EventsTab 
TabRif 
IdRif 
....... (other fields or not?) 

EventsTab Первичный ключ = (TabRif, IdRif)

Теперь, если предположить, что в Табе есть Id = 3, в EventsTab первичный ключ будет "A3". Как связать это значение как внешний ключ? Является ли это возможным? Правильно?

Заранее благодарим за ваше время.

+0

Вы хотите, чтобы в EventsTab был внешний ключ, который ссылается на TabA или TabA, чтобы иметь внешний ключ, который ссылается на EventsTab? Вам действительно нужно, чтобы это был принудительный внешний ключ, или вы можете самостоятельно обрабатывать целостность данных, а затем просто использовать соответствующие объединения, когда вам нужно объединить две таблицы? – Matt

+0

Это действительно плохая идея, чтобы обратиться к конкретным полям или таблицам в ваших данных, чтобы присоединиться к этому конкретному полю или таблице. Вместо того, чтобы делать отдельную таблицу для TabA, TabB, TabC, TabD и TabE, возможно, все они должны быть в одной таблице с дополнительным полем, которое сообщает вам, являются ли они «A, B, C, D, E». Затем вы присоединяетесь к полям вместо того, чтобы пытаться присоединиться к объектам базы данных. – JNevill

+0

Как я уже сказал, я не профессионал, поэтому меня беспокоит целостность данных, но я не знаю, что мне действительно нужно для его сохранения. Я также думал хранить данные в другой таблице, используя EventTab только как ссылку на 5 таблиц. Пожалуйста, покажите мне способ ... – genespos

ответ

0

Когда вы говорите «в EventsTab первичный ключ будет A3», вы имеете в виду, что это на самом деле TabRif = A и IdRif = 3? Итак, первичный ключ на самом деле {A, 3}, а не только строка «A3»? В этом случае это лучше, но затем в каждой из ваших других таблиц я бы добавил столбец, что-то вроде «TabName» и имел 2 внешних ключа.

TabA (TabName foreign key -> EventsTab.TabRif, Id foreign key -> EventsTab.TabId) 

Это имеет смысл?

+0

Итак, первичный ключ на самом деле {A, 3}, а не только строка «A3»? ответ - ДА. Затем мне нужно будет изменить первичный ключ для пяти таблиц, используя также столбец «TabName»? – genespos

+0

У вас есть внешний ключ в TabA, TabB и т. Д., Который ссылается на EventsTab или внешний ключ в EventsTab, который ссылается на TabA, TabB и т. Д.? Потому что вы не можете сделать второй (хорошо вы могли бы с серьезным взломом, но это было бы baaaaaaad) – Matt

+0

EventsTab зависит от TabA, TabB, .... records: EventsTab хранит уведомления о событиях, и мне нужно, чтобы знать, что было уведомлено (из пяти таблиц) – genespos

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