【发布时间】:2012-11-17 16:14:51
【问题描述】:
示例场景假设我的产品公司只有两种类型的买家。
买家 1:个人买家
买家 2:公司买家
买家 1 的独特之处属性:FName、LName、Bdate 和 Age
Buyer 2 的独特之处属性:Company_Name、Nature_Of_Business 和 Type_Of_Business
共同对于 2 个买家是:地址、电子邮件、电话号码、国家/地区
Db Table Name: Buyer
Attributes: BuyerID, BuyerType **FName,LName,Bdate,Age**,Company_Name, Nature_Of_Business and Type_Of_Business
我的解释:如果您尝试查看表格买家,个人买家和公司买家的属性都被合并,因为他们都是买家,他们只是根据买家类型(个人或公司)进行分类
问题:如果买家类型是公司,那么我的个人属性(即 FName、LName 等)将被记录为空,反之亦然。我的想法阻止我将它们分开,因为我不想为每个表创建买方 ID。无论是个人还是公司,它们都应该只有 1 个买方 ID。
问题:如何构造数据库表来解决这个查询:
我想要显示所有买家信息且没有空记录的报告。
听起来很疯狂,但当可能生成报告时,如果买家类型为公司,详细信息可能会给出个人买家字段的空记录
注意:如果我将过滤特定的买家类型,这可以轻松完成,但事实并非如此。我都想要。
【问题讨论】:
-
对不起,我不太明白:
I DON'T want to create Buyer's ID for each table。买家可以是个人和公司,还是应该只是其中之一?也许这个answer 可以帮助你。 -
@MostyMostacho 这意味着通过为个人买家和公司买家创建2个单独的表格,这将导致买家ID重复,因为他们都是买家。谢谢
-
他们不会被复制,因为他们将是不同的买家,他们完全可以不同。不过你没有回答我的问题:)
-
@MostyMostacho 抱歉,我的英语不太好。所以你的意思是可以构建 2 个表购买者(个人和公司)?如果是这样,最接近的可能性是个人买家拥有 ID #1,而公司买家也拥有 ID #1。您如何在报告中协调这一点?
-
嗯,我不明白他们为什么要和解。他们应该一起被喜欢吗?如果是这种情况,那么我将创建一个“抽象买家”表,然后为其他每个表创建一个。当然,每个表都会有自己的 ID,并且会有所不同。你所说的
reconciliation只是一个外键,它将每个子表链接到父表。只需一个简单的inner join就足够了 :) 检查我提供的链接,我已经清楚地解释了如何做到这一点。
标签: mysql database oracle database-design relational-database