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