Может ли таблица иметь отношение один к одному с несколькими таблицами!?
Да, если вы действительно имеете в виду 1: 0/1:
Create Table Parent
(
Id ... not null Primary Key
, ...
)
Create Table Child1
(
Id ... not null Primary Key
, Foreign Key ( Id ) References Parent ( Id )
...
)
Create Table Child2
(
Id ... not null Primary Key
, Foreign Key ( Id ) References Parent ( Id )
...
)
Для этой настройки потребуется сначала ввести значение в родительскую таблицу, а затем дочерние таблицы (в произвольном порядке). Кроме того, вы можете добавить значение в одну из дочерних таблиц, а не в другую, поскольку они оба зависят только от наличия значения в родительской таблице, а не друг от друга.
Сложение
Чтобы выбрать из ваших дочерних таблиц, это будет связано с тем же процессом, что и любые другие родительско-дочерние отношения. Например:
Select P.Col1, P.Col2...
, Child1.Col1, Child1.Col2...
From Parent
Inner Join Child1
On Child1.FKCol = Parent.PKCol
Используя здесь Inner Join, я возвращаю только родительские строки там, где есть дочерняя строка. Если вам нужны все родительские строки и только те дочерние строки, в которых есть совпадение, вы бы использовали левое соединение вместо внутреннего соединения. Если вы хотите выбрать данные из нескольких дочерних таблиц одновременно, вы можете просто включить их в предложение From:
Select P.Col1, P.Col2...
, Child1.Col1, Child1.Col2...
, Child2.Col1, Child2.Col2...
, Child3.Col1, Child3.Col2...
From Parent
Left Join Child1
On Child1.FKCol = Parent.PKCol
Left Join Child2
On Child2.FKCol = Parent.PKCol
Left Join Child3
On Child2.FKCol = Parent.PKCol