【发布时间】:2017-07-13 12:26:54
【问题描述】:
我们希望根据以下参数选择客户,即客户应该在:
特定城市,即 cityId=1,2,3...
应排除特定的 customerId,即 customerId=33,2323,34534...
具体年龄,即 5 岁、7 岁、72 岁...
此包含和排除列表可以很长。
我们应该如何为此设计数据库:
- 为这些包容性城市创建单独的表“customerInclusionCities”并执行以下操作:
从 cityId 所在的客户中选择 *(从 customerInclusionCities 中选择 cityId)
我们为年龄做一些,创建表“customerEligibleAge”,其中包含符合条件的年龄条目的所有条目:
即select * from customers where age in (select age from customerEligibleAge)
并为排除客户创建单独的表“customerIdToBeExcluded”:
即select * from customers where customerId not in (select customerId from customerIdToBeExcluded)
或
- 创建一个包含类别和 ID 的表。 即 Category1 表示城市,Category2 表示要排除的 CustomerIds。
哪种方法更好,为这些参数创建一个表,还是为每个列表(即年龄、客户 ID、城市)创建单独的表?
【问题讨论】:
-
您是否探索过构建星型模式?
标签: mysql sql database-design