Правильная структура БД MySQL

Я разрабатываю панель веб-администрирования для каталога местных ресторанов. Их старая система очень неуклюжа и не может расширяться, не модифицируя кучу кода.

Текущая структура БД выглядит следующим образом:

table: Restaurants
cols: id, restname, preferred, image, phone, address, website, vip_special

Эта таблица статична в отношении столбцов.

table: Locations
cols: id, restname, downtown, bluffton, tybee, pooler, etc...

table: Cuisines
cols: id, restname, american, chinese, seafood, bar_tavern, etc...

table: Ambiances
cols: id, restname, outdoor_dining, fine_dining, waterfront, rooftop, romantic, etc...

Последние 3 таблицы требуют, чтобы разработчик вошел и добавил новый столбец для каждого нового местоположения, кухни или обстановки, а также изменил код, чтобы отразить эти новые столбцы.

Я не самый лучший, когда дело доходит до DBA, поэтому мне было любопытно, какова будет лучшая структура в этой ситуации.

Ассоциации: у ресторана может быть несколько мест, кухни и атмосфера

Спасибо всем за помощь.

1 ответ

Решение

Вот начало

restaurant
restaurant_id | restaurant_nm | everything that a restaurant has exactly one of

tag_restaurant_rel
restaurant_id | tag_id

tag
tag_id | tag_type(_id) | tag_nm

tag_type
tag_type_id | tag_nm

Тип тега может быть перечислением, если у вас есть несколько типов, которые не изменятся, вы можете удалить таблицу типов.
Я не уверен, если вы хотите назначить один ресторан нескольким местам, так как, хотя они могут быть цепочкой, атмосфера может отличаться, и меню может предлагать разные кухни

Другие вопросы по тегам