Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在数据库中存储和组织数据可见性(公共/私人/仅限朋友)_Mysql_Sql - Fatal编程技术网

Mysql 如何在数据库中存储和组织数据可见性(公共/私人/仅限朋友)

Mysql 如何在数据库中存储和组织数据可见性(公共/私人/仅限朋友),mysql,sql,Mysql,Sql,我正在尝试建立一个小型的社交网络,我想为我的用户提供控制其数据可见性/隐私的能力,就像Facebook一样 例如,他们可以将自己的数据(伪数据、城市数据、生日数据、性别数据等)私有化、公共化或仅限于朋友 我已经建立了用户表:用户,用户配置文件 create table user( id int unsigned not null auto_increment, pseudo varchar(64) not null, password char(64) not null,

我正在尝试建立一个小型的社交网络,我想为我的用户提供控制其数据可见性/隐私的能力,就像Facebook一样

例如,他们可以将自己的数据(伪数据、城市数据、生日数据、性别数据等)私有化公共化仅限于朋友

我已经建立了用户表:用户,用户配置文件

create table user(
    id int unsigned not null auto_increment,
    pseudo varchar(64) not null,
    password char(64) not null,
    lname varchar(48) not null,
    fname varchar(48) not null,
    gender char(1) not null,
    --Other fields
    primary key(id),
    unique(pseudo)
);

create table user_profile(
    uid int unsigned not null,
    birthday date,
    phone varchar(15),
    address varchar(255),
    city varchar(64),
    postal_code varchar(10),
    -- ... Other fields
);
为了存储这些可见性数据,我尝试了以下方法:

create table data_visibility(
    id smallint unsigned not null auto_increment,
    name char(15) not null,
    primary key(id),
    unique(name)
);

create table user_visibility(
    uid int unsigned not null,
    pseudo smallint not null,
    lname smallint not null,
    fname smallint not null,
    email smallint not null,
    gender smallint not null,
    birthday smallint not null,
    -- ... Other fields
    primary key(uid),
    foreign key(uid) references user(id) on delete cascade on update cascade,
    foreign key(pseudo) references data_visibility(id),
    foreign key(lname) references data_visibility(id),
    foreign key(fname) references data_visibility(id)
    -- ... Other foreigns
);
但如果我通过添加新字段来更改用户表,我对这种解决方案不太满意,我还需要更新用户可见性字段,而且所有这些外键看起来都很奇怪


程序员通常做些什么来解决这个问题?

我也遇到过类似的问题,我没有告诉你这是一种好的操作方式,但我只是没有使用外键来进行这种类型的操作。我有一个Id和一个组。因为它在代码中,我只是假设它总是正确的。是的,看起来外键只是使事情复杂化了,我想我必须删除数据可见性表…我有一个类似的问题,我没有告诉你这是一个好的操作方式,但我只是没有使用外键进行那种类型的操作。我有一个Id和一个组。因为它在代码中,我只是假设它总是正确的。是的,外键看起来只是使事情复杂化了,我想我必须删除数据表。。。