python - mysql为一个人存储多个别名

标签 python mysql database web-services

一个人有一个名字和多个别名。人物可以通过名字和别名进行索引。所以我设计了两个表来存储这种关系: 和 。像这样:

<user table>

|user_id    | int
|name       | varchar



<alias table>

|user_id    | int
|alias      | varchar

通过 user_id 连接两个表。因此一个用户可以设置多个别名,并且可以通过别名进行索引。 但是现在我们需要添加唯一约束。如果用户名和每个别名相同,则被视为重复!所以我认为使用一个表存储,如下所示:

<user table>

|user_id           | int
|name              | varchar
|sorted_alias_str  | varchar


ps:  sorted_alias_str store each alias which join by comma. like: 'name1,name2'

具有唯一约束(名称、sorted_alias_str)

但用户别名的数量受“sorted_alias_str”长度的限制。

有更好的方法吗?

最佳答案

唯一约束应该在(user_id,name)上。这可以防止一个人 (user_id) 多次使用相同的别名。

关于python - mysql为一个人存储多个别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38625706/

相关文章:

python - 从没有索引的列表中删除元素

Python csv阅读器忽略作为字符串一部分的双引号内的分隔符

python - 我如何从元组列表中制作字典?

php - SQL 赞成票反对系统

sql - 这如何不使 varchar2 效率低下?

python - 获取每行中具有最大值的列的索引,无需 (...,) pandas python

mysql - 当某些状态发生变化时,如何从日志表中获取时间戳?

mysql:concat的特殊用途

mysql - ORDER BY FIELD 子句在具有多个 UNION clouse 的复杂 mysql 查询末尾

database - 恢复数据库和关系已存在时出现错误 "relation does not exist"