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)