First, I wanted to thank you for being so helpful. I really appreciate your efforts - thanks! I have an example here from a book I have called "Database Modeling and Design" In this example "Individual" is a parent to "Employee" and "Customer" So: create table individual ( indiv_id char(10), indiv_name char(20) indiv_addr(20) primary key(indiv_id)) create table employee( emp_id char(10), job_title char(15), primary key(emp_id), foreign key (emp_id) references individual on delete cascade on update cascade); create table customer( cust_no char(10), cust_credit char(12), primary key(cust_no), foreign key (cust_no) references individual on delete cascade on update cascade); In my example I have two users who log onto the site... "individual" is a generalization of "employee" and "customer." If a user who logs on w/ a given session were to update attributes in both "individual" and "employee", for example, both "individual" and "employee" tables would have to be locked. This means in another user session, that "customer" table would momentarily be locked from the "individual" parent table. Wouldn't this slow things down for a site w/ many users? In these instances, wouldn't it be better to have two tables "employee" and "customer?" Both of these tables would have their aforementioned attributes and keys plus each of them would have the parent's attritbutes so: create table employee ( emp_id char(10) emp_name char(20) emp_addr char(20) job_title char(15), primary key(emp_id)); create table customer ( cust_no char(10), cust_name char(20), cust_addr char(20), cust_credit char(12), primary key (cust_no)); Is this a valid argument for repeating attributes in tables as opposed to generalization? Thanks again.