Я изучаю таблицы разбиения на SQL Server, и я столкнулся с этой проблемой: у меня есть две связанные таблицы - родительский и дочерний. Один из них (или, возможно, оба) - это секционированная таблица. Когда я реализую секционированный вид, мне нужно включить в него 2 одинаковых столбца - тот, который ссылается на родительскую таблицу (от дочернего) и первичный ключ, на который ссылаются (от родителя)?Создать секционированный вид связанных таблиц
У меня troble с ним, так как MSDN говорит:
Колонка Правила:
Все столбцы в каждой таблице членов, должны быть включены в список выбора. SELECT * FROM - допустимый синтаксис.
Но представления должны облегчать представление (связанных) таблиц, поэтому не все столбцы должны быть включены в представление.
И в моем случае, согласно MSDN, я должен включить все столбцы обеих таблиц в представление (и 2 из них будут идентичными). Мне кажется, это не очень логичное решение.
Например:
База данных 1:
create table manufacturer
(
id int,
manufacturer_name varchar(35),
PRIMARY KEY (id),
CONSTRAINT CHK_manufacturer_id
CHECK (id < 1000)
);
create table product
(
pid int,
product_name varchar(35),
mid int,
PRIMARY KEY (pid),
CONSTRAINT CHK_product_pid
CHECK (pid < 1000),
CONSTRAINT FK_product_mid
FOREIGN KEY (mid)
REFERENCES manufacturer(id)
);
База данных 2:
Same tables with CHECK constraints (id >= 1000)
Вид:
create view dist_view as
select *
from db1.product p1
inner join db1.manufacturer m1 on p1.mid = m1.id
UNION ALL
select *
from db2.product p2
inner join db2.manufacturer m2 on p2.mid = m2.id
Так вид с видом как
pid | prod_name | mid | id | manufact_name
и mid = id.
По моему мнению, такое мнение противоречит основному преимуществу использования представлений - простому представлению таблиц. Поэтому я хотел бы иметь такое же вид:
(pid) | prod_name | manufact_name
Как это решить?