This is personal study note Copyright and original reference are from: https://www.youtube.com/watch?v=FYDHJbIwm5Y&list=PLuHgQVnccGMDF6rHsY9qMuJMd295Yk4sa ================================================================================ Each column should be automatic ================================================================================ Unnormalized form table First normal form table ================================================================================ Meaning of "atomic column": each column should have one value "Tag column" is not atomic ================================================================================ "None atomic column" can be no problematic if you don't need to divide data like "rdb, free" ================================================================================ However, "none atomic column" can be problematic if you want to perform following operations - SELECT * FROM topic WHERE tag='free' (where condition) - SELECT * FROM topic ORDER BY tag (sort) ================================================================================ For 1NF, method1 "This row" can be splited into "2 rows" to satisfy "1NF" Even if it satisfies 1ND but there happen "more duplicates" in rows ================================================================================ To satisfy 1NF, you can use method2 (but which is not flexible) by create 2 tag columns (tag1, tag2) ================================================================================ To satisfy 1NF, you can use method3 (which turns out the best one) Split the table topic () : tag (N) topic (M) : tag (N)