我需要设计一个数据库结构,在某些情况下保留客户通信信息和首选通信类型的记录。基本设计将包括
- 通讯记录:每个客户可能有一个或多个电话号码、地址、电子邮件地址等记录在数据库中。或者对于其中一些情况,他们可能没有任何定义的记录(比如他可能有电话号码但系统中没有定义任何地址)
- 记录子类型:电话号码可以是线路或GSM电话号码。地址可以是家庭或工作地址等。
- 客户偏好:客户将在某些情况下设置他们首选的通信类型。情况将包括:
- 发送一次性登录密码(仅限手机)
- 发送账单信息(可以是手机号码、电子邮件地址或普通地址。)
因此,一些偏好将接受某种通信类型(仅电话号码)或子类型(仅 GSM 电话号码),而有些可能会接受多种类型(地址或电子邮件)
我试图让数据库设计来处理这个问题,它必须是一个优化的结构。
我很难决定结构。为具有类型(电话)和子类型(GSM)的所有通信记录创建一个表将为每条记录包含许多不需要的字段(因为地址将包含城市和国家等数据库字段,而电话记录不会,虽然它需要数字字段)为每个创建单独的表更好,但是这次我在定义首选项表时会遇到问题,因为有些首选项只接受一个子类型(如 GSM 电话),而有些则接受多个类型(如地址或电子邮件)
满足这种需求的最佳数据库设计方法是什么?DBMS 尚未确定,但可能是 Postgresql 或 Oracle。