假设我们必须管理客户、员工和供应商的电话类型。这些都可以有多个电话号码,所以为了更好的管理,我想添加电话类型。每个实体可以有不同的电话类型,例如:
问题:我想只为客户显示可能的客户电话类型,供应商只显示可能的供应商电话类型等等。
问:管理这类数据的最佳关系数据库设计是什么?
案例1:创建一个表PhoneType,然后生成ClientsPossiblePhoneTypes、SupplierPossiblePhoneTypes、EmployeesPossiblePhoneTypes或
Case2: ClientPhoneType,EmployeePhonetype,SupplierPhoneType。
发布于 2014-06-29 13:07:12
如果您的各种类型的个人和组织(员工、客户、供应商)都有不同类型的多个电话号码,那么您希望将电话号码保存在子表中。
此子表应该是个人/组织和电话类型表之间的交集。
由于对于每种类型的法律实体都有不同的允许电话类型,因此可以为每个允许电话类型列表创建一个表(您的案例1)。唯一的问题是您可能有重复的数据,例如在多个允许的类型表中有一个“移动”记录。有一种方法可以有明确的允许电话类型列表,同时为了管理目的对这些列表进行合理化。
考虑到这一ERD:

有一个电话类型(PHONE_TYPE)主列表,其中包括每种可能的合法实体类型的标志,指示是否允许每种类型的法律实体使用特定的电话类型。这张桌子看起来可能是这样的:
create table PHONE_TYPE
( phone_type_id int primary key
, description varchar(10)
, is_client_type bit
, is_employee_type bit
, is_supplier_type bit
);从这个电话类型主列表中,您可以为每个合法实体电话类型列表(即CLIENT_PHONE_TYPE、EMPLOYEE_PHONE_TYPE、SUPPLIER_PHONE_TYPE)创建不同的视图。其中一个视图可能如下所示:
create view CLIENT_PHONE_TYPE
as
select * from PHONE_TYPE
where is_client_type = 1;这使您可以在一个地方维护电话类型主列表,同时为您支持的每种不同类型的法律实体强制执行允许的电话类型列表。
https://dba.stackexchange.com/questions/69294
复制相似问题