type
и id_in_type
дизайн называют Полиморфные Ассоциации . Этот дизайн нарушает правила нормализации несколькими способами. Если ничто иное, это должен быть красный флаг, что Вы не можете объявлять реальное ограничение внешнего ключа, потому что эти id_in_type
может сослаться на любую из нескольких таблиц.
Вот лучший способ определить Ваши таблицы:
Vehicles
для обеспечения абстрактной контрольной точки для всех подтипов механизма и тестов механизма. Vehicles
. Tests
. Вот демонстрационный DDL:
CREATE TABLE Vehicles (
vehicle_id INT AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE Speedboats (
vehicle_id INT PRIMARY KEY,
col_about_speedboats_but_not_tests1 INT,
col_about_speedboats_but_not_tests2 INT,
FOREIGN KEY(vehicle_id) REFERENCES Vehicles(vehicle_id)
);
CREATE TABLE Cars (
vehicle_id INT PRIMARY KEY,
col_about_cars_but_not_tests1 INT,
col_about_cars_but_not_tests2 INT,
FOREIGN KEY(vehicle_id) REFERENCES Vehicles(vehicle_id)
);
CREATE TABLE Gokarts (
vehicle_id INT PRIMARY KEY,
col_about_gokarts_but_not_tests1 INT,
col_about_gokarts_but_not_tests2 INT,
FOREIGN KEY(vehicle_id) REFERENCES Vehicles(vehicle_id)
);
CREATE TABLE Tests (
test_id INT AUTO_INCREMENT PRIMARY KEY,
col_about_all_tests1 INT,
col_about_all_tests2 INT
);
CREATE TABLE SpeedboatTests (
test_id INT PRIMARY KEY,
vehicle_id INT NOT NULL,
col_about_speedboat_tests1 INT,
col_about_speedboat_tests2 INT,
FOREIGN KEY(test_id) REFERENCES Tests(test_id),
FOREIGN KEY(vehicle_id) REFERENCES Speedboats(vehicle_id)
);
CREATE TABLE CarTests (
test_id INT PRIMARY KEY,
vehicle_id INT NOT NULL,
col_about_car_tests1 INT,
col_about_car_tests2 INT,
FOREIGN KEY(test_id) REFERENCES Tests(test_id),
FOREIGN KEY(vehicle_id) REFERENCES Cars(vehicle_id)
);
CREATE TABLE GokartTests (
test_id INT PRIMARY KEY,
vehicle_id INT NOT NULL,
col_about_gokart_tests1 INT,
col_about_gokart_tests2 INT,
FOREIGN KEY(test_id) REFERENCES Tests(test_id),
FOREIGN KEY(vehicle_id) REFERENCES Gokarts(vehicle_id)
);
Вы могли альтернативно объявить Tests.vehicle_id
, какие ссылки Vehicles.vehicle_id
и избавляются от vehicle_id внешних ключей в каждой тестовой таблице подтипа, но это разрешило бы аномалии, такие как тест быстроходного катера, который ссылается на идентификатор gokart.
if (Request.IsAuthenticated)
(Вот как это делается в шаблоне ASP.NET MVC по умолчанию)
Я использую:
<% if( HttpContext.Current.User.Identity.IsAuthenticated ) %>
или
<% if( HttpContext.Current.User.Identity.IsInRole("roleName") ) %>
, но другие ответы выглядят так, как будто они тоже будут работать нормально.
if (Request.IsAuthenticated)
Пример этого есть в элементе управления входа в систему базового проекта mvc.
если вам нужны роли, то
if (HttpContext. Current.User.IsInRole ("myrole"))
Думаю, вы захотите использовать:
<% if(this.User.Identity.IsAuthenticated) { %>
<% } %>