Mysql 如何在数据库中存储和组织数据可见性(公共/私人/仅限朋友)
我正在尝试建立一个小型的社交网络,我想为我的用户提供控制其数据可见性/隐私的能力,就像Facebook一样 例如,他们可以将自己的数据(伪数据、城市数据、生日数据、性别数据等)私有化、公共化或仅限于朋友 我已经建立了用户表:用户,用户配置文件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,
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和一个组。因为它在代码中,我只是假设它总是正确的。是的,外键看起来只是使事情复杂化了,我想我必须删除数据表。。。