我正在设计一个数据库,我有一个关于如何将某些用户数据设为私有(private)的问题。
我有一个用户表,其中包含姓名、城市、生日、传记等。用户可以将某些数据设为私有(private)(其他用户可以看到该数据)。
首先,我想向表中添加列来指示列是否是私有(private)的。例如:
User
-------
user_id | name | city | cityIsPrivate | birthday | birthdayIsPrivate
---------+------+------+---------------+----------+------------------
或者,另一种方法是添加 varchar 列来指示哪些列是私有(private)的:
User
-------
user_id | name | city | birthday | privateColumns
---------+------+------+----------+---------------
这个 privateColumns 将具有以下内容:“城市:NO;生日:YES”
。
用户表只有三列,可以是私有(private)的也可以是公共(public)的。我只需在表中再添加三列即可。
有什么建议吗?
最佳答案
如果每次查询主表时都必须连接数据,请勿将数据移动到单独的表中。
bool (或等效)列,用于指示可以应用隐私设置的每个列的隐私:
- 添加起来非常简单。
- 几乎不占用空间。
- 查询速度更快。
- 表明隐私设置是用户数据的固有部分。
- 消除架构中不必要的复杂性。
这些与其他列相关并且它们代表单一类型的逻辑对象的事实只是一种干扰。追求简单性、性能和逻辑正确性。
关于sql - 数据库设计: how to indicate if a column data is public or private,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19443149/