假设我的系统中有两种类型的用户。
会编程的人和不会编程的人。
我需要将两种类型的用户保存在同一个表中。 可以编程的用户与不能编程的用户有很多不同的属性,定义在另一个表中。
以下解决方案的优点是什么,还有更好的解决方案吗?
解决方案一
一个表包含具有相应属性的列。
Table `users`:
----------------------------
| id | name | can_program |
----------------------------
| 1 | Karl | 1 |
| 2 | Ally | 0 |
| 3 | Blake | 1 |
----------------------------
方案二
两个表通过主键和外键相互关联。 一个表包含用户,另一个表只包含可以编程的人的 ID。
表用户
:
--------------
| id | name |
--------------
| 1 | Karl |
| 2 | Ally |
| 3 | Blake |
--------------
表can_program
:
---------------------
| id | can_program |
---------------------
| 1 | 1 |
| 3 | 1 |
---------------------
最佳答案
用户和允许他编程的属性之间存在 1-1 关系。我建议将此信息存储为表 users
中的附加列。创建额外的表基本上会导致与原始表具有 1-1 关系的额外存储结构。
关于mysql - 在关系数据库中保存属性的良好做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55230278/