3 回答
TA贡献1798条经验 获得超3个赞
首先,数据库中的空值没有错。并且正是出于此目的而制作的(未知属性)。在我看来,避免数据库中的空值是毫无意义的建议。
因此,您将具有三个(或四个)值-用于标识客户的名称(名字/姓氏,电子邮件地址和电话号码)。您可以将它们放在表中并向其添加约束,以确保始终至少填充这些列中的一个,例如coalesce(name, email, phone) is not null
。这样可以确保无法完全匿名完成预订。
根据您的解释,您不清楚是否总是会收到来自客户的相同信息。那么,发生客户预定一个房间并提供其姓名,然后又预定另一个房间并提供其电话的情况发生了吗?还是会在数据库中查找客户,找到他们的名字以及分配给他们的两个预订?在后一种情况下,您可以拥有一个客户表,其中包含您到目前为止所获得的所有信息,并且预订中将包含客户记录ID作为对此数据的引用。在前一种情况下,您可能不希望有一个clients表,因为您无法识别两个客户端(Jane Miller和mrsx@gmail.com)是真的是两个不同的客户端还是实际上只是一个客户端。
我到目前为止看到的表:
房间(room_id,...)
地点(venue_id,...)
客户(client_id,姓名,电子邮件,电话)
预订(venue_id,room_id,client_id等)
TA贡献1799条经验 获得超6个赞
如上所述,通常不需要这样做。没有价格的产品就是没有最终确定的产品。我们尚未决定价格。没有删除日期的部门仍处于活动状态,尚未(从逻辑上)删除。没有默认增值税的产品组就没有默认增值税,每个产品的增值税必须明确命名。我们创建数据库;我们知道缺少价值意味着什么。
添加回答
举报