我正在为网站建模MySQL数据库。
我现在正在制作'people'表,并决定需要列。
人有一个名称列,我希望添加别名列,其中包含各种约定中的名称
例如,名称为'Micheal Jackson'的人可能具有别名,例如' M.杰克逊”, 'Jackson,M'或'M.J。'。
无论如何,每个人可以拥有不同数量的别名,那么数据类型可能是合理的?
将别名字段设为 Varchar ,并将每个别名放入其中,并将它们拆分为PHP?
在PHP中从 name 创建别名动态?而不是把它放在DB?
我在等待好的建议,谢谢!
答案 0 :(得分:4)
执行此操作的规范化方法是使用单独的别名表,其中包含人员ID字段和别名字段,并建立多对一关系。另一种方法是,如你所说,VARCHAR
字段包含所有别名,并在PHP中拆分它们。如果您永远不需要搜索别名,这应该可行,但规范化版本更清晰。
答案 1 :(得分:2)
制作一张新表并将其称为aliases
。此表格与您的表格people
应具有多对一关系。
表aliases
应该有一个父表persons
的外键(即有一个引用aliases.personId
的列people.personId
)
然后使用Joins
来检索数据。
的引用:
最后也是最重要的Normalization
答案 2 :(得分:1)
最好使用另一个表作为别名,但如果你想使用一个表,还有另一种方法
用#分隔名称和别名并将它们放在一列
迈克尔杰克逊#M.Jackson在php代码中你可以使用explode来获取名称和别名
$fullname = "Micheal Jackson#M.Jackson";
$each = explode('#' , $fullname );
$each[0];//Micheal Jackson
$each[1];//M.Jackson