我正在尝试构建一个网站,它将收集用户的信息并将其存储到表中。让我们将表命名为 user_details 。它将包含以下列:
ID,国家,城市,姓名,生日,性别,邮箱,密码,PHONE_NUMBER,search_phone_number
id = 1,2,3,4 .. INT AUTO_INCREMENT NOT NULL UNSIGNED PRIMARY KEY phone_number =其唯一但仅在同一个国家/地区。也许来自英国的人与来自西班牙但不在英国的人拥有相同的phone_number。换句话说,它与国家有关。为了使其唯一,search_phone_number将由country + phone_number组成,例如:SPAIN394221234。
用户将使用其唯一的search_phone_number搜索其他用户。
是否需要尝试对此表进行规范化?
同样在同一个网站上,我建立了一个简单的PM系统和一个图库(显示用户上传的图片)。所以我有2个表: 1)消息表(发件人,reiceiver,消息,....) 2)照片表(目录,文件名,...)
同样,是否需要规范化消息和照片表?
我有点困惑,因为在某些情况下,规范化是必须的,但在其他一些情况下则不是。
提前致谢!
答案 0 :(得分:1)
1 - 创建一个新的国家/地区表格,如...
create table country (id int auto_incremenet primary key, country varchar(100));
2 - 创建一个像...的新城市表
create city (id int auto_increment primary key , city varchar(100), fk_country_id int);
fk_country_id将具有该城市所在国家/地区的ID
3 - 在上面提到的表格中,删除国家/地区和城市列,只添加fk_city_id列。 fk_city_id将具有此人所在城市的ID
4 - 为
等手机创建表格create table user_phones(id int auto_increment primary key, fk_country_id int, phone_number varchar(15)) ;
5 - 为此表添加唯一索引,如此...
CREATE UNIQUE INDEX idx_country_phone ON user_phones(fk_country_id, phone_number);
从您的表中删除电话号码和search_phone_number,并将fk_user_phones_id列添加到您的表中..它将具有来自user_phones表的相关行的ID值
6 - 当用户进行搜索时,按国家/地区ID和电话号码进行过滤