我对使用MySQL非常陌生,但我们的任务是创建一个数据库来保存大量的客户数据。
我遇到的最大问题是规范化以及如何导入数据以确保其符合规范化规则。显然,我可以把所有东西都放在一张大桌子上并希望最好,但是从我读过的任何东西中都会引起很大的问题。
我应该如何开始导入采用以下形式的数据(不是实际数据,而是形式将是更多行和更多列)
Unique Reg Num |Promotion |Advert |Characteristics
---------------|-----------|--------|----------------
123 |20% Off |Aug 15 |Green;Blue;Purple
124 |10% Off |Sep 14 |Purple;Red;Green
125 |20% Off |Aug 15 |Green;Blue;Purple
126 |10% Off |Sep 14 |Purple;Red;Green
所以促销和广告列应该规范化并且具有单独的表(这是我认为的多对一关系)链接回唯一注册号但是主要问题是如何对“特性”列进行排序。 (如果需要其他问题,我会设置单独的线程)
我有几个列,例如带有分隔数据的“特性”列。我应该如何将其上传到数据库,以便使用这些列查询数据?
我可以扩展每个分隔数据的行,这将为我提供唯一Reg Num 123的3行数据(仅使用上面的示例表)。但是,如果我有另一个具有多个特征的列,例如3个国家(德国;法国;意大利),那么唯一注册数 123的行数将增加到9行数据。
除了创建一个大表之外,我真的不知道如何开始解决这个问题。
我正在使用MySQL 6.3,使用MySQL Workbench。目前在Win 7中设置用于测试,但将在Windows Server 2012上设置实际数据库。
如果我遗漏了相关信息,请告诉我,我会更新问题。
提前致谢
答案 0 :(得分:1)
以下是您的数据理想情况。我会将您的样本表分成两个表,一个用于促销信息,另一个用于特征:
<强>优惠强>
Unique Reg Num |Promotion |Advert
---------------|-----------|--------
123 |20% Off |Aug 15
124 |10% Off |Sep 14
125 |20% Off |Aug 15
126 |10% Off |Sep 14
<强>特性强>
Unique Reg Num |Characteristic
---------------|----------------
123 | Green
123 | Blue
123 | Purple
124 | Purple
124 | Red
124 | Green
125 | Green
125 | Blue
125 | Purple
126 | Purple
126 | Red
126 | Green
这些表格相当规范,可能足以满足您的使用需求。您面临的挑战是摆脱CSV数据。