我正在尝试构建学校管理系统,但我在设计最佳数据库结构时遇到了麻烦。我有学生,教职员工和用户表用于登录。用户表将只包含登录信息(userNumber、密码),而学生和教职员工将包含个人信息。我将学生和教职员工分开,因为他们包含不同的个人数据。但他们都有一个userNumber。
users(
id,
userNumber,
password
)
students(
id,
studentNumber,
name,
age
)
staff(
id,
staffNumber,
name,
age,
salary,
dateOfHiring,
staffType
)假设我使用userNumber 98242登录,如何让系统知道我应该在学生表还是教员表中查找?
我想要一些关于数据库结构的建议。
发布于 2020-05-02 07:07:51
只需向users表添加列userType

发布于 2020-05-02 07:10:35
你可以做一些事情。您可以在users表中创建一个类型并进行查找。您还可以连接这两个表,然后在收到记录时检查是否返回了学生id或教职员工id。
那么您的查询可能如下所示
SELECT users.id as user_id, students.id, staff.id FROM users
LEFT JOIN students ON users.id = students.id
LEFT JOIN staff ON users.id = staff.id
WHERE id = 98242发布于 2020-05-02 07:18:39
create table persons (
id,
name,
age
);
create table users (
number,
password
) inherits (persons);
create table students (
) inherits (users);
create table stuff (
salary,
dateOfHiring,
staffType
) inherits (users);简单地说,就像这样。使用tableoid system column,您可以知道特定行的原点:
select
*,
tableoid::regclass -- Prints the origin table name (users, students, stuff, ...)
from users
where number = 98242;https://stackoverflow.com/questions/61552136
复制相似问题