【发布时间】:2015-09-22 01:48:24
【问题描述】:
我是数据库设计的新手。
我有 3 张桌子。求职者、雇主和登录。
我想为两种类型的用户(求职者和雇主)提供相同的登录页面。在登录时,我想首先验证登录表中的凭据,并识别角色。根据角色,我可以转到求职者表或雇主表以获取有关用户的更多详细信息。
在注册/注册时,我想先填写求职者/雇主,然后更新登录表。 在用户登录时,我想先参考登录表,然后转到求职者/雇主表。
CREATE TABLE `jobseeker` (
`jobseeker_id` bigint(20) NOT NULL AUTO_INCREMENT,
`jobseeker_username` varchar(45) NOT NULL,
PRIMARY KEY (`jobseeker_id`,`jobseeker_username`),
);
CREATE TABLE `employer` (
`employer_id` bigint(20) NOT NULL,
`employer_username` varchar(45) NOT NULL,
PRIMARY KEY (`employer_id`,`employer_username`),
UNIQUE KEY `employer_username_UNIQUE` (`employer_username`),
);
CREATE TABLE `login` (
`login_id` bigint(20) NOT NULL AUTO_INCREMENT,
`login_username` varchar(45) NOT NULL,
`login_password` varchar(45) NOT NULL,
`login_role` enum('J','E') NOT NULL,
PRIMARY KEY (`login_id`),
UNIQUE KEY `login_username_UNIQUE` (`login_username`),
CONSTRAINT `login_username_fk` FOREIGN KEY (`login_username`) REFERENCES `jobseeker` (`jobseeker_username`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `login_username_fk1` FOREIGN KEY (`login_username`) REFERENCES `employer` (`employer_username`) ON DELETE NO ACTION ON UPDATE NO ACTION
);
现在的问题是,当用户注册为求职者时,求职者表被填充,尝试相应地更新登录表。但我在那里面临一个问题。由于外键限制,登录表尝试在雇主表中查找相同的用户名。我已经阅读了条件外键,不知道如何准确使用它,以及它的优缺点。
【问题讨论】:
-
也许你可以从雇主和求职者表中创建一个外键到登录表,而不是相反。