I have a database that has 253 tinyint
columns (1), a column for each country in the world.
The table has more than 3k records and rising. Is there a way to better manage this data save?
I thought of two solutions:
Create a pivot table between the brand and country table, creating a record only for true values by deleting false ones. Each brand has 15 country enabled so for example with 2k brand I would have a pivot table with 20k records.
Simply create another table with only 253 columns so you can join to get true / false data.
Do you have any advice to give me? I suggest that access to the db is run via eloquent with query graphql.
This is my table structure:
CREATE TABLE IF NOT EXISTS `brand` (
`id` int(11) unsigned NOT NULL,
`userID` int(11) unsigned DEFAULT NULL,
`name` varchar(75) COLLATE utf8_bin NOT NULL,
`image` varchar(100) COLLATE utf8_bin NOT NULL,
`_it` tinyint(1) NOT NULL DEFAULT '0',
`_gb` tinyint(1) NOT NULL DEFAULT '0',
`_ru` tinyint(1) NOT NULL DEFAULT '0',
`_us` tinyint(1) NOT NULL DEFAULT '0',
`_sg` tinyint(1) NOT NULL DEFAULT '0',
`_in` tinyint(1) NOT NULL DEFAULT '0',
`_fr` tinyint(1) NOT NULL DEFAULT '0',
`_ca` tinyint(1) NOT NULL DEFAULT '0',
`_ch` tinyint(1) NOT NULL DEFAULT '0',
`_se` tinyint(1) NOT NULL DEFAULT '0',
`_br` tinyint(1) NOT NULL DEFAULT '0',
`_pt` tinyint(1) NOT NULL DEFAULT '0',
`_fi` tinyint(1) NOT NULL DEFAULT '0',
`_cn` tinyint(1) NOT NULL DEFAULT '0',
`_ie` tinyint(1) NOT NULL DEFAULT '0',
`_au` tinyint(1) NOT NULL DEFAULT '0',
`_zw` tinyint(1) NOT NULL DEFAULT '0',
`_zm` tinyint(1) NOT NULL DEFAULT '0',
`_za` tinyint(1) NOT NULL DEFAULT '0',
`_yt` tinyint(1) NOT NULL DEFAULT '0',
`_ye` tinyint(1) NOT NULL DEFAULT '0',
`_ws` tinyint(1) NOT NULL DEFAULT '0',
`_wf` tinyint(1) NOT NULL DEFAULT '0',
`_vu` tinyint(1) NOT NULL DEFAULT '0',
`_vn` tinyint(1) NOT NULL DEFAULT '0',
`_vi` tinyint(1) NOT NULL DEFAULT '0',
`_vg` tinyint(1) NOT NULL DEFAULT '0',
`_ve` tinyint(1) NOT NULL DEFAULT '0',
`_vc` tinyint(1) NOT NULL DEFAULT '0',
`_va` tinyint(1) NOT NULL DEFAULT '0',
`_uz` tinyint(1) NOT NULL DEFAULT '0',
`_uy` tinyint(1) NOT NULL DEFAULT '0',
`_um` tinyint(1) NOT NULL DEFAULT '0',
`_ug` tinyint(1) NOT NULL DEFAULT '0',
`_ua` tinyint(1) NOT NULL DEFAULT '0',
`_tz` tinyint(1) NOT NULL DEFAULT '0',
`_tw` tinyint(1) NOT NULL DEFAULT '0',
`_tv` tinyint(1) NOT NULL DEFAULT '0',
`_tt` tinyint(1) NOT NULL DEFAULT '0',
`_tr` tinyint(1) NOT NULL DEFAULT '0',
`_to` tinyint(1) NOT NULL DEFAULT '0',
`_tn` tinyint(1) NOT NULL DEFAULT '0',
`_tm` tinyint(1) NOT NULL DEFAULT '0',
`_tl` tinyint(1) NOT NULL DEFAULT '0',
`_tk` tinyint(1) NOT NULL DEFAULT '0',
`_tj` tinyint(1) NOT NULL DEFAULT '0',
`_th` tinyint(1) NOT NULL DEFAULT '0',
`_tg` tinyint(1) NOT NULL DEFAULT '0',
`_tf` tinyint(1) NOT NULL DEFAULT '0',
`_td` tinyint(1) NOT NULL DEFAULT '0',
`_tc` tinyint(1) NOT NULL DEFAULT '0',
`_sz` tinyint(1) NOT NULL DEFAULT '0',
`_sy` tinyint(1) NOT NULL DEFAULT '0',
`_sx` tinyint(1) NOT NULL DEFAULT '0',
`_sv` tinyint(1) NOT NULL DEFAULT '0',
`_st` tinyint(1) NOT NULL DEFAULT '0',
`_ss` tinyint(1) NOT NULL DEFAULT '0',
`_sr` tinyint(1) NOT NULL DEFAULT '0',
`_so` tinyint(1) NOT NULL DEFAULT '0',
`_sn` tinyint(1) NOT NULL DEFAULT '0',
`_sm` tinyint(1) NOT NULL DEFAULT '0',
`_sl` tinyint(1) NOT NULL DEFAULT '0',
`_sk` tinyint(1) NOT NULL DEFAULT '0',
`_sj` tinyint(1) NOT NULL DEFAULT '0',
`_si` tinyint(1) NOT NULL DEFAULT '0',
`_sh` tinyint(1) NOT NULL DEFAULT '0',
`_sd` tinyint(1) NOT NULL DEFAULT '0',
`_sc` tinyint(1) NOT NULL DEFAULT '0',
`_sb` tinyint(1) NOT NULL DEFAULT '0',
`_sa` tinyint(1) NOT NULL DEFAULT '0',
`_rw` tinyint(1) NOT NULL DEFAULT '0',
`_rs` tinyint(1) NOT NULL DEFAULT '0',
`_ro` tinyint(1) NOT NULL DEFAULT '0',
`_re` tinyint(1) NOT NULL DEFAULT '0',
`_qa` tinyint(1) NOT NULL DEFAULT '0',
`_py` tinyint(1) NOT NULL DEFAULT '0',
`_pw` tinyint(1) NOT NULL DEFAULT '0',
`_ps` tinyint(1) NOT NULL DEFAULT '0',
`_pr` tinyint(1) NOT NULL DEFAULT '0',
`_pn` tinyint(1) NOT NULL DEFAULT '0',
`_pm` tinyint(1) NOT NULL DEFAULT '0',
`_pl` tinyint(1) NOT NULL DEFAULT '0',
`_pk` tinyint(1) NOT NULL DEFAULT '0',
`_ph` tinyint(1) NOT NULL DEFAULT '0',
`_pg` tinyint(1) NOT NULL DEFAULT '0',
`_pf` tinyint(1) NOT NULL DEFAULT '0',
`_pe` tinyint(1) NOT NULL DEFAULT '0',
`_pa` tinyint(1) NOT NULL DEFAULT '0',
`_om` tinyint(1) NOT NULL DEFAULT '0',
`_nz` tinyint(1) NOT NULL DEFAULT '0',
`_nu` tinyint(1) NOT NULL DEFAULT '0',
`_nr` tinyint(1) NOT NULL DEFAULT '0',
`_np` tinyint(1) NOT NULL DEFAULT '0',
`_no` tinyint(1) NOT NULL DEFAULT '0',
`_nl` tinyint(1) NOT NULL DEFAULT '0',
`_ni` tinyint(1) NOT NULL DEFAULT '0',
`_ng` tinyint(1) NOT NULL DEFAULT '0',
`_nf` tinyint(1) NOT NULL DEFAULT '0',
`_ne` tinyint(1) NOT NULL DEFAULT '0',
`_nc` tinyint(1) NOT NULL DEFAULT '0',
`_na` tinyint(1) NOT NULL DEFAULT '0',
`_mz` tinyint(1) NOT NULL DEFAULT '0',
`_my` tinyint(1) NOT NULL DEFAULT '0',
`_mx` tinyint(1) NOT NULL DEFAULT '0',
`_mw` tinyint(1) NOT NULL DEFAULT '0',
`_mv` tinyint(1) NOT NULL DEFAULT '0',
`_mu` tinyint(1) NOT NULL DEFAULT '0',
`_mt` tinyint(1) NOT NULL DEFAULT '0',
`_ms` tinyint(1) NOT NULL DEFAULT '0',
`_mr` tinyint(1) NOT NULL DEFAULT '0',
`_mq` tinyint(1) NOT NULL DEFAULT '0',
`_mp` tinyint(1) NOT NULL DEFAULT '0',
`_mo` tinyint(1) NOT NULL DEFAULT '0',
`_mn` tinyint(1) NOT NULL DEFAULT '0',
`_mm` tinyint(1) NOT NULL DEFAULT '0',
`_ml` tinyint(1) NOT NULL DEFAULT '0',
`_mk` tinyint(1) NOT NULL DEFAULT '0',
`_mh` tinyint(1) NOT NULL DEFAULT '0',
`_mg` tinyint(1) NOT NULL DEFAULT '0',
`_mf` tinyint(1) NOT NULL DEFAULT '0',
`_me` tinyint(1) NOT NULL DEFAULT '0',
`_md` tinyint(1) NOT NULL DEFAULT '0',
`_mc` tinyint(1) NOT NULL DEFAULT '0',
`_ma` tinyint(1) NOT NULL DEFAULT '0',
`_ly` tinyint(1) NOT NULL DEFAULT '0',
`_lv` tinyint(1) NOT NULL DEFAULT '0',
`_lu` tinyint(1) NOT NULL DEFAULT '0',
`_lt` tinyint(1) NOT NULL DEFAULT '0',
`_ls` tinyint(1) NOT NULL DEFAULT '0',
`_lr` tinyint(1) NOT NULL DEFAULT '0',
`_lk` tinyint(1) NOT NULL DEFAULT '0',
`_li` tinyint(1) NOT NULL DEFAULT '0',
`_lc` tinyint(1) NOT NULL DEFAULT '0',
`_lb` tinyint(1) NOT NULL DEFAULT '0',
`_la` tinyint(1) NOT NULL DEFAULT '0',
`_kz` tinyint(1) NOT NULL DEFAULT '0',
`_ky` tinyint(1) NOT NULL DEFAULT '0',
`_kw` tinyint(1) NOT NULL DEFAULT '0',
`_kr` tinyint(1) NOT NULL DEFAULT '0',
`_kp` tinyint(1) NOT NULL DEFAULT '0',
`_kn` tinyint(1) NOT NULL DEFAULT '0',
`_km` tinyint(1) NOT NULL DEFAULT '0',
`_ki` tinyint(1) NOT NULL DEFAULT '0',
`_kh` tinyint(1) NOT NULL DEFAULT '0',
`_kg` tinyint(1) NOT NULL DEFAULT '0',
`_ke` tinyint(1) NOT NULL DEFAULT '0',
`_jp` tinyint(1) NOT NULL DEFAULT '0',
`_jo` tinyint(1) NOT NULL DEFAULT '0',
`_jm` tinyint(1) NOT NULL DEFAULT '0',
`_je` tinyint(1) NOT NULL DEFAULT '0',
`_is` tinyint(1) NOT NULL DEFAULT '0',
`_ir` tinyint(1) NOT NULL DEFAULT '0',
`_iq` tinyint(1) NOT NULL DEFAULT '0',
`_io` tinyint(1) NOT NULL DEFAULT '0',
`_im` tinyint(1) NOT NULL DEFAULT '0',
`_il` tinyint(1) NOT NULL DEFAULT '0',
`_id` tinyint(1) NOT NULL DEFAULT '0',
`_hu` tinyint(1) NOT NULL DEFAULT '0',
`_ht` tinyint(1) NOT NULL DEFAULT '0',
`_hr` tinyint(1) NOT NULL DEFAULT '0',
`_hn` tinyint(1) NOT NULL DEFAULT '0',
`_hm` tinyint(1) NOT NULL DEFAULT '0',
`_hk` tinyint(1) NOT NULL DEFAULT '0',
`_gy` tinyint(1) NOT NULL DEFAULT '0',
`_gw` tinyint(1) NOT NULL DEFAULT '0',
`_gu` tinyint(1) NOT NULL DEFAULT '0',
`_gt` tinyint(1) NOT NULL DEFAULT '0',
`_gs` tinyint(1) NOT NULL DEFAULT '0',
`_gr` tinyint(1) NOT NULL DEFAULT '0',
`_gq` tinyint(1) NOT NULL DEFAULT '0',
`_gp` tinyint(1) NOT NULL DEFAULT '0',
`_gn` tinyint(1) NOT NULL DEFAULT '0',
`_gm` tinyint(1) NOT NULL DEFAULT '0',
`_gl` tinyint(1) NOT NULL DEFAULT '0',
`_gi` tinyint(1) NOT NULL DEFAULT '0',
`_gh` tinyint(1) NOT NULL DEFAULT '0',
`_gg` tinyint(1) NOT NULL DEFAULT '0',
`_gf` tinyint(1) NOT NULL DEFAULT '0',
`_ge` tinyint(1) NOT NULL DEFAULT '0',
`_gd` tinyint(1) NOT NULL DEFAULT '0',
`_ga` tinyint(1) NOT NULL DEFAULT '0',
`_fo` tinyint(1) NOT NULL DEFAULT '0',
`_fm` tinyint(1) NOT NULL DEFAULT '0',
`_fk` tinyint(1) NOT NULL DEFAULT '0',
`_fj` tinyint(1) NOT NULL DEFAULT '0',
`_et` tinyint(1) NOT NULL DEFAULT '0',
`_es` tinyint(1) NOT NULL DEFAULT '0',
`_er` tinyint(1) NOT NULL DEFAULT '0',
`_eh` tinyint(1) NOT NULL DEFAULT '0',
`_eg` tinyint(1) NOT NULL DEFAULT '0',
`_ee` tinyint(1) NOT NULL DEFAULT '0',
`_ec` tinyint(1) NOT NULL DEFAULT '0',
`_dz` tinyint(1) NOT NULL DEFAULT '0',
`_do` tinyint(1) NOT NULL DEFAULT '0',
`_dm` tinyint(1) NOT NULL DEFAULT '0',
`_dk` tinyint(1) NOT NULL DEFAULT '0',
`_dj` tinyint(1) NOT NULL DEFAULT '0',
`_de` tinyint(1) NOT NULL DEFAULT '0',
`_cz` tinyint(1) NOT NULL DEFAULT '0',
`_cy` tinyint(1) NOT NULL DEFAULT '0',
`_cx` tinyint(1) NOT NULL DEFAULT '0',
`_cw` tinyint(1) NOT NULL DEFAULT '0',
`_cv` tinyint(1) NOT NULL DEFAULT '0',
`_cu` tinyint(1) NOT NULL DEFAULT '0',
`_cr` tinyint(1) NOT NULL DEFAULT '0',
`_co` tinyint(1) NOT NULL DEFAULT '0',
`_cm` tinyint(1) NOT NULL DEFAULT '0',
`_cl` tinyint(1) NOT NULL DEFAULT '0',
`_ck` tinyint(1) NOT NULL DEFAULT '0',
`_ci` tinyint(1) NOT NULL DEFAULT '0',
`_cg` tinyint(1) NOT NULL DEFAULT '0',
`_cf` tinyint(1) NOT NULL DEFAULT '0',
`_cd` tinyint(1) NOT NULL DEFAULT '0',
`_cc` tinyint(1) NOT NULL DEFAULT '0',
`_bz` tinyint(1) NOT NULL DEFAULT '0',
`_by` tinyint(1) NOT NULL DEFAULT '0',
`_bw` tinyint(1) NOT NULL DEFAULT '0',
`_bv` tinyint(1) NOT NULL DEFAULT '0',
`_bt` tinyint(1) NOT NULL DEFAULT '0',
`_bs` tinyint(1) NOT NULL DEFAULT '0',
`_bq` tinyint(1) NOT NULL DEFAULT '0',
`_bo` tinyint(1) NOT NULL DEFAULT '0',
`_bn` tinyint(1) NOT NULL DEFAULT '0',
`_bm` tinyint(1) NOT NULL DEFAULT '0',
`_bl` tinyint(1) NOT NULL DEFAULT '0',
`_bj` tinyint(1) NOT NULL DEFAULT '0',
`_bi` tinyint(1) NOT NULL DEFAULT '0',
`_bh` tinyint(1) NOT NULL DEFAULT '0',
`_bg` tinyint(1) NOT NULL DEFAULT '0',
`_bf` tinyint(1) NOT NULL DEFAULT '0',
`_be` tinyint(1) NOT NULL DEFAULT '0',
`_bd` tinyint(1) NOT NULL DEFAULT '0',
`_bb` tinyint(1) NOT NULL DEFAULT '0',
`_ba` tinyint(1) NOT NULL DEFAULT '0',
`_az` tinyint(1) NOT NULL DEFAULT '0',
`_ax` tinyint(1) NOT NULL DEFAULT '0',
`_aw` tinyint(1) NOT NULL DEFAULT '0',
`_at` tinyint(1) NOT NULL DEFAULT '0',
`_as` tinyint(1) NOT NULL DEFAULT '0',
`_ar` tinyint(1) NOT NULL DEFAULT '0',
`_aq` tinyint(1) NOT NULL DEFAULT '0',
`_ao` tinyint(1) NOT NULL DEFAULT '0',
`_am` tinyint(1) NOT NULL DEFAULT '0',
`_al` tinyint(1) NOT NULL DEFAULT '0',
`_ai` tinyint(1) NOT NULL DEFAULT '0',
`_ag` tinyint(1) NOT NULL DEFAULT '0',
`_af` tinyint(1) NOT NULL DEFAULT '0',
`_ae` tinyint(1) NOT NULL DEFAULT '0',
`_ad` tinyint(1) NOT NULL DEFAULT '0',
`creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`disabled` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=2556 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;