MySQL“子表”在表中?

时间:2017-06-25 21:19:56

标签: mysql

我想创建一个结构,其中有一个带有用户标识和用户名的表,每个用户标识获取它自己的表。我想知道是否有办法添加第三列,其类型是它自己的表。如果不是最好的方法是什么。

2 个答案:

答案 0 :(得分:1)

我认为保存用户属性的最佳方法是创建一个usermeta表。注意以下结构:

的用户:

user_id | user_name | user_mail
--------------------------------
1       | ali       | me@ali.com
2       | mahdi     | me@mahdi.ir

Usermeta

meta_id | user_id | meta_key | meta_value
-----------------------------------------
10      | 1       | points   | 10
11      | 1       | address  | london
12      | 2       | address  | iran
13      | 2       | is_vip   | true

在此表单中,您可以为任何所需的用户添加任何属性。它可以灵活地保存没有预定义的属性。在这种结构中,你没有数据冗余。

您也可以使用dynamic column

答案 1 :(得分:0)

我认为这不是一件好事。您最好为您的用户创建一个表,然后再创建一个包含UserId列的设置表。

这样,您可以使用连接引用用户特定的属性。 例如:

具有列的用户:UserId和用户名

包含列的表设置:UserId,Setting,Value

如果你想要那些组合,你可以使用这个sql:

SELECT Users.UserId, Username, Setting, Value 
FROM Users  
    INNER JOIN Settings ON Settings.UserId=Users.UserId