We are developing a system using MySQL database involve Holiday.
Some holiday may only apply to certain states, Example: Good Friday only apply to Hawaii, Kentucky, Louisiana and etc.
holiday | state
---------------------
Good Friday | Connecticut, Delaware, Hawaii, Indiana, Kentucky, Louisiana, New Jersey, North Carolina, North Dakota, Tennessee
Our team have some discussion on how should state store in MySql database after normalisation.
At first we come out the design like following (some columns like date or holiday id are skipped):
Design A
holiday | state code
------------------------
Good Friday | CT
Good Friday | DE
Good Friday | HI
Good Friday | IN
Good Friday | KY
Good Friday | LA
Good Friday | NJ
Good Friday | NC
Good Friday | ND
Good Friday | TN
But one of our team member propose another design:
Design B
holiday | state
---------------------
Good Friday | CT,DE,HI,IN,KY,LA,NJ,NC,ND,TN
Design B looks like contradict with what I learn about database design in terms of normalisation, but my team member insist this is the correct method, and never see people design table like Design A
May I know which one more proper? Or is there some new method in database design that I didn't know that cause Design B is used in current database design?
Thanks
[Edit]
To make things more specific, the purpose of the holiday table is to calculate due date:
date_begin + N working days = due_date
If N = 3 and date begin is 2020-04-07, (assume Saturday is working day)
2020-04-07 + 3 = 2020-04-10 // Good Friday
If the case register in Connecticut, where 2020-04-10 is holiday, thus the due date will be 2020-04-11, but if the case register in other state, example Washington DC, the due date will be 2020-04-10.