sql - 数据库设计: how to indicate if a column data is public or private

标签 sql database database-design

我正在设计一个数据库,我有一个关于如何将某些用户数据设为私有(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 (或等效)列,用于指示可以应用隐私设置的每个列的隐私:

  1. 添加起来非常简单。
  2. 几乎不占用空间。
  3. 查询速度更快。
  4. 表明隐私设置是用户数据的固有部分。
  5. 消除架构中不必要的复杂性。

这些与其他列相关并且它们代表单一类型的逻辑对象的事实只是一种干扰。追求简单性、性能和逻辑正确性。

关于sql - 数据库设计: how to indicate if a column data is public or private,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19443149/

相关文章:

database - 设计表 : One to many and one to one at same time?

c# - 我在这里找平均水平吗

mysql - 如何通过一条查询语句从两个相关表中获取矩阵表?

SQL Server int 长度属性

database - 在 Access 中添加其他选项卡

sql - 处理 "hypernormalized"数据

sql - 只在sql server的列中插入日期

sql-server - SQL 服务器 : is there a way to prevent user from seeing all databases in an instance?

php - 按时区从sql表中排序和选择

database - 数据库连接中带有 OpenforwardOnly 标志的 Oracle 客户端。