Hi all,
I am trying to plan out a structure for my user data in the CMS I'm rebuilding. Also groups data. I have broken user info down into user profile and user options. I don't have a lot of experience designing DB's so I could use any tips on making this more efficient. Here are the structures I made up, please make suggestions, I would be very appreciative:
CREATE TABLE users
(
userid int(6) unsigned not null auto_increment,
username varchar(32) not null,
password varchar(64) not null,
PRIMARY KEY(userid)
)
CREATE TABLE user_profiles
(
userid int(6) unsigned not null,
firstname varchar(32) not null,
lastname varchar(32) not null,
email varchar(64) not null,
location varchar(64) not null,
homepage varchar(256),
im_msn varchar(64),
im_aol varchar(64),
im_yahoo varchar(64),
im_icq varchar(64),
birthdate TIMESTAMP not null,
interests varchar(256),
occupation varchar(256),
title varchar(64),
created TIMESTAMP not null,
lastlogon TIMESTAMP not null,
PRIMARY KEY(userid)
);
CREATE TABLE user_options
(
userid int(6) unsigned not null,
remember enum('Y', 'N') NOT NULL default 'Y',
invisible enum('Y', 'N') NOT NULL default 'Y',
start_week enum('Sun', 'Mon', 'Tues', 'Wed', 'Thurs', 'Fri', 'Sat', 'Sun') NOT NULL default 'Sun',
time_offset tinyint(12) NOT NULL default '0',
allow_email_notify enum('Y', 'N') NOT NULL default 'Y',
PRIMARY KEY(userid)
)
CREATE TABLE groups_users
(
userid int(8) unsigned not null,
groupid tinyint(2) unsigned not null,
PRIMARY KEY(userid)
}
CREATE TABLE groups
(
groupid tinyint(2) unsigned not null auto_increment,
name varchar(32) not null,
create enum('Y','N') NOT NULL default 'N',
publish enum('Y','N') NOT NULL default 'N',
view_all enum('Y','N') NOT NULL default 'N',
edit_all enum('Y','N') NOT NULL default 'N',
admin enum('Y','N') NOT NULL default 'N',
PRIMARY KEY(groupid)
);