Я хотел бы попытаться сломать это, и решить проблему.Есть несколько вещей, на которые нужно обратить внимание:
Логика
Как вы собираетесь контролировать уникальность таблиц?Может быть АЛЬБЕРТ как в администрации студентов , так и .Это может быть даже тот же человек, студент и работник учреждения.Я был таким человеком.
Предлагаемый SQL
Нет никаких объединений между вашими таблицами, это превратит результат в продукт для карт, и я почти уверен, что вы могли бы вернуть trueчтобы АЛЬБЕРТ входил в систему с паролем NIKOLA.
Я думаю, что вы, вероятно, хотели использовать оператор набора
select ...
from student
where ...
union all
select ...
from admin
where ...
UNION ALL означает, что нет необходимости проверятьуникальность, нет необходимости в дополнительной сортировке .
защита паролем
Чтобы иметь возможность ВЕРНУТЬ пароль, вы сохраняете его открытым текстом.Люди сегодня должны унаследовать достаточное количество цифровых данных, чтобы пароли не хранились в виде открытого текстаВсегда.
В этой статье приведен пример настройки пользовательской аутентификации в APEX с помощью хэширования паролей.Редкий среди разочаровывающего числа, которое не хэширует пароли.Этот также хэшируется с именем пользователя и солью, что лучше.http://barrybrierley.blogspot.com.au/2015/05/custom-authentication-in-apex.html
Он также начинает удовлетворять ваши потребности в отношении типа пользователя.
Я уверен, что в документации APEX был пример, но я не смог его найти.
Тип пользователя - Авторизация
После того, как вы установили, что у вас есть действительный пользователь, вы можете определить, к какому типу пользователей он относится, а затем контролировать его доступ к различным компонентам, используя Схемы авторизации .
Для более гибкой системы я хотел бы дополнительно абстрагироваться и использовать схемы авторизации для управления привилегиями для определенных компонентов и распределить их для бизнес-ролей , которые находятся вочередь предоставляется пользователям .
Это служит вашим "множественным типам людей".
Проверка "Запись существует"
С самого начала я кое-что узналв AskTom относительно проверки на наличие строк, которая, кажется, хорошо работает во всех версиях
declare
ln_exists pls_integer;
begin
select count(*)
into ln_exists
from dual
where exists (
select null
from your_table -- whatever you're looking for
where id = p_id
);
return ln_exists = 1; -- true if exists
end;
Oracle знает, как потратить минимум усилий на решение этой проблемы.
МаВ остальных вариантах просто выберите слишком много строк в базе данных.
Общие приложения
Вы можете фактически определить несколько точек входа, используя разные аутентификации для одного и того же приложения.http://www.grassroots -oracle.com / 2014/04 / разделяемая аутентификация по-множественный апекс-apps.html