Itu sedikit tergantung pada penggunaan Anda. Pendekatan yang dinormalisasi (taman adalah meja) akan membuat kueri berikut lebih mudah:
- Berapa banyak penampakan burung di setiap taman
- Di taman mana Anda kemungkinan besar akan melihat burung XYZ
- Mungkin ada beberapa pertanyaan seperti ini
Tapi ya, Anda mengalami beberapa masalah yang sulit. Pola "jika taman XYZ tidak ada maka masukkan ke dalam tabel taman" mengalami kondisi balapan yang harus Anda tangani.
Sekarang, bagaimana dengan beberapa argumen yang menentang normalisasi di sini... Sebagian besar basis data pelanggan mungkin menyimpan alamat jalan saya sebagai "123 Foo Street", tanpa menormalkan nama jalan secara dinamis (kita dapat memiliki tabel jalan dan meletakkan "Foo Street" di sana, lalu merujuk itu dari tabel lain. Mengapa saya mengangkat ini, baik untuk menunjukkan bahwa bahkan orang-orang yang membenci data berulang mungkin akan mengakui bahwa ada beberapa garis yang tidak perlu Anda lewati.
Contoh konyol lainnya adalah bahwa kita mungkin berbagi nama belakang. Apakah kita benar-benar membutuhkan tabel untuk nama belakang yang unik dan kemudian kunci asing dari tabel lain? Mungkin ada beberapa aplikasi di mana ini membantu tetapi untuk 99% aplikasi di luar sana, ini terlalu jauh. Ini hanya lebih banyak pekerjaan dan lebih sedikit kinerja dengan sedikit atau tanpa hasil.
Jadi saya akan mempertimbangkan bagaimana saya ingin dapat meminta data kembali dari tabel. Jujur dalam hal ini saya mungkin akan membuat tabel terpisah untuk taman. Tetapi dalam kasus lain saya memilih untuk tidak melakukannya.
Itu dua sen saya, satu sen setelah pajak.