如果我有三种类型的用户。比方说卖家、消费者和销售人员。我应该为名称、电子邮件密码和所有其他凭据等详细信息制作单独的表,并为每个表创建一个 role_type 表或单独的表。考虑到 DBMS 的所有工程原理(如规范化等),对于大型项目,哪种方法是最佳方法。
另请告诉我,如果我在表中有很多连接来执行某些操作,它会影响应用程序的性能吗?
最佳答案
如果区分这些人的唯一是角色,但所有细节都相同,那么我肯定会选择单 table 。
然而,问题是,一个人可以担任多个角色吗?如果不是这种情况,则向人员表添加一个 role_type
列。根据这些角色的固定程度,可能会使用查找表和外键,例如:
create table role_type
(
id integer primary key,
name varchar(20) not null unique
);
create table person
(
id integer primary key,
.... other attributes ...,
role_id integer not null references role_type
);
但是,根据我的经验,每个人只能担任一个角色的限制通常不成立,因此您需要多对多关系
create table role_type
(
id integer primary key,
name varchar(20) not null unique
);
create table person
(
id integer primary key,
.... other attributes ...,
);
create table person_role
(
person_id integer not null references person,
role_id integer not null references role_type,
primary key (person_id, role_id)
);
关于postgresql - 我真的需要为我的三种类型的用户提供单独的表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55060480/