我的表格如下:
instructors(instructorID(PK), name, address, contact_details, pps_number,
job_desc, specialty)
admin(adminID(PK), name, address, contact_details, pps_number, job_desc)
equipment(equipmentID(PK), type_of_equipment, last_used_by, class_used_for,
date_used)
members(memberID(PK), name, address, contact_number, payment_type,
membership_paid)
receipt(receiptID(PK), date_and_time, supplier)
classes(classID(PK), weights, abs, core_strength)
有人可以教我如何正常化这些吗?
答案 0 :(得分:4)
“钥匙,整个钥匙,只有钥匙,所以帮助我Codd。”
这是关于3NF表的“说法”。简单地说,每个表必须包含一个主键(1NF)。 2NF是“整个密钥”,这意味着每个表中的所有属性都必须依赖于表的主键。 3NF“只不过是关键。”要求非关键属性依赖于“只有关键”,确保3NF。这意味着非键属性不能依赖于任何给定表的主键本身以外的属性。
例如:
instructors(instructorID(PK), name, address, contact_details, pps_number, job_desc, specialty)
此表有一个主键,因此它适合1NF。 2NF声明所有属性都取决于密钥。 对于这个表,我个人并不认为job_desc和专业依赖于教师本身,就实体属性关系而言。为此,我实际上将该属性拆分为一个新表。
instructors(instructorID(PK), name, address, contact_details, pps_number, job_ID)
jobs(job_ID, job_desc, specialty)
Instructors表现在适合2NF。 现在为第三范式。 3NF“只是关键”,这意味着非关键属性不能依赖于任何给定表的主键本身以外的属性。
让我们来看看教师的属性: instructorID(PK) - PK本身。
name - Only dependent on the instructor itself. address - Only dependent on the instructor itself. contact_details - Only dependent on the instructor itself. pps_number - I don't know what this is, so I can't say whether or not it should stay. job_ID - Only dependent on the instructor itself.
此表现在符合3NF。
以下是我发现非常有用的关于规范化的一些其他信息。