2011-09-20 57 views
1

我有一个情况,其中1条记录可能有多行可能的主表。MySQL管道分离值vs映射表

例如

sports master table 
Cycling 
Rafting 
Shooting 
Football 
Cricket 

现在我人表

Person 
id 
first_name 
last_name 

我能有运动的id为管分离领域的人表的外键或者我可以创建单独的表将作为映射表

例如

sports_persons_mapping 
id 
person_id 
sports_id 

快来从2个选项中进行选择。

管分隔字段在人员表或映射表中sports_persons_mapping?

在搜索哪些是有效的或哪些更有效,为什么?

+0

[“associative entity”](http://en.wikipedia.org/wiki/Associative_Entities) –

回答

4

在您调用它时使用映射表。避免使用逗号分隔或管道分隔值的列,因为这违背了良好的数据库设计实践,并且当您必须开始查找数据,插入新数据等时,您的生活变得不可能。您的查询变得过于复杂,难以编写和您的查询性能保证不会达到最佳。

+0

谢谢lcarus,这非常有帮助。 – iprashant